Kilka dni temu trafiliśmy na wiadomość o ciekawej podatności w usłudze Gmail, która miała rzekomo umożliwiać przejęcie kontroli nad dowolnym kontem w Gmailu. Im bliżej jednak się jej przyglądaliśmy, tym większe robiły się nasze oczy…
Stopień złożoności kodu i jego ciągła ewolucja powodują, że czasem nawet w poważnych, dużych serwisach znaleźć można błędy fatalne w skutkach. Gdy zatem zobaczyliśmy informacje o możliwości przejęcia dowolnego konta Gmaila nie byliśmy specjalnie zaskoczeni. Co prawda lekkie zdziwienie budziło odkrycie błędu przez nieznanego wcześniej pakistańskiego studenta, lecz historia zna podobne przypadki. Dopiero analiza owego odkrycia i sposobu, w jaki opisały je media, sprawiła, że poczuliśmy potrzebę poruszenia tego tematu.
Światowa sensacja
Nagłówki niektórych mediów nie pozostawiały wątpliwości – mamy do czynienia z bardzo poważnym błędem:
- Clever Gmail Hack Let Attackers Take Over Accounts (ThreatPost)
- Gmail Attack Could Hijack Accounts In 12 Easy Steps (Forbes)
- Google patches Gmail verification flaw that allowed attackers to take control of user accounts (International Business Times)
Sam autor odkrycia, Ahmed Mehtab, przedstawiający się w mediach jako prezes firmy Security Fuse, opisał swoje znalezisko pod nagłówkiem Gmail Account Hijacking Vulnerability. Możecie zacząć lekturę od jego wpisu, ale możemy też oszczędzić Wam jednego kliknięcia. Ahmed opisał proces „przejmowania konta” w miarę dokładnie, lecz musieliśmy przeczytać jego wpis 3 razy zanim zrozumieliśmy, co miał na myśli.
W punktach poniżej spróbujemy oddać przebieg wydarzeń, poniżej znajdziecie także film Ahmeda pokazujący jego exploit w akcji.
- Po pierwsze musimy znaleźć konto, na które nie dotrze żadna poczta. Hm. Po co przejmować konto, na które nie dociera poczta? Pomińmy ten element by skupić się na exploicie. Ahmed proponuje następujące scenariusze:
- serwer pocztowy odbiorcy jest offline (śmiały scenariusz biorąc pod uwagę fakt, że exploit dotyczy tylko kont Gmaila…)
- odbiorca wyłączył swoją skrzynkę (bardzo popularny scenariusz)
- odbiorca nie istnieje (przejmujemy nieistniejącą skrzynkę, magia)
- odbiorca nas zablokował (tu autor sugeruje ataki socjotechniczne, lecz sami nie wiemy jak zablokować czyjeś konto na Gmailu by odbijać jego wiadomości…)
- W tym miejscu moglibyśmy w sumie zakończyć analizę, lecz dla kompletności popuśćmy wodzy fantazji i załóżmy, że jeden ze scenariuszy ma faktycznie miejsce. Gdy zatem już namierzyliśmy konto spełniające dowolne z powyższych założeń, to uruchamiamy w Gmailu procedurę pozwalającą nam wysyłać emaile z adresu innej skrzynki (Wyślij jako). Wybieramy adres docelowy i klikamy „Dalej”.
- Gmail spróbuje na adres docelowy doręczyć naszą prośbę o autoryzację funkcji Wyślij jako. Skrzynka jednak nie odbiera poczty (bo np. nie istnieje) zatem email z prośbą o autoryzację i jednorazowym kodem autoryzacyjnym do nas wraca.
- Wpisujemy kod i uzyskujemy możliwość wysyłania wiadomości jako nieistniejąca skrzynka.
- Profit?
Podsumowanie
To już niestety – lub na szczęście – w zasadzie koniec tej historii. Ahmed „security researcher” Mehtab poznał własnie możliwość fałszowania adresu pocztowego nadawcy wiadomości. Niestety najwyraźniej nie przyszło mu do głowy by sprawdzić, jak zachowa się filtr antyspamowy Google (lub sprawdził, lecz jego email nie dotarł do odbiorcy i wstyd było pokazać) – na filmie demonstruje jedynie możliwość wybrania nieistniejącej skrzynki jako nadawcy, nie pokazuje już momentu wysłania ani doręczenia wiadomości. Na deser jeszcze można dodać, że Ahmed liczył na bug bounty w wysokości 20 tysięcy dolarów (authentication bypass!), lecz Google, choć błąd logiki poprawiło, odmówiło wypłaty i jedynie zamieściło jego dane na liście Hall of Fame. Na otarcie łez zostają mu artykuły w mediach.
A jeśli chcecie nauczyć się wykrywać prawdziwe błędy w webaplikacjach, to zapraszamy na nasze szkolenie z atakowania i obrony już 28go listopada w Warszawie – zostały jeszcze ostatnie miejsca. Z kodem HallOfFame 10% zniżki ;)
Komentarze
A gdyby tak skrzynka, którą 'przejmujemy’ miała wypełniony limit przestrzeni dyskowej?
Tak, wiem, i tak by to nic nie zmieniło, ale chociaż pierwszy punkt nie trącił by tak absurdem :-)
Fame jest, za kilka lat spotkamy go jako menadżera bezpieczeństwa dużej firmy przedstawianego jako weteran walki o bezpieczeństwo kosmosu.
Tymczasem możemy go nazwać przecież ewangelistą IT security, no i CEO branżowej firmy, ktoś na pewno potwierdzi jego umiejętności.
Jak zrobiła się „moda” na cyberbezpieczeństwo, to nie ma co później się dziwić takim kwiatkom jak Ahmed.
nie wiem czy to się jakoś łączy, ale jakieś 2 tygodnie temu dostałem od googla maila, że likwidują mi konto, bo od kilku lat go nie używam. Jak mogę używać jak nie pamiętam ani loginu ani hasła?
Ahmed the security researcher:
Silence!!!! I hack you!!!!!
:-D
No i nie zrozumieliście…
Jest to atak na gmaila, pozwalający wysyłać jako INNE konto. więc na waszą „analizę” należy odpowiedzieć tak:
– serwer pocztowy odbiorcy jest offline – prawdopodobne i bywa łatwe, gdyż podszywamy się pod konto INNE, niż gmail,
– konto, pod które chcemy się podszyć, jest przepełnione – BARDZO prawdopodobne w przypadku różnych porzuconych kont, w szczególności skrzynki firmowe byłych pracowników; atak pozwoli nam wysłać maila ze skrzynki we właściwej domenie,
– konto NIEISTNIEJĄCE – nadal, możemy wysyłać maile z obcej domeny (ustawiając odpowiednie reply-to mało kto się zorientuje).
Adam „security researcher” poznał własnie możliwość fałszowania adresu pocztowego nadawcy wiadomości z użyciem serwerów pocztowych gmaila. Niestety najwyraźniej nie przyszło mu do głowy, że mają one bardzo wysoką reputację i istnieje bardzo duże prawdopodobieństwo, że tak sfałszowana poczta przejdzie przez większość filtów antyspamowych.
Jeżeli Adam nadal nie rozumie, to zanim zacznie to czytać drugi i trzeci raz, namaluje mu obrazek:
1. zapycham/dosuję/whatever skrzynkę/serwer adam@z3s,
2. podpinam skrzynkę adam@z3s pod gmaila, otrzymując kod weryfikacyjny w zwrotce,
3. wysyłam maile z adresu adam@z3s.
Jeżeli Adam nie rozumie, czym różni się pkt. 3 – zrobienie tego za pomocą globalnie rozpoznawalnej „marki” (masowo whitelistowanej, bo w końcu to jest „the internet mail”), od zrobienia tego „na piechotę”, to może powinien po każdym przeczytaniu dać sobie chwikę na pomyślunek? W szczególności – znajdzie się zapewne sporo domen, które:
– w którymś momencie swojej egzystencji były zaparkowane na gmailu, lub
– ktoś z pracowników firmy używa interfejsu webowego gmaila
i w związku z tym domena POSIADA odpowiednie wpisy w SPF. Wtedy nie dość, że pocztę ze sfałszowanym adresem przyjmie prawie każdy na świecie, to przyjmie ją także i sam gmail. A jeżeli sam gmail nie zakrzyczy, że coś nie pasuje, to masz profit.
serio trzeba robić takie rzeczy żeby wysłać spoofowanego e-maila ? To fascynujące
Co znaczy „takie rzeczy”? Właśnie w tym rzecz, że tu prawie nic nie trzeba było robić. Google dało gotowe narzędzie.
A gdyby to nie było użyteczne, to w pierwszej kolejności gmail nie wymagałby weryfikacji. Taką samą weryfikację na gmailu przechodzą adresy, na które się przekazuje (filtrami) pocztę przychodzącą (bounce forwarding).
Ahmed the security researcher:
Silence!!!!! I hack you!!!
66. Ddosuje z3s.pl dla odwrócenia uwagi