Cyber Security Academy · Урок

Атаки на токены и усиление защиты

Защита потоков аутентификации от злоупотреблений

Урок 4 из 413 шагов

«Атаки на токены и усиление защиты» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.

Токены как учётные данные

В современных системах аутентификации токены являются учётными данными. Любой, у кого есть действительный токен предъявителя, считается аутентифицированной стороной, пока токен не истечёт или не будет отозван.

  • Поэтому кража токена равнозначна краже учётных данных.
  • Усиление защиты сосредоточено на ограничении срока действия токена, привязке токенов к владельцу и возможности быстро отзывать их.

В этом уроке рассматриваются атаки на токены OAuth/OIDC/SAML и защитные меры, которые им противодействуют.

Путаница алгоритмов JWT

Классическая атака на JWT использует заголовок alg.

  • Если принимается alg: none, злоумышленник может подделывать токены без подписи.
  • При путанице RS256 и HS256 злоумышленник повторно подписывает токен, используя открытый ключ RSA как секрет HMAC.

Защита: закрепите ожидаемый алгоритм на стороне сервера и никогда не позволяйте токену определять используемый путь проверки.

Vulnerable: verify(token, key)  // alg taken from header
Hardened:   verify(token, key, { algorithms: ["RS256"] })
// reject alg:none, reject HS* when RS* expected

Кража токенов через XSS и журналы

Наиболее распространённый способ компрометации токена — простая кража действительного токена.

  • XSS считывает токены из localStorage или памяти.
  • Токены в URL раскрываются через историю браузера, заголовки источника и журналы серверов.
  • Подробное ведение журналов заголовков Authorization.

Для сеансов браузера предпочтительны cookies с атрибутами httpOnly, Secure и SameSite; удаляйте токены из журналов и URL.

Set-Cookie: session=...; HttpOnly; Secure; SameSite=Lax
// keeps JS (and thus XSS) from reading the token

Атаки повторного воспроизведения

Атака повторного воспроизведения повторно использует перехваченный действительный токен, чтобы действовать от имени жертвы.

  • Мерами защиты служат короткие сроки действия, одноразовый nonce (OIDC) и отслеживание идентификаторов утверждений (SAML).
  • TLS предотвращает пассивный перехват в сети.
  • Токены с ограничением отправителя предотвращают повторное использование даже после кражи.
Replay defenses:
  short exp + nonce/jti uniqueness
  TLS everywhere
  sender-constrained tokens (mTLS / DPoP)

Токены с ограничением отправителя

Токены предъявителя может использовать любой, кто ими владеет. Токены с ограничением отправителя привязываются к ключу конкретного клиента.

  • Токены, привязанные к mTLS (RFC 8705), связываются с сертификатом TLS клиента.
  • DPoP (RFC 9449) связывает токен с ключом подтверждения владения, которым клиент подписывает каждый запрос.

Таким образом, украденный токен бесполезен без соответствующего закрытого ключа.

DPoP: each request carries a signed proof JWT
  DPoP: <proof-jwt signed with client private key>
  Authorization: DPoP <access_token>

Короткие сроки действия и ротация токенов обновления

Ограничивайте период, в течение которого украденный токен может быть полезен.

  • Делайте токены доступа краткоживущими — на несколько минут.
  • Используйте ротацию токенов обновления: при каждом обновлении выдавайте новый токен обновления и делайте старый недействительным.
  • Рассматривайте обнаруженное повторное использование ротированного токена обновления как признак кражи и отзывайте всю цепочку.
On /token refresh:
  issue new RT, invalidate old RT
  if old RT presented again -> breach -> revoke family

Отзыв токенов и интроспекция

Самодостаточные JWT действительны до истечения срока действия, что усложняет отзыв. Предусмотрите механизмы для быстрого прекращения доступа.

  • Конечная точка отзыва (RFC 7009) делает токены обновления и доступа недействительными.
  • Интроспекция (RFC 7662) позволяет серверу ресурсов проверять состояние токена в реальном времени.
  • Ведите список запрещённых токенов по значению jti для критически важных отзывов.
POST /introspect  token=...
  -> { "active": true, "sub": "...", "scope": "read" }
POST /revoke      token=...

Проверка аудитории и области действия

Действительный токен не получает автоматически права доступа к вашему API. Проверяйте его назначение.

  • Проверяйте aud, чтобы токен, выпущенный для другого сервиса, нельзя было повторно использовать для доступа к вашему.
  • Проверяйте область действия для каждой конечной точки; не считайте, что действительный токен автоматически даёт полный доступ.
  • Проверяйте iss, чтобы блокировать токены от ненадёжных издателей.

Это предотвращает повторное использование токенов между сервисами и злоупотребление атакой «замешательство заместителя».

Атаки подмены и атаки между поставщиками

Когда клиент поддерживает несколько поставщиков удостоверений, атаки подмены могут заставить его отправить код или токен, выданный одним поставщиком удостоверений, на другую конечную точку, выбранную злоумышленником.

  • Клиент теряет понимание того, от какого AS пришёл ответ.
  • Защита: связывайте ответы с издателем с помощью параметра iss (RFC 9207) и проверяйте state отдельно для каждого поставщика.
/authorize ... &state=<provider-bound>
callback must include &iss=<expected-AS>
client verifies iss matches the AS it started with

Безопасное хранение и передача

От того, где и как хранятся токены, зависит степень их уязвимости.

  • Сеансы браузера: cookies с атрибутами httpOnly, Secure и SameSite; избегайте localStorage.
  • Мобильные устройства: связка ключей или хранилище ключей OS, никогда не используйте файлы с незашифрованным содержимым.
  • Серверы: менеджер секретов, шифрование при хранении, минимальные необходимые привилегии.
  • Всегда используйте TLS при передаче; никогда не встраивайте токены в строки запроса.

Контрольный список усиления защиты токенов

Объедините защитные меры в базовый рабочий стандарт.

  • Закрепляйте алгоритмы; отклоняйте alg: none и атаки на основе путаницы алгоритмов.
  • Проверяйте iss, aud, exp, подпись, nonce/state.
  • Используйте короткий TTL токена доступа и ротацию токенов обновления с обнаружением повторного использования.
  • Для API с высокой ценностью предпочтительны токены с ограничением отправителя (DPoP/mTLS).
  • Поддерживайте отзыв и интроспекцию.
  • Храните токены безопасно; не допускайте их появления в URL и журналах.
Hardening baseline:
  [ ] alg pinned, none rejected
  [ ] iss/aud/exp/sig/nonce validated
  [ ] short TTL + RT rotation + reuse detection
  [ ] DPoP/mTLS for sensitive scopes
  [ ] revoke + introspect available

Быстрая проверка: нейтрализация украденных токенов

Выберите защитную меру, которая лучше всего ограничивает ущерб непосредственно от кражи токена.

Итоги: атаки на токены и усиление защиты

Основные выводы:

  • Токены являются учётными данными; их кража равнозначна захвату учётной записи.
  • Защищайте JWT, закрепляя алгоритмы и проверяя iss, aud, exp, подпись, nonce.
  • Ограничивайте уязвимость с помощью коротких сроков действия и ротации токенов обновления с обнаружением повторного использования.
  • Токены с ограничением отправителя (DPoP/mTLS) нейтрализуют украденные токены предъявителя.
  • Предусмотрите отзыв и интроспекцию, не допускайте токены в URL, журналы и localStorage.
Можно начать бесплатно

Изучай Cyber Security Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
76
Уроки
303

Часто задаваемые вопросы

Урок «Атаки на токены и усиление защиты» бесплатный?

Да — полный текст урока «Атаки на токены и усиление защиты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.

Чему я научусь в уроке «Атаки на токены и усиление защиты»?

Защита потоков аутентификации от злоупотреблений Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cyber Security Academy?

Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Атаки на токены и усиление защиты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cyber Security Academy?

Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Потоки OAuth 2.0
  2. OpenID Connect (OIDC)
  3. SAML и федерация
  4. Атаки на токены и усиление защиты
← Назад к Cyber Security Academy