Do tych rozważań skłonił mnie wpis Nasza-Klasa i atak typu phishing, choć od dawna mam wątpliwości co do wpływu błędów takich jak open redirect na ryzyko. Mówiąc prościej - zastanawiam się o ile skuteczniejszy jest atak phishingowy na serwis, w którym istnieje błąd typu open redirect od ataku na serwis, w którym takiego błędu nie ma. Bo sam fakt, że jakiś błąd znajduje się (wyżej lub niżej) na liście typu 2010 CWE/SANS Top 25 Most Dangerous Programming Errors nie koniecznie przekłada się na to, jak dane wystąpienie podatności określonego typu należy wycenić. Trochę już w tym temacie pisałem we wpisie Scenariusze wykorzystania Cross-Site Scripting.
Open Redirect i phishing
Co mówi teoria
Teoria jest prosta i dobrze obrazuje ją przykład pokazany na Niebezpieczniku we wspomnianym wpisie. Użytkownik widzi URL, który zaczyna się od znanego mu fragmentu (tu: http://nasza-klasa.pl), więc mu ufa. Nie bardzo interesuje się też tym, co znajduje w dalszej jego części, zresztą "istotna" część może zostać zakodowana w taki sposób, że przeciętny użytkownik nie zobaczy w niej nic podejrzanego.
Po kliknięciu na odpowiednio spreparowany link użytkownik łączy się co prawda z "prawdziwą" stroną, jednak zostaje przekierowany pod inny adres. Podatność open redirect polega na tym, że to atakujący kontroluje gdzie jego ofiara zostanie przekierowana. W szczególności może być to podstawiona przez atakującego strona logowania, tak jak w omawianym przykładzie.
Odnośnie teorii warto również przeczytać CWE-601: URL Redirection to Untrusted Site ('Open Redirect').
Jak wygląda(?) praktyka
Phishing może przybierać wiele form. Jego skuteczność może zależeć między innymi od tego, jak dobrze dopasowany jest do ofiary. W podstawowej wersji opiera się jednak na czystej statystyce. Wiadomości rozsyłane są na ślepo ale za to w dużej ilości. Jeśli atakowana grupa jest duża, znajdzie się w niej pewna populacja, która na atak da się nabrać, nawet jeśli wiadomość wygląda topornie. Co ciekawe atakujący często nie skupiają się na przygotowaniu odpowiednio wyglądających adresów, a mimo wszystko ktoś się na taki haczyk łapie.
Wspominałem już wcześniej również o tym, że według badań, a przynajmniej ich części, certyfikaty EV nie wpływają na zmniejszenie skuteczności phishingu (Evolving understanding of Extended Validation's effect on phishing). Wątpliwości można mieć również choćby odnośnie skuteczności kodów SMS w bankowości internetowej. Nie chodzi mi tu bynajmniej o wydumane ataki (patrz: Co identyfikuje rachunek czyli ile cyfr (nie)wystarczy), ale o to, że użytkownicy nie weryfikują informacji o parametrach autoryzowanej transakcji, które dostają razem z kodem.
W świetle powyższych przykładów mam wątpliwość co do słuszności założenia, iż open redirect ułatwia phishing ponieważ użytkownicy widzą prawidłowy URL (przynajmniej na początku "ataku") i darzą otrzymany link większym zaufaniem. Co z tego, jeśli 90% z nich nie widzi różnicy, jak niegdyś gospodynie w reklamie pewnego proszku do prania. Nie twierdzę, że nie ma to żadnego wpływu na efekt ataku, podejrzewam jednak, że istnienie lub brak open redirect nie zmienia w istotny sposób ROI z ataku.
Oczywiście nie musi być to prawdą w pewnych szczególnych przypadkach, na przykład w sytuacji, gdy użytkownicy korzystający z atakowanego serwisu odznaczają się wyższą niż przeciętna świadomością w zakresie bezpieczeństwa. Jeśli jednak pod uwagę brać serwisy "masowe" (Nasza-Klasa, Facebook, Allegro ale również bankowość internetowa, poczta, itp.) populacja potencjalnych ofiar o świadomości zdecydowanie niższej niż przeciętna jest atrakcyjną i liczną grupą docelową.
Druga moja wątpliwość dotyczy już kwesti czysto technicznej. Phishing zakłada rozesłanie wiadomości e-mail, a te mogą być w formacie HTML. W takim przypadku tekst (w tym przypadku "URL") prezentowany użytkownikowi może być zupełnie inny, niż rzeczywisty adres, pod który prowadzi dany link. Maile w formacie HTML obsługiwane są przez większość programów pocztowych, że o webmailach nie wspomnę.
No to jaki wpływ ma ten open redirect?
No właśnie, jaki? W świetle połączenia dwóch przesłanek: 90% użytkowników nie widzi różnicy oraz adres, który widzi użytkownik, wcale nie musi być prawdziwy mam proste pytanie: jaką "wartość dodaną" wnosi ze sobą open redirect? Ponownie zaznaczam, że chodzi mi o przypadek ogólny, a nie atak "szyty na miarę". Jakieś sugestie?
Dla wyjaśnienia - nie sugeruję, że błędów typu open redirect nie należy poprawiać. Uważam jednak, że w większości przypadków z czystym sumieniem poprawie takich błędów można nadać niski priorytet.
Korzystając z tematu można też wspomnieć o wbudowanych w przeglądarki mechanizmach, które mogą pomóc użytkownikom zauważyć atak. Jednym z nich jest domain highlighting (patrz: Address Bar Improvements in Internet Explorer 8 Beta 1) dostępny w IE8 oraz Chrome (może i w innych przeglądarkach, dla Firefoxa na przykład dostępne jest odpowiednie rozszerzenie). Oczywiście jak każdy mechanizm zależny od użytkownika podpada pod przypadek "90% nie widzi różnicy". Inna możliwość to ostrzeganie użytkowników o przekierowaniu, a przynajmniej o niektórych jego przypadkach. Taki mechanizm też nie koniecznie musi się sprawdzić, bo... irytuje użytkowników: How to Disable Firefox 3.5/3.1 Webpage Redirection Warning Alert. I w ten sposób doszliśmy do tańczących świnek i króliczków.
I drugie: skoro po tylu miesiącach monitów nic z tym nie zrobili, to jacy „fachowcy” tam pracują? Domysły, że alerty nie trafiły do właściwy osób niczego nie tłumaczą, wręcz pogarszają sytuację. No bo w takim razie kto przegląda zgłoszenia błędów? Portier?
Powiem szczerze, że mnie ta sytuacja niespecjalnie razi/dziwi. NK nie zarabia na byciu "najbardziej bezpiecznym portalem społecznościowym". Zresztą jaki portal społecznościowy na tym zarabia?
Taki open redirect może jednak przydać się także do sytuacji, w której dla mniej ważnej akcji - serwis waliduje pole Referrer. Jeśli mnie pamięc nie myli, to jakiś czas temu na wykopie można było wykorzystać CSRFa do automatycznego wykopywania właśnie dlatego, że dzięki open redirect przeglądarka wysyłała sprawdzane pole Referrer, które zgadzało się z głównym serwisem i wykorzystując inną podatność można było dzięki temu skorzystać. Bez tego drobnego Open Directa nie byłoby to wtedy możliwe :]
Wracając do phishingu myślę, że jeśli taki błąd istnieje - to oczywiście warto go wykorzystać bo może to zwiększyć zakres ofiar.
Pytanie jeszcze co z systemami, które przykładowo analizują treści maili i wyrzucają niezaufane linki. W takiej sytuacji open redirect znów może się przydać.
Tak czy siak miliardów się dzięki temu nie nabije, co najwyżej miliony ;]