0Pricing
Cryptology Academy · Урок

Уязвимости 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 — локальная установка не требуется.

Все уроки этого курса

  1. Потоки OAuth 2.0 и типы токенов
  2. PKCE: защита публичных клиентов
  3. Утверждения OpenID Connect и токены ID
  4. Уязвимости OAuth и схемы атак
← Назад к Cryptology Academy