Атаки на токены и усиление защиты
Защита потоков аутентификации от злоупотреблений
«Атаки на токены и усиление защиты» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Потоки OAuth 2.0
- OpenID Connect (OIDC)
- SAML и федерация
- Атаки на токены и усиление защиты