Kody OTP to fundament autoryzacji, ale są też celem ataków. W tym artykule omawiamy najczęstsze zagrożenia i sposoby ochrony.
Kody OTP (One-Time Password) są fundamentem autoryzacji dwuskładnikowej (2FA) dla miliardów użytkowników na świecie. Ale wraz z rosnącą popularnością rosną też ataki. W tym artykule omawiamy najczęstsze zagrożenia i sposoby ochrony.
Czym są kody OTP?
OTP to jednorazowy kod, który:
- Jest generowany dla konkretnej sesji lub transakcji
- Jest ważny przez krótki czas (typowo 5 minut)
- Może być użyty tylko raz
- Jest przekazywany kanałem, do którego dostęp ma tylko klient (SMS, aplikacja, email)
W SMS 2FA kod jest wysyłany SMS-em na zarejestrowany numer telefonu klienta.
Najczęstsze ataki na OTP
1. SIM swap attack
Jak działa: Przestępca przekonuje operatora telekomunikacyjnego, że jest ofiarą, i przenosi jej numer do własnej karty SIM. Następnie odbiera SMS-y z kodami OTP.
Skala: W 2024 roku w Polsce odnotowano około 3 000 przypadków prób SIM swap, z czego 15% zakończyło się sukcesem atakującego.
Obrona:
- Weryfikacja behawioralna — porównanie wzorca logowania z historią
- Powiadomienie o zmianie numeru — email + SMS do klienta
- Opóźnienie krytycznych operacji — 24h po zmianie numeru
- Alternatywne kanały — aplikacja mobilna jako backup
2. Phishing SMS (smishing)
Jak działa: Przestępca wysyła SMS podszywający się pod bank i prosi o kliknięcie w link do fałszywej strony, która prosi o kod OTP.
Przykład:
Od: INFO
Twoje konto zostalo zablokowane. Zweryfikuj tozsamosci: bit.ly/xyz123
Obrona:
- Własna nazwa nadawcy (np. "TWOJABANK" zamiast "INFO")
- Informacja o transakcji w treści SMS-a
- Edukacja klientów — bank nigdy nie prosi o kod OTP przez telefon lub email
- Kody "anty-phishingowe" — bank pokazuje klientowi unikalny znak przed autoryzacją
3. Malware na telefonie
Jak działa: Złośliwa aplikacja zainstalowana na telefonie klienta czyta SMS-y i przekazuje kody OTP do przestępcy.
Obrona:
- Wykrywanie root/jailbreak w aplikacji banku
- Szyfrowanie SMS-ów (niektóre systemy operacyjne to wspierają)
- Alternatywne kanały (aplikacja mobilna z push)
- Bezpieczne enclave (Secure Element) dla krytycznych operacji
4. Atak typu man-in-the-middle
Jak działa: Przestępca przechwytuje komunikację między aplikacją klienta a bankiem. Może przechwycić kod OTP w locie.
Obrona:
- HTTPS/TLS dla wszystkich połączeń
- Certificate pinning w aplikacjach mobilnych
- Kody OTP powiązane z sesją (nie tylko z użytkownikiem)
5. Atak brute force
Jak działa: Przestępca próbuje wielu kodów OTP w krótkim czasie (np. 6-cyfrowy kod = 1 000 000 kombinacji).
Obrona:
- Limit prób (typowo 3)
- Blokada konta po przekroczeniu limitu
- Rate limiting — nie więcej niż X kodów OTP na numer na godzinę
- Dłuższe kody (8 znaków = 2 821 109 907 456 kombinacji dla alfanumerycznych)
6. Atak na bramkę SMS
Jak działa: Przestępca przejmuje konto klienta w bramce SMS lub przechwytuje komunikację między bankiem a bramką.
Obrona:
- 2FA dla panelu bramki SMS
- IP whitelist dla API
- Monitoring nietypowych wzorców (nagłe skoki wolumenu)
- Szyfrowanie komunikacji (HTTPS)
- Idempotencja — ochrona przed duplikatami
Standardy bezpieczeństwa OTP
RFC 6238 — TOTP
Time-based One-Time Password, używany w Google Authenticator. Kod zmienia się co 30 sekund, oparty na współdzielonym sekrecie.
RFC 4226 — HOTP
HMAC-based One-Time Password, używany w tokenach sprzętowych. Kod zmienia się po każdym użyciu.
NIST SP 800-63B
Wytyczne NIST dla uwierzytelniania. Zalecenia:
- Kody minimum 6 cyfr
- Ważność maksymalnie 10 minut
- Limit prób 10 (NIST) lub 3 (PSD2)
- Kody jednorazowe (nie mogą być użyte ponownie)
- Kody powiązane z sesją
PSD2 SCA — wymagania dla OTP
- Dynamiczne powiązanie (kod powiązany z transakcją)
- Poufność (kod nie może być widoczny dla osób trzecich)
- Ochrona przed phishingiem
- Audytowalność
Dobre praktyki dla banków i fintechów
1. Wielokanałowość
Nie polegaj tylko na SMS. Oferuj klientom:
- Aplikacja mobilna (push notification + biometria)
- SMS (backup)
- Token sprzętowy (dla premium)
- Email (dla niskiego ryzyka)
2. Analiza ryzyka transakcji (TRA)
Oceniaj ryzyko każdej transakcji na podstawie:
- Kwota transakcji
- Odbiorca (znany / nieznany)
- Lokalizacja i urządzenie klienta
- Historia klienta
Dla niskiego ryzyka — można pominąć SCA (wyłączenie PSD2).
3. Monitoring w czasie rzeczywistym
Wykrywaj anomalie:
- Wiele logowań z różnych IP w krótkim czasie
- Logowania z podejrzanych lokalizacji
- Nietypowe wzorce transakcji
- Próby brute force
4. Szyfrowanie i bezpieczne przechowywanie
- Kody OTP przechowywane jako hash (nie plaintext)
- Szyfrowanie bazy danych (encryption at rest)
- Bezpieczne zarządzanie kluczami (KMS/HSM)
- Audyt dostępu do danych
Podsumowanie
Bezpieczeństwo kodów OTP wymaga wielowarstwowego podejścia:
- Właściwa konfiguracja OTP (długość, TTL, limit prób)
- Ochrona przed phishingiem (własna nazwa nadawcy, dynamiczne powiązanie)
- Ochrona przed SIM swap (weryfikacja behawioralna, opóźnienia)
- Monitoring i alerty w czasie rzeczywistym
- Wielokanałowość (SMS + aplikacja mobilna)
- Zgodność ze standardami (RFC, NIST, PSD2)
W SMSIK oferujemy bezpieczną infrastrukturę SMS z idempotencją, rate limitingiem, monitoringiem i pełną zgodnością z PSD2 i RODO. Skontaktuj się z nami, aby omówić bezpieczeństwo Twojej aplikacji.