Z tego, czego się do tej pory dowiedziałem, celem tokenów jest zapobieganie sfałszowaniu przesłania formularza przez atakującego.
Na przykład, jeśli witryna internetowa miała formularz, który wprowadzał dodawane pozycje do koszyka, a osoba atakująca mogłaby spamować Twój koszyk artykułami, których nie chcesz.
Ma to sens, ponieważ może istnieć wiele prawidłowych danych wejściowych do formularza koszyka, a osoba atakująca musiałaby tylko poznać przedmiot, który sprzedaje witryna.
Rozumiem, jak działają tokeny i dodam bezpieczeństwo w tym przypadku, ponieważ zapewniają, że użytkownik faktycznie wypełnił i nacisnął przycisk „Prześlij” w formularzu dla każdej pozycji dodanej do koszyka.
Jednak czy tokeny zwiększają bezpieczeństwo formularza logowania użytkownika, który wymaga nazwy użytkownika i hasła?
Ponieważ nazwa użytkownika i hasło są bardzo unikalne, atakujący musiałby znać oba, aby fałszowanie loginu działało (nawet jeśli nie masz skonfigurowanych tokenów), a jeśli atakujący już to wiedział, mógłby po prostu zalogować się na stronie internetowej samego siebie. Nie wspominając o ataku CSRF, który zmusza użytkownika do zalogowania się, i tak nie miałby żadnego praktycznego celu.
Czy moje rozumienie ataków i tokenów CSRF jest prawidłowe? I czy są bezużyteczne dla formularzy logowania użytkowników, jak podejrzewam?
Odpowiedzi:
Tak. Ogólnie rzecz biorąc, musisz zabezpieczyć swoje formularze logowania przed atakami CSRF tak jak każdy inny.
W przeciwnym razie witryna jest narażona na rodzaj ataku polegającego na wyłudzaniu informacji o zaufanej domenie. Krótko mówiąc, strona logowania podatna na CSRF umożliwia atakującemu udostępnienie konta użytkownika ofierze.
Luka wygląda tak:
Jako dobry przykład rozważ YouTube . YouTube pozwolił użytkownikom zobaczyć zapis „własnej” historii oglądania, a ich formularz logowania był podatny na CSRF! W rezultacie osoba atakująca mogła założyć konto z hasłem, które zna, zalogować ofiarę do YouTube za pomocą tego konta - prześladując filmy, które oglądała ofiara.
W tym wątku komentarzy jest dyskusja, która sugeruje, że może on być używany „tylko” do takich naruszeń prywatności. Być może, ale cytując sekcję w artykule o CSRF Wikipedii :
Nacisk na „nowe ataki”. Wyobraź sobie wpływ ataku phishingowego na Twoich użytkowników, a następnie wyobraź sobie, że atak phishingowy działa poprzez własną zaufaną zakładkę użytkownika prowadzącą do Twojej witryny! Artykuł, do którego prowadzi wspomniany wątek komentarzy, podaje kilka przykładów wykraczających poza zwykłe ataki na prywatność.
źródło
http://good.com/login.html
w jednym kliencie, przeanalizować zagnieżdżony token CSRF, a następnie opublikować,http://bad.com/login.html
który zawiera zmodyfikowany formularz, który przesyła jego nazwę użytkownika, hasło i token, niezależnie od tego, co wpisuje ofiara. CORS nie ma zastosowania, ponieważ „ mam dwóch oddzielnych klientów: atakującego i ofiarę. A zatem, aby powtórzyć pytanie: czy ochrona CSRF naprawdę działa w przypadku formularzy logowania?Twoje rozumienie jest poprawne - celem CSRF jest to, że atakujący może z góry sfałszować wyglądające na zgodne z prawem żądanie. Nie można tego jednak zrobić za pomocą formularza logowania, chyba że napastnik zna nazwę użytkownika i hasło ofiary, w takim przypadku istnieją bardziej efektywne sposoby ataku (zaloguj się samodzielnie).
Ostatecznie jedyną rzeczą, którą może zrobić atakujący, jest niedogodność dla użytkowników poprzez spamowanie nieudanych logowań, kiedy system bezpieczeństwa może zablokować użytkownika na pewien czas.
źródło
tak , więc inne witryny nie mogą naśladować Twojego formularza logowania! Tak proste jak to.
Co mogą dzięki temu osiągnąć?
n
nr często można tego uniknąć.źródło
Wstępne logowanie do weryfikacji CSRF nie ma większego sensu IMHO.
Dzięki @squiddle za link: seclab.stanford.edu/websec/csrf/csrf.pdf , możemy przeczytać na pierwszej stronie:
Próba wstępnego logowania do walidacji CSRF daje potencjalnemu napastnikowi możliwość zeskrobania prawidłowego kodu Twojej witryny internetowej! Będzie wtedy mógł ponownie umieścić żeton, pokonując cel.
Być może osoba atakująca może następnie spróbować odgadnąć nazwę użytkownika Twojej witryny. Co zrobiłem, jeśli adres IP próbuje odgadnąć 10 nazw użytkowników bez powodzenia, po prostu umieszczam go na czarnej liście.
źródło