Многофакторная аутентификация (MFA) значительно снижает риск несанкционированного доступа, но не все её методы одинаково защищают от фишинга. В этой статье разберёмся, почему SMS, push-уведомления и TOTP можно обойти, а FIDO2/WebAuthn-токены — нет. Простыми словами: обычные методы MFA можно "переслать" злоумышленнику, а аппаратные токены "знают", на каком именно сайте вы находитесь.
Уязвимые методы MFA
1. SMS-коды
- Злоумышленник создаёт фишинговый сайт, имитирующий оригинал (например,
GMAI1.COM
) - Пользователь вводит логин/пароль
- Сайт запрашивает SMS-код, пользователь вводит его
- Код в реальном времени передаётся злоумышленнику, который заходит на реальный сайт
Дополнительно уязвимы к:
- Подмене SIM-карт
- Перехвату SS7 (в сетях операторов)
2. Push-уведомления
- Атака типа MFA fatigue: злоумышленник рассылает множество запросов авторизации
- Пользователь по ошибке подтверждает вход, думая, что это он инициировал
3. TOTP (Time-based One-Time Password)
- Генерируемый код в приложении (Google Authenticator, Microsoft Authenticator и др.)
- Пользователь вводит код на поддельном сайте
- Злоумышленник немедленно вводит код на настоящем сайте
Трудности для хакера:
- Вводимый код можно переслать и использовать до истечения срока (обычно 30 сек)
Почему FIDO2/WebAuthn токены устойчивы к фишингу
1. Криптографическая привязка к домену
- Подпись токена зависит от точного origin (домен + схема протокола)
- Пример: токен, зарегистрированный для
https://gmail.com
, не сработает наhttps://gmai1.com
- Используется схема challenge-response с публичным ключом
- Аппаратный токен (например, YubiKey) криптографически проверяет, что вы находитесь именно на том сайте, для которого регистрировались
2. Отсутствие передачи секрета
- Приватный ключ не покидает токен
- Даже если злоумышленник перехватит подпись, она бесполезна — она уникальна для конкретного запроса и сайта
3. Физическое подтверждение
- Для активации требуется физическое действие (нажатие кнопки, прикосновение, биометрия)
Термины и стандарты
FIDO2
- Открытый стандарт для фишинг-устойчивой аутентификации
- Включает два компонента:
- WebAuthn (Web Authentication API) — стандарт W3C для браузеров
- CTAP2 (Client To Authenticator Protocol) — протокол взаимодействия между браузером/ОС и токеном (например, YubiKey)
WebAuthn
- Интерфейс в браузере для аутентификации через токен или встроенный модуль (например, Touch ID, Windows Hello)
- Привязывает криптографическую пару ключей к origin сайта
TOTP (RFC 6238)
- Time-based One-Time Password
- Одноразовые коды, зависящие от текущего времени и общего секрета
- Коды можно переслать, нет привязки к домену
Сравнительная таблица
Метод MFA | Устойчив к фишингу | Можно «переслать» | Привязан к сайту | Требует физ. действия |
---|---|---|---|---|
SMS | Нет | Да | Нет | Нет |
Push-уведомления | Нет | Да | Нет | Да |
TOTP | Нет | Да | Нет | Нет |
FIDO2/WebAuthn | Да | Нет | Да | Да |