11:05
22/2/2013

Tym razem nie chodzi o zainfekowane złośliwym oprogramowaniem laptopy pracowników Facebooka, ale atak na użytkowników portalu — wystarczyło odwiedzić odpowiednio spreparowaną stronę, aby atakujący uzyskał dostęp do konta ofiary na Facebooku. Zawinił protokół OAuth.

Facebook broken

Czym jest OAuth?
OAuth w Facebooku jest używany do przydzielania uprawnień dla facebookowych aplikacji. Jeśli użytkownik wyrazi zgodę podczas instalacji aplikacji na Facebooku, aplikacja uzyskuje dostęp do konta użytkownika bazując na tokenach OAuth. Tokeny są używane po to, aby właściciele aplikacji nie poznał prawdziwego hasła do konta. Token jest jednak równoważny hasłu (pozwala na dostęp do odpowiednich części konta użytkownika).

Błąd, który Nir Goldshlager odkrył w facebookowej implementacji OAuthu umożliwił mu przejęcie pełnej kontroli nad dowolnym kontem na Facebooku — ofiara musiała tylko wejść na odpowiednio spreparowaną stronę WWW.

Jak wykraść token OAuth?

Atak polegał na znalezieniu sposobu wstrzyknięcia do OAuthowego URL-a dodatkowych parametrów i ominięciu potrzeby pokazania ofierze przycisku “Allow” akceptującego podstawione uprawnienia.

Przykładowy URL przydzielający uprawnienia wygląda tak:
https://www.facebook.com/dialog/oauth/?app_id=YOUR_APP_ID&next=YOUR_REDIRECT_URL&state=YOUR_STATE_VALUE
&scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES

Każda aplikacja na Facebooku ma inne app_id, a kolejny parametr next i redirect_uri akceptuje tylko wartości odpowiadające domenie należącej do aplikacji wskazanej przez app_id. Podanie innej domeny kończy się błędem:

Facebook OAuth

Facebook OAuth – błąd

Przekierowanie ofiary na naszą domenę pozwalałoby na kradzież tokenu (jest wysyłany metodą GET) — trzeba więc wpaść na to, jak ominąć restrykcję nałożone na redirect_uri.

Nir odkrył, że Facebook pozwalał na przekierowanie na subdomeny …facebookową. O ile xxx.facebook.com działało, to xxx.facebook.com/foo/bar.php już nie. Ale i na to Nir znalazł sposób — wprowadzenie #! do URL-a, a dokładnie %23~! lub %23%09! — te działają na każdej przeglądarce.

Ale przekierowanie ofiary na dowolną stronę Facebooka dalej nie pozwala na kradzież tokenu. Dlatego Nir napisał swoją aplikację Facebookową (touch.facebook.com/apps/testestestte), która jedyne co robiła, to przekierowywała ofiarę na inną domenę (spoza Facebooka).

https://www.facebook.com/connect/uiserver.php?app_id=2389801228&next=https%3A%2F%2Ftouch.facebook.com%2F%23~!
%2Fapps%2Ftestestestte%2F&display=page&fbconnect=1
&method=permissions.request&response_type=token

Docelowa domena logowała otrzymywane tokeny do pliku po stronie serwera. Ale żeby atak mógł dojść do skutku, użytkownik musiał jeszcze kliknąć na przycisk “Allow” na oknie z uprawnieniami aplikacji.

Obejście przycisku zgody na instalacje uprawnień

Nir wpadł na pomsł, żeby skorzystać z id aplikacji Facebookowej — Messengera. Okazało się, że ma on bardzo szerokie uprawnienia (łącznie z odczytem poczty) i użytkownik wcale nie musi akceptować tej aplikacji …oraz token dla Facebook Messengera nie jest ograniczony czasowo (zmienia się tylko po zmianie hasła).

Facebook Messenger Token OAuth

Facebook Messenger Token OAuth

Wideo z ataku poniżej:

Nir zgłosił błąd do Facebooka, a Facebook już go poprawił.

Przeczytaj także:



32 komentarzy

Dodaj komentarz
  1. Facebook płaci za odkrycie dziury?

    • http://bit.ly/X0UTiT (w zakładce “thanks” jest nawet
      wymieniony z imienia i nazwiska).

  2. Czyli nie zawinił OAuth tylko facebook zjebał ?

  3. Nie mam fejsa – powinienem sie bać ?

    • tez nie mam. enkeja tez nie mam, ale i tak sie boje ;)

    • Nie masz fejsa , ale Twoi znajomi mają i mają Twoje fotki
      na nim

    • Patrz, to jest pokój z ludźmi, których interesuje to ,że
      nie masz tam konta
      http://www.loziska.pl/galeria/powiekszenie/pusty_pokoj_do_urzadzenia.jpg

    • @trololo, no jak się wychodzi z domu i ma się znajomych to się potem ma takie problemy. Nie to co ja.

    • Bój się, na pewno ktoś je Tobie założy :D

  4. Kiedy w Polsce firmy zaczną doceniać ludzi szukających takich błedów :(

    • Jeden taki zglosil w naszym kraju pewnej firmie znaleziona luke, zaprosili na spotkanie…
      w pokoju obok czekala policja :]

  5. Ostatnio bardzo dużo luk znajdują na Facebooku, może to czas do zainteresowania się Google+ ?

    • A może o nich tyle się nie pisze :)?

    • A co to jest Google+?

    • A co to jest facebook?

    • Zainteresować się G+ w sensie znajdowania dziur?

  6. Dostał coś za to zgłoszenie :>?

    • ta… pozew sądowy. Nie zdziwiłbym się jakby Zuckie za jakiś czas nie oświadczył, że w ostatnich dniach znalazł parę błędów, ale nie martwcie się! Już je naprawił osobiście.

    • Eurogąbki :P

    • Zakaz zabaw z security Facebooka i nakaz podpisania NDA? :D

    • Jest na liście tutaj:
      https://www.facebook.com/whitehat/thanks/

    • http://www.facebook.com/whitehat/bounty/ conajmiej 500$
      :)

  7. Przesrane czytać od prawej do lewej ;]

  8. swoją drogą to ten Nir rok w rok odkrywa jakiś bug
    :)

  9. Nie rozumiem niczego co wiąże się z Facebookiem. Skąd ta
    popularność? Dlaczego akurat Zuckerburgowi się udało? Dlaczego moi
    koledzy daliby się pokroić na plasterki, żeby tam pracować? Czemu
    ci, którzy już tam są, a są wśród nich zarówno młodzi wymiatacze,
    jak i stare legendy, nie są w stanie zrobić poprawnej autentykacji?
    Dlaczego Google, które jest teraz postrzegane jako imperium zła, w
    przeciwieństwie do młodzieżowego i cool Facebooka, potrafi to
    zrobić poprawnie(brak wpadek z bezpieczeństwem od długiego
    czasu)?

    • Google? Ta firma reklamowa? ;)

  10. FB i inteligentny uzytkownik – to sie wyklucza z definicji
    (nie, nie zartuje).

  11. Moze nie do konca na temat. Ale wydaje mi sie, ze celem systemow typu RIOT(zauwazcie nazwe,) nie jest wcale szpiegowanie pojedynczego uzytkownika czy tym bardziej kogos bedacego zagrozeniem publicznym.

    To jak widac chocby tutaj, albo chocby po metodach dzialan szpiegow z poczatkow XX wieku mozna zrobic bez problemu majac kilkunastu w miare rozgarnietych ludzi. Nawet jesli delikwent nie oglada telewizji, nie slucha radia, nie ma komorki, laptopa z Internetem czy chocby notatnika…

    Taki system, co ciekawe reklamowany(teraz nawet dyktator KRL-D bedzie wiedzial, ze mozna u nich to kupic), bo ktos musial zalatwic przeciek do prasy po “cyfrowej rewolucji”(przynajmniej wg. dziennikarzy) jest idealny do lapania i przewidywania demonstracji czy zamykania naprawde duzych grup ludzi.

    Cos jak automatyczny fotoradar i druk zawiadomien tyle, ze ten ma przynajmniej w domysle bezpieczenstwo obywateli a nie zamykanie im ust. Bo tak wystarczy wyslac 1-2 osoby z kajdankami, a nie trzeba nawet sledzic danego usera(czy miec “hakira”) by sprawdzic gdzie jest potencjalny, nawet szeregowy(wczesniej nieoplacalny do zlapania) “wrog ludu”…

  12. ‘wideło’ nie bangla :-(

  13. U nas po takim zgłoszeniu do pierdla by poszedł za hakerstwo;p

  14. A oto co wujek Sam mówi Facebookowi http://ubuntuone.com/1rEzX0TCztU4YnvYJRzmhQ

  15. Gdzie zgłasza się błędy na stronie facebook’a bo zauważyłem mały problem na stronie?

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: