20:37
15/3/2010

2 lata temu Michał “lcamtuf” Zalewski zaprezentował ciekawy atak, który pozwalał złośliwej stronie internetowej na kradzież plików wprost z komputera internauty i co ważne — bez jego wiedzy. Teraz, atak został zmodyfikowany i swoim działaniem objął wszystkie przeglądarki internetowe bazujące na WebKit (Safari, Chrome) oraz Firefoksa.

Na czym polega StrokeJacking?

Pierwotna wersja ataku dotyczyła stron zawierających formularz służący do przesyłania plików do serwera (np. dodanie zdjęć do galerii) — <input type=”file” />. Zmieniając wybiórczo focus pomiędzy zdarzeniami onKeyDown i onKeyPress można było niepostrzeżenie przekierować niektóre z wprowadzanych przez użytkownika znaków do ukrytego na stronie “złośliwego” formularza.

fot. laffy4k

W skrócie, wyglądało to tak:

złośliwy skrypt podkrada od użytkownika piszącego komentarz na stronie wybrane litery i umieszcza je w odpowiedniej kolejności w ukrytym formularzu. Wykradane litery składają się w ciąg / e t c / p a s s w d i po chwili atakujący ma już plik o tej nazwie pochodzący z komputera ofiary.

Strokejacking Exploit (Proof of Concept)

2 lata temu Michał zademonstrował 2 exploity dotyczące <input type=”file” />:

Te błędy zostały załatane, ale na fali popularności clickjackingu, lcamtuf przedstawił kilka dni temu nową wersję ataku, tym razem na wszystkie bazujące na WebKicie przeglądarki. Celem nie jest już formularz wysyłania danych, ale iframe:

Rozwiązując CAPTCHA, niektóre z wprowadzanych przez użytkownika znaków są przesyłane do ukrytej na stronie ramki (iframe). W powyższym exploicie ramka celowo nie została całkowicie ukryta. Exploit zadziała w przypadku przeglądarek Mozilla Firefox, Apple Safari i Google Chrome tylko na Windows.

Strokejacking vs Clickjacking

Strokejacking w przeciwieństwie do clickjackingu pozwala czynić odrobinę większe “zuo” — nie mówimy tu tylko o wykonywaniu akcji które wymagają jedynie jednego kliknięcia, ale o możliwości wykonania bardziej skomplikowanych czynności, wymagających uzupełnienia danych (np. podania e-maila, na który przesłane zostaną “wykradane” dane).

W rozmowie z Niebezpiecznikiem Michał Zalewski wspomniał, że scenariusz ataku może być jeszcze bardziej dotkliwy, ale szczegóły zdradzi dopiero po załataniu luk przez producentów przeglądarek.

fot. Laineys Repertoire

Warto wspomnieć, że strokejacking nie jest trudny do przeprowadzenia, zwłaszcza w dobie Web 2.0, kiedy to od internautów wręcz wymaga się klepania w klawiature na każdym kroku: pisanie komentarzy, przepisywanie captchy, granie w gry przez przeglądarkę, czatowanie… Dodatkowo, popularne tu i tam luki XSS moga posłużyć do osadzenia złośliwych strokejackingowych skryptów w znanych (zaufanych) serwisach społecznościowych.

Jak się bronić?

Do czasu wypuszczenia poprawek zalecamy jak najwięcej korzystać z myszy i nie korzystać z javascriptu, tam gdzie nie jest to konieczne. Użytkownicy przeglądarki Firefox mogą skorzystać z NoScripta.

P.S. Przy okazji tego ataku warto wspomnieć o stronie Firefox Myths oraz polecić napisany przez lcamtufa Browser Security Handbook.

Przeczytaj także:

20 komentarzy

Dodaj komentarz
  1. Nie sądziłem, że kiedykolwiek to powiem..
    Używajcie Internet Explorera – będziecie bezpieczni :D

  2. Od kiedy Firefox bazuje na WebKit?

    • Od nigdy, wyłączyłem Firefoksa z nawiasu, dzięki za czujność. Tak czy inaczej, bug go dotyczy, mimo, że nie jest na Webkicie :-P

  3. Firefox na Mac – nie działa.

  4. @Piotr Zaprezentowany przez Michała exploit działa tylko na Windows.

  5. @PK ee tam… Za mało zaznaczone to było…
    Ale, źe nie działa tylko przykład czy atak nie działa w ogóle?

  6. http://lcamtuf.coredump.cx/focus-webkit/ ten działa na Firefoksie na Macu mimo dopisku “tylko Windows”. Wpisuje opportunity, a w Googlach wyszukuje mi porn.

  7. W Chrome na Linuksie działa ;)

  8. Jakieś propozycje przeglądarek, z których można korzystać w miarę bezpiecznie? ;]

  9. Nie ma to jak NoScript :)
    Sprawdziłem na Macu podany przez tymeja link. Z wyłączonym JS’em w ogóle nie zadziałał. Z włączonym dla coredump.cx po wpisaniu kilku pierwszych znaków wyskoczyło okienko NoScripta z ostrzeżeniem “Potential clickjacking”.

    • @socrtp: z wyłączoną przeglądarką też nie działa… :>

  10. no przecież wiadomo, że jedyne 100% zabezpieczenie to niewłączanie komputera ;)

  11. Hmm u mnie przechwycił pierwszy znak, następne trafiały do pola tekstowego powielając te wpisane. Niestabilne rozwiązanie.

  12. Przy wpisywaniu tekstu, część liter trafiała do pola “Wyszukaj” (mam włączone wyszukiwanie tekstu od razu przy wpisywaniu go z klawiatury).
    Widać, że coś jest nie tak, ale co dokładnie, to do tej pory nie wiem :D
    PS. NS wyłączony ;)

  13. update:
    – zadziałało jednak ;]
    – przy szybkim wpisywaniu tekstu, w pole wyszukiwarki wpada więcej liter, niż ‘porn’

  14. Chrome beta 4.0.249.89 (38071) – dubluje znaki w czasie wpisywania, do iframe’a przeniosło raz “rn” a raz “or”.
    Firefox 3.6 – exploit działa poprawnie.

  15. Na Operze “przechwycone” litery są wpisywane w pole tekstowe i tak po wpisaniu op “p” które miało wpisane do wyszukiwarki ląduje w polu tekstowym.

  16. Opera pod Linuxem całkowicie olała temat.
    Natomiast Chrome już pięknie wpisał w google’owego textboxa słowo ‘porn’ : )

  17. […] chyba nie trzeba nikomu przedstawiać. Michał został nominowany za atak strokejacking oraz narzędzia skanera luk w webaplikacjach o nazwie […]

  18. A czemu mi to pod ŻADNĄ przeglądarką nie wypisuje w boxa Google porn? wpisuję całą frazę `opportunity`, klikam enter i… nic…

Twój komentarz

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