20.11.2017 | 20:21

Przemysław Sierociński

Poniedziałek z trenerem – dwa proste błędy w kodzie Facebooka

Nawet firmom bardzo dbającym o kwestie bezpieczeństwa nie jest łatwo ustrzec się błędów w aplikacjach, szczególnie, jeśli aplikacje te są dość rozbudowane. Warto zatem takich błędów szukać – bo można na tym sporo zarobić.

Poniżej znajdziecie opis dwóch dość trywialnych błędów odkrytych niedawno w kodzie autorstwa Facebooka. Oba zostały zgłoszone do programu Bug Bounty, a ich naturę przeanalizował i na prosty język przełożył nasz trener Przemek Sierociński. Jeśli artykuł się Wam spodoba, to obiecujemy namówić Przemka na więcej podobnych wpisów.

Wysyłanie GIFów jako inny użytkownik

Ciekawy błąd dotknął Facebooka – badacz odkrył sposób na wysyłanie obrazków GIF jako inny użytkownik. Jest to przykład niewłaściwej kontroli dostępu. Błąd był trywialny – wystarczyło podmienić identyfikator użytkownika w odpowiednim żądaniu.

Wszystko zaczęło się od narzędzi do publikowania i opcji dodawania ankiet. Funkcja przykuła uwagę badacza bo była wtedy nowością. Podejrzewał on wyciek informacji (to, że głosy w ankiecie są jawne nie było oczywiste), jednak FB określił zachowanie jako celowe. Philippe zanotował informacje o podstronie pozwalającej tworzyć ankiety na przyszłość.

Jakiś czas później, podczas przeglądania jednej z grup zauważył, że funkcja ankiet pojawia się w okienku dodawania posta. Coś jednak nie działało i formularz nie wyświetlał się poprawnie. Wtedy Philippe wrócił do podstrony odkrytej wcześniej. Okazało się, że funkcja wciąż działa, a żądanie utworzenia ankiety wygląda tak (dane sesji użytkownika usunięte):

POST
'https://www.facebook.com/visual_poll/ajax/create/?pageid=PAGE_ID&title=1&option1_title=1&option1_url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F3o7aD7KLo6jJF4VBhS%2Fgiphy.gif&option2_title=2&option2_url=https%3A%2F%2Fmedia.giphy.com%2Fmedia%2F3o7WTFBRiRQGh5c7vi%2Fgiphy.gif&dpr=1'
--data '__user=&__a=1&__dyn=&fb_dtsg='

W tym momencie badacz zdał sobie sprawę, że w adresie URL jest coś interesującego. Zaobserwował parametr o nazwie pageid (w odróżnieniu od page_id), który pojawiał się wcześniej w podatnych funkcjach. Podmiana oryginalnej wartości tego parametru na identyfikator użytkownika powodowała dodanie ankiety do ściany właśnie tego użytkownika. Co więcej, jako autor wpisu figurował również ów użytkownik.

Podatność spowodował brak prostej weryfikacji uprawnień. Błąd został zgłoszony Facebookowi niecały miesiąc temu, a po naprawie Philippe otrzymał nagrodę za zgłoszenie (10000$).

Źródło: https://philippeharewood.com/posting-gifs-as-anyone-on-facebook/

Przejmowanie kont na Instagramie przy pomocy Facebooka

Jeszcze do niedawna możliwe było przejęcie konta wybranego użytkownika Instagrama. Wystarczyło by ofiara kliknęła w linka dostarczonego przez napastnika. Błąd związany był z dodawaniem konta Instagramowaego do Facebooka, a atak można było przeprowadzić w taki sposób:

1. Atakujący loguje się na swoje konto na FB.
2. Rozpoczyna proces dodawania konta na Instagramie.
3. Zapisuje link do Instagrama, pod który jest przekierowany (można go podejrzeć na przykład przy pomocy narzędzi deweloperskich przeglądarki). Ma on taką postać:

https://www.instagram.com/accounts/singup/#access_token=[unikatowa_wartość]&expires_in=4267&granted_scopes=email%2Cpublic_profile&denied_scopes=

4. Wysyła zapisany link do wybranej osoby.

Jeśli ofiara jest aktualnie zalogowana na Instagramie i kliknie w link jej konto zostaje połączone z kontem atakującego na FB. Wystarczy, że atakujący wejdzie na Instagrama i kliknie „Zaloguj jako [login_ofiary]”.

Był to przykład ataku typu Cross-Site Request Forgery. Przed tą podatnością można było się ustrzec wymagając potwierdzenia akcji przez użytkownika. Komunikat z pytaniem „Czy chcesz połączyć swoje konto z kontem X?” wraz z koniecznością podania hasła powinny ograniczyć możliwość przypadkowego oddania dostępu do konta.

Źródło: https://stefanovettorazzi.com/taking_over_instagram_accounts/

Jeśli chcecie nauczyć się znajdować takie błędy lub przed nimi chronić, zapraszamy na nasze szkolenie.

Szkolenie z bezpieczeństwa aplikacji WWW – także we Wrocławiu

Bezpieczeństwo aplikacji WWW - atak i obrona

Warsaw-center-free-license-CC0
Warszawa, 27 – 29 listopada 2017

Wroclaw
Wrocław, 10 – 12 stycznia 2017

Czas trwania: 3 dni (20h), Prowadzący: Adam z z3s, Przemysław Sierociński
Liczba uczestników: maksymalnie 12 osób, cena: 3900 PLN netto

Powrót

Komentarz

  • 2018.02.14 08:05 Dolar

    Znak dolara (posobnie jak euro) powinien być zapisany przed kwotą. Bez tego trudno jest odczytać jaka tam jest liczba. Np. $ 10000. Jaką kwotę dali prze drugiej z omawianych stron (błąd typu XSRF)?

    To pokazuje jak przemyślane są aplikacje i jak bezpieczna jest cyfrowa „rzeczywistość”. Ciekawe kiedy ePUAPka stanie się obowiązkiem i podobnie wcisną wszystkich w dziurawy system. Bo to ludziom nie przeszkadza i nic nie mają do ukrycia.

    Odpowiedz

Zostaw odpowiedź do Dolar

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Poniedziałek z trenerem – dwa proste błędy w kodzie Facebooka

Komentarze