Уязвимости OAuth и схемы атак
Изучите подмену URI перенаправления, CSRF в конечной точке авторизации и уязвимости, связанные с утечкой токенов.
«Уязвимости OAuth и схемы атак» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Открытое перенаправление в redirect_uri
Серверы авторизации OAuth должны строго проверять параметр redirect_uri. Если сервер разрешает сопоставление по префиксу или подстановочным символам (например, принимает любой URL, начинающийся с "https://app.example.com"), злоумышленник создает запрос авторизации с перенаправлением на "https://app.example.com.attacker.com/steal" или на открытое перенаправление в легитимном домене и крадет код авторизации.
CSRF в конечной точке авторизации
Без защиты от CSRF злоумышленник может инициировать поток OAuth и обманом заставить браузер жертвы завершить авторизацию. Жертва непреднамеренно авторизует клиент злоумышленника. Параметр "state" (RFC 6749) предотвращает это: клиент генерирует случайное значение state, включает его в запрос и проверяет совпадение в обратном вызове. При несовпадении поток прерывается.
Перехват кода авторизации
На мобильных платформах вредоносные приложения могут зарегистрировать ту же пользовательскую схему URI, что и легитимный клиент OAuth, и перехватить коды авторизации, перенаправленные после аутентификации пользователя. PKCE обеспечивает полную защиту: перехваченный код бесполезен без верификатора кода, который только легитимное приложение сгенерировало в начале потока.
Утечка токена через заголовок Referer
Если токен ID или токен доступа включен во фрагмент URL или параметр запроса, последующие переходы с этой страницы содержат URL в заголовке Referer, что может привести к утечке токена сторонним аналитическим скриптам или поставщикам CDN. Всегда используйте поток с кодом авторизации и передачей токена по обратному каналу, чтобы токены не появлялись в URL.
Атаки смешения в конфигурациях с несколькими поставщиками
Когда клиент поддерживает несколько поставщиков OAuth, атаки смешения заставляют его отправить код авторизации, полученный у поставщика A, на конечную точку токенов поставщика B. Клиент должен проверять утверждение "iss" в токенах ID и связывать обратный вызов с конкретным поставщиком, который инициировал поток, используя параметр state или JARM (режим защищенного JWT ответа авторизации).
SSRF через redirect_uri
Атаки с подделкой серверных запросов (SSRF) направлены на реализации OAuth, которые выполняют серверные HTTP-запросы к redirect_uri. Если сервер авторизации получает redirect_uri, чтобы проверить его, злоумышленник может указать внутренний IP-адрес (например, http://169.254.169.254/latest/meta-data/), чтобы получить доступ к метаданным облачного экземпляра или внутренним службам. Строгая проверка redirect_uri на основе списка разрешений предотвращает это.
Захват учетной записи из-за конфликта утверждений электронной почты
Многие приложения используют утверждение email из токена ID OIDC для связывания учетных записей разных поставщиков. Если злоумышленник контролирует адрес электронной почты, совпадающий с адресом учетной записи жертвы у другого поставщика, он может зарегистрироваться у другого поставщика с этим адресом и получить доступ к учетной записи жертвы. Защита: связывайте учетные записи только по паре (iss, sub), никогда не используйте для этого только адрес электронной почты.
Путаница алгоритмов JWT
Атаки с путаницей алгоритмов JWT используют уязвимые реализации, которые доверяют заголовку "alg" при выборе алгоритма проверки. Атака заключается в изменении "alg" с "RS256" на "HS256" и подписывании токена открытым ключом сервера в качестве секрета HMAC, поскольку открытый ключ доступен всем. Защита: всегда явно указывайте ожидаемый алгоритм в коде проверки и никогда не доверяйте утверждению alg из заголовка токена.
Фишинг OAuth через подделку экрана согласия
Злоумышленники регистрируют вредоносных клиентов OAuth с похожими на настоящие названиями и логотипами, а затем отправляют целям фишинговые ссылки. Жертва видит настоящий экран согласия OAuth (размещенный Google, Microsoft и другими компаниями) для вредоносного приложения и предоставляет ему доступ. Защита: проверяйте, что client_id соответствует ожидаемому приложению; Google и Microsoft предоставляют программы проверки клиентов для легитимных приложений.
Атаки с повышением области действия
Повышение области действия происходит, когда клиент получает токены с более широкими разрешениями, чем те, которые авторизовал пользователь. К повышению привилегий через OAuth могут привести недостатки реализации, из-за которых пропускается проверка области действия на конечной точке токенов, токены кэшируются с объединенными областями действия из разных запросов или не проверяется, что область действия в выпущенном токене не превышает авторизованную область действия.
Краткое изложение рекомендаций по безопасности
Защищайте реализации OAuth следующим образом: используйте проверку redirect_uri с точным совпадением, требуйте PKCE для всех публичных клиентов, проверяйте параметр state для защиты от CSRF, связывайте токены ID по паре (iss, sub), а не по электронной почте, явно указывайте ожидаемые алгоритмы JWT, запрашивайте минимально необходимые области действия, используйте токены доступа с коротким сроком действия и ротацией токенов обновления, а также проверяйте внешний вид экранов согласия на риск имитации бренда.
Проверка redirect_uri OAuth
Сервер авторизации OAuth принимает любой redirect_uri, начинающийся с "https://app.example.com". Какую атаку это позволяет провести?
Итоги урока: типовые атаки OAuth
Ключевые атаки OAuth: открытое перенаправление из-за недостаточно строгой проверки redirect_uri (используйте точное совпадение), CSRF из-за отсутствия параметра state, перехват кода на мобильных устройствах (устраняется с помощью PKCE), утечка токенов в URL, атаки смешения в конфигурациях с несколькими поставщиками (проверяйте iss), SSRF из-за получения redirect_uri сервером, конфликт утверждений электронной почты (используйте iss+sub), путаница алгоритмов JWT (фиксируйте ожидаемый alg) и фишинг через поддельные экраны согласия.
Часто задаваемые вопросы
Урок «Уязвимости OAuth и схемы атак» бесплатный?
Да — полный текст урока «Уязвимости OAuth и схемы атак» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Уязвимости OAuth и схемы атак»?
Изучите подмену URI перенаправления, CSRF в конечной точке авторизации и уязвимости, связанные с утечкой токенов. Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Уязвимости OAuth и схемы атак»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Потоки OAuth 2.0 и типы токенов
- PKCE: защита публичных клиентов
- Утверждения OpenID Connect и токены ID
- Уязвимости OAuth и схемы атак