3/5/2015
Password Alert, to rozszerzenie jakie kilka dni temu opublikowało Google. Jego zadaniem jest wykryć fakt wprowadzania przez użytkownika swojego hasła do konta Google na innej (w domyśle fałszywej) stronie. Rozszerzenie w zamyśle ma więc być ochroną przed atakami phishingowymi. Problem w tym, że rozszerzenie można oszukać i dwukrotnie dokonał tego jeden z programistów.
Zabezpieczenie, które łatwo można ominąć
Pierwsze z obejść Paula Moore’a, znalezione w 2 minuty, działa jak pop-up blocker. Wyszukuje treść ostrzeżenia wyświetlanego przez rozszerzenie po wykryciu fałszywej strony i …usuwa je sprzed oczu ofiary. Błąd jaki popełniło Google, to umieszczenie ostrzeżenia w tym samym originie co skrypty atakującego.
<!-- BYPASS GOOGLE'S PASSWORD ALERT "PROTECTION" -->
<script type="text/javascript">
setInterval(function() {
if(document.getElementById("warning_banner")) {
document.getElementById("warning_banner").remove();
}
}, 5);
</script>
Google szybko usunęło ten błąd w aktualizacji i wtedy Moore znalazł drugie obejście, które polega na odświeżaniu strony po wprowadzeniu przez użytkownika każdego znaku hasła. To powoduje, że rozszerzenie nigdy nie widzi całości hasła użytkownika, a więc nigdy nie ostrzeże użytkownika przed wyciekiem hasła, bo zawsze będzie myślało, że wprowadzane hasło jest inne od prawdziwego hasła do konta Google.
Żeby było śmieszniej, w zanadrzu jest już trzeci sposób na oszukanie rozszerzenia Password Alert…
No niby fajnie, ale przecież ten drugi sposób to liczenie na szczęście. Raczej nikt nie nie odświeża strony w czasie wpisywania hasła -.-
nie musi tego robić samodzielnie :p
Odświeżenie odbywa się z poziomu skryptu który jest zamieszczony na stronie. Nikt normalny nie klika “odśwież: podczas wpisywania hasła.
chyba, że jego hasło to F5 :D
tylko że to nie ofiara ma odświeżać stronę, tylko skrypt na fałszywej stronie ma to robić. Pewnie nawet wystarczy odświeżanie samej ramki z polem hasła, więc user nawet nie zauważy.
Przecież przeładowanie można wymusić skryptem.
Zapisujesz do cookie aktualną literę, robisz reload, bierzesz następną itd. Na dobrym łączu i minimalistycznym panelu logowania, takie przeładowania mogą zostać przez niektorych przeoczone.
Kto dziś ciastka stosuje? Łatwiej localstorage użyć.
Przecież strona może sama zadecydować o swoim odświeżeniu. Nie potrzebna jest wcale akcja użytkownika.
Trochę do dupy ten plugin.
Po pierwsze, myślę że będzie wiele sposobów na obejście go (np. div udający pole input, wiele niewidocznych pól między którymi przełącza się focus itd.).
Ale przede wszystkim to narzędzie może umożliwić ataki słownikowe/brute – normalnie po kilku nieudanych próbach trzeba przepisać captcha, a tutaj wystarczy poczekać na pokazanie się alertu
W większości znanych mi przeglądarek użytkownik jest proszony o zezwolenie danej stronie na skorzystanie z lokalnego magazynu. To może wzbudzić jego czujność. Ciasteczka nie mają takiego problemu.
To było do komentarza “q” powyżej.