Krytyczna wada na serwerze Facebooka usunięta
7 września 2018
Krytyczna luka, umożliwiająca zdalne wykonanie kodu na serwerze Facebooka, została niedawno załatana po tym, jak analityk bezpieczeństwa Daniel „Blaklis” Le Gall zgłosił ją, przedstawiając proof-of-concept (PoC).
Luka została wykryta w niestabilnej usłudze Sentry (aplikacja wieloplatformowa, która może gromadzić logi i debugować aplikacje napisane w języku Python), która napisana jest w Pythonie z wykorzystaniem biblioteki Django. Sporadyczne awarie aplikacji ujawniły, że w Django nie został wyłączony tryb debugowania, w następstwie czego ślad stosu zwracał informacje o nazwach plików cookie sesji, opcjach i używanym serializatorze (Pickle).
Mimo że klucz tajny, używany przez Django do podpisywania plików cookie sesji, nie był dostępny w śladzie stosu, analitykowi udało się znaleźć listę opcji, która ujawniła nieskasowany systemowy tajny klucz.
„Jednakże lista SENTRY_OPTIONS zawiera klucz o nazwie system.secret-key, który nie jest kasowany” – napisał Le Gall. „Cytując dokumentację Sentry, system.secret-key jest kluczem tajnym używanym do podpisywania sesji. Jeśli zostanie on zagrożony, ważne jest, aby został odnowiony, ponieważ w przeciwnym razie można znacznie łatwiej przejąć sesje użytkownika; O, wygląda na to, że jest to coś w rodzaju nadpisywania KLUCZA TAJNEGO Django!”.
Zatem analityk był w stanie sfałszować własne ciasteczka i zastąpić nimi ciasteczka Sentry, w zasadzie uruchamiając dowolny kod na serwerze. Aby wykazać poprawność koncepcji, wprowadzone zostało 30-sekundowe opóźnienie ładowania strony.
„Ten kod jest prostym dowodem koncepcji: pobiera treść istniejącego pliku cookie usługi Sentry i zastępuje jego zawartość dowolnym obiektem, który uruchomi polecenie os.system („sleep 30”), gdy będzie niezserializowany” – napisał Le Gall. „Gdy użyje się tego pliku cookie, rzeczywiście potrzeba dodatkowych 30 sekund do wczytania strony, co potwierdza obecność wady”.
„Nie ma systemów w 100% bezpiecznych, możemy jedynie minimalizować prawdopodobieństwo potencjalnych włamań. Zaleca się stosowanie kompleksowych rozwiązań do ochrony przed zagrożeniami, na które składają się: ochrona antywirusowa, ochrona poczty, moduły szyfrowania dysków, zarządzanie aktualizacjami, ochrona przed ransomware i inne” – komentuje Mariusz Politowicz, inżynier techniczny Bitdefender z firmy Marken.
Serwer został wyłączony do czasu wdrożenia poprawki, a analityk bezpieczeństwa zdobył nagrodę w wysokości 5 tys. dolarów.