Firma Meta zajęła się krytyczną luką w zabezpieczeniach Facebooka, która mogła pozwolić atakującym na przejęcie kontroli nad dowolnym kontem. Odkrywca podatności został nagrodzony, a sama podatność załatana.
Nepalski badacz Samip Aryal opisał tę lukę jako problem ograniczający szybkość działania w określonym punkcie końcowym procesu resetowania hasła do serwisu. Osoba atakująca mogła wykorzystać podatność do przejęcia dowolnego konta na Facebooku poprzez brutalne wymuszenie określonego typu notyfikacji.
Meta nagrodziła badacza za zgłoszenie problemu w ramach programu nagród za błędy znalezione na Facebooku. Aktualnie widnieje on na pierwszym miejscu oficjalnej publicznej listy „Hall of Fame”:
Badacz odkrył, że problem wpływa na procedurę resetowania hasła na Facebooku, gdy użytkownik wybierze opcję „Wyślij kod poprzez powiadomienie z Facebooka”.
Analizując podatny na ataki punkt końcowy, wykryto, że trzy warunki otwierają drzwi do ataku brute force:
- kod z powiadomienia wysłany do użytkownika jest aktywny dłużej niż się spodziewano (≈ 2 godziny),
- za każdym razem w sprawdzanym okresie wysyłany był ten sam kod jednorazowy,
- nie zaobserwowano żadnego unieważnienia kodu po wprowadzeniu prawidłowego kodu, a dopiero po wielu poprzednich nieudanych próbach (w przeciwieństwie do funkcji resetowania SMS-em).
W technicznym skrócie błąd wyglądał następująco:
1. Wybrana została opcja „Wyślij kod poprzez powiadomienie na Facebooku”, co powoduje wysłanie żądania POST do endpointa:
POST /ajax/recover/initiate/ HTTP/1.1
Z parametrem: recover_method=send_push_to_session_login
2. Następnie badacz wysłał 6 cyfrowy kod „000000”, w celu przeanalizowania odpowiedzi:
POST /recover/code/rm=send_push_to_session_login&spc=0&fl=default_recover&wsr=0 HTTP/1.1
3. Brute force na taki kod stało się zadaniem trywialnym i wystarczyło umiejętnie go poprowadzić przygotowanym skryptem.
„W punkcie końcowym nie było ograniczeń szybkości, dlatego po udanym ataku B-F na pasujący kod otrzymano odpowiedź z kodem stanu 302, czyli ‘użyj tego kodu, aby zalogować się/zresetować hasło do konta FB dla konta użytkownika’” – czytamy w analizie opublikowanej przez Aryal.
Cały POC tego exploita można zaprezentować na prostej animacji, co też twórca uczynił:
Badacz zauważył, że w przypadku wykorzystania tej luki Facebook powiadamia docelowego użytkownika. Powiadomienie albo wyświetlało bezpośrednio sześciocyfrowy kod, albo prosiło o dotknięcie powiadomienia w celu odsłonięcia kodu.
Odkrywca zgłosił błąd 30 stycznia 2024 r., a Meta zajęła się nim 2 lutego 2024 r. Jak się okazało, luka miała ogromny impakt. Meta uznała ją za exploit polegający na przejęciu konta bez kliknięcia. Aryal zajmuje obecnie pierwsze miejsce w galerii sław Facebooka 2024.
Oficjalna odpowiedź od firmy Meta do łowcy exploitów: