Z czasem zdarzenie staje się pewne

Prosta sytuacja – operacja wymaga jednorazowego kodu. Korzystając z PSD2 powiedzmy, że jest to operacja logowania do banku. Załóżmy, że atakujący zna hasło, a kod OTP jest generowany po prawidłowym podaniu loginu i hasła. Co może pójść nie tak?

Proste pytanie – czy konto blokuje się po (wielokrotnym) podaniu nieprawidłowego kodu OTP? Jeśli nie, drugi składnik jest bezużyteczny. Wcześniej czy później zostanie odgadnięty. To, że za każdym razem generowany jest nowy kod OTP nie pomaga. Właściwie można odwrócić sytuację – to nie my zgadujemy kod, to system zgaduje wybrane przez nas wartości. Jak? Bardzo prosto, jeśli system pozwala na trzykrotne podanie kodu przed przerwaniem procesu (koniecznością wygenerowania nowego kodu) możemy wybrać sobie trzy losowe możliwe wartości kodu OTP i je powtarzać przy każdej próbie logowania. Wcześniej lub później (to już jest kwestia statystyki) system wygeneruje kod OTP zgodny z jedną z naszych wybranych wartości. Koniec. To, że wartość zostanie “odgadnięta” jest pewne.

Oczywiście wszystko sprowadza się do tego jak wygląda kod OTP. Czas ataku zależy wprost od możliwych wartości kodu OTP. Oczywiście im więcej wymaganych prób, tym atak jest bardziej “hałaśliwy” i łatwiejszy do wykrycia. W pewnej chwili to “(…) lub później” powoduje, że cały atak staje się niepraktyczny.

Oryginał tego wpisu dostępny jest pod adresem Z czasem zdarzenie staje się pewne

Autor: Paweł Goleń