22:16
26/9/2013

Spokojnie, twoje hasło nie zostało wykradzione! Szymon, członek niebezpiecznikowego zespołu pentesterów, znalazł ciekawy wektor ataku na użytkowników Facebooka. Atak wykorzystuje możliwości jakie mamy podczas osadzania zewnętrznych playerów video na Facebooku.

Na czym polega atak?

Facebook pozwala na zdefiniowanie w znacznikach meta strony własnych obiektów w ramach API OpenGraph. Jednym z nich jest obiekt typu “video“, dzięki któremu możliwe jest wskazanie URL klipu do odtworzenia. Developer może również ustawić taki adres, który wskaże na aplikację odtwarzacza klipów wideo (takiego jak używa np. YouTube).

W sytuacji, kiedy ktoś chce podzielić się linkiem do strony definiującej taki “Self-Hosted Object”, Facebook osadzi plik SWF na stronie znajdującej się w subdomenie s-static.ak.facebook.com.

Sposób osadzenia obiektu przez Facebook

Sposób osadzenia obiektu przez Facebook

Teoretycznie, taki obiekt mógłby np. spowodować uruchomienie kodu JavaScript w kontekście subdomeny Facebooka (co w pewnych warunkach mogłoby umożliwić dostęp do ciasteczek użytkownika albo wysyłanie żądań XHR przy sprzyjającej konfiguracji mechanizmu CORS). Na szczęście (dla użytkowników) ustawiono atrybut AllowScriptAccess tagu embed na wartość “never“, co uniemożliwia tego typu “zabawy”.

Mimo tej restrykcyjnej polityki, dalej można jednak wykorzystać tego typu aplet do ataków socjotechnicznych na użytkownika — w ramach aplikacji Flash można bowiem używać niektórych tagów HTML-a, które umożliwiają stworzenie zawartości naśladującej oryginalne fragmenty serwisu Facebook (m.in. możliwe jest zaznaczanie tekstu i korzystanie z fomularzy, co ułatwia przeprowadzenie ataku typu phishing).

Zgłoszenie do Facebooka

Zgodnie z praktyką responsible disclosure, opis tego ataku został zgłoszony do Facebooka. Dział bezpieczeństwa Facebooka nie uważa jednak, aby problem był istotny:

Odpowiedź działu bezpieczeństwa Facebooka

Odpowiedź działu bezpieczeństwa Facebooka

Postanowiliśmy więc przeprowadzić test mający na celu zweryfikowanie, jaki procent osób dałoby się nabrać na ten trick. Pracownicy działu bezpieczeństwa Facebooka udzielili zgody na opublikowanie wektora ataku, dlatego demonstrację ataku możecie zobaczyć tutaj (zachęcamy do share’owania na swoje Walle, będzie więcej danych do analizy).

WAŻNE!
Nasz testowy aplet nie loguje żadnych haseł, zapisujemy jednak długość wprowadzonego ciągu znaków. Ponieważ minimalna długość hasła na Facebooku to 6 znaków, po zakończeniu eksperymentu będziemy w stanie odfiltrować osoby, które wpisały wpisały w fałszywą stronę logowania ciąg bardziej przypominający prawdziwe hasło niż testowe du^H^Htest :-) Wiemy, że nie jest to idealna metoda, ale pobieranie długości jest dobrym kompromisem, który chroni prywatność “ofiar” i z dużym prawdopodobieństwem pozwala odfiltrować “testy”. Dodatkowo — każdy z Was może zweryfikować aplet użyty do testów (jego MD5: 9bd76e75e2600beabf49fdfd1923329c został także doklejony do URL’a prowadzącego do strony, na której zdefiniowaliśmy obiekt video dla OpenGraph (jest widoczy w poście)).

Ręka w górę, kto dał się nabrać?

Czy wpisałeś swoje poprawne hasło w naszym "fałszywym" playerze?

Dajcie znać anonimowo w ankiecie – albo w komentarzach, chcemy zbadać czy taki phishing zadziałałby, a jeśli tak, to na jakiej grupie docelowej…

2 wersja ataku (1.X.2013)
Nauczeni doświadczeniem z pierwszą wersją ataku, nieco zmodyfikowaliśmy aplet — tym razem komunikat rzeczywiście prosi o hasło ze względu na “age restricted material”. Dodatkowo, dla lepszego efektu, aplet prosi o hasło 2 razy (zawsze po podaniu hasła po raz pierwszy pojawi się komunikat o niepowodzeniu).

Dzięki temu próbujemy odsiać tych, którzy wpiszą “testowe” hasło w stylu “blabla” — liczymy na to, że przy ponownym wyświetleniu tego komunikatu, taki nieprzekonany internauta pomyśli, że to jednak nie była “ściema”. Natomiast ci, którzy od razu wpiszą poprawne hasło, zapewne pomyślą, że zrobili literówkę i nie będą mieli problemów z podaniem hasła jeszcze raz.

Dalej nie logujemy haseł — ale teraz oprócz długości wpisanego ciągu dostajemy informację, czy była ona taka sama na pierwszym jak i na drugim ekranie pytającym o hasło. Suma MD5 nowego apletu: 7c56f4e8bd6c26b78db3ebc5eac52e1d.

Aktualizacja
Opublikowaliśmy wyniki eksperymentu.

Przeczytaj także:

9 komentarzy

Dodaj komentarz
  1. Nauczyłem się już nie klikać w takie pierdoły – a filmik HTF są dostępne w necie, więc no problem ;> A hasło testowo – blablabla :>

  2. przecież sami wiecie, że większość osób, która nie ma pojęcia co to niebezpiecznik wpisałaby hasło. wpisywali kody na usunięcie śledzika to i swoje hasło by podali bez zastanowienia co to.
    ankieta przeprowadzona tutaj będzie dawała kompletnie wypaczony wynik :)

  3. Post nie wyswietla sie na glownej redakcjo :)
    Ale na mobilnej wersji strony owszem.
    Czyzby glebokie ukrycie? :D

  4. generalnie wpisałem prawdziwe hasło :P

    coś uspiło moją czujność na wroga + nei spodziewałem sie tego ze strony niebezpiecznika + myślałem że facebook wymyślił coś mądrego ;)

  5. Hmm, mnie nie prosił dwa razy. Poza tym w wersji mobilnej w ogóle nie prosi o hasło (na androidzie i chromie)

  6. […] szczegółach błąd został opisany przez nas tutaj, a w skrócie chodzi o to, że na Facebooku, w ramach posta, można osadzić własny aplet Flasha […]

  7. hm… to tam było jakieś hasło? z tego co teraz klikam to od razu mi sie filmik wyświetla – i nie przypominam sobie by było jakieś hasło kiedyś :/
    Aż się zdziwiłem że niebezpiecznik wyświetla takie drastyczne filmy… kompletnie nie rozumiejąc powodu linkowania do htf z niebezpiecznika…
    (chrome/linux/kilka skryptów)

    Coś popsułem, czy też jednak odruchowo hasło wpisałem? :-\

    • Nie kliknąłeś w playera wewnątrz postu, a na link prowadzący bezpośrednio do filmiku.

    • Aaaa, ja zawsze wszystko z fb otwieram w nowej zakładce. Teraz działa

Twój komentarz

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

RSS dla komentarzy: