TGViewer
SecureTechTalks SecureTechTalks @securetechtalks · 301 subscribers
Post #576 240
🔐 JWT: надёжная защита или дыра в безопасности?

Как неконтролируемые токены превращаются в повышенные привилегии

📘 Что такое JWT?

JWT (JSON Web Token) - это компактный и самодостаточный формат передачи информации между сторонами в виде JSON-объекта. Он состоит из трёх частей:
1⃣ Header — заголовок, где указывается алгоритм подписи (например, HS256 или RS256);
2⃣ Payload — полезная нагрузка: ID пользователя, роль, логин и пр.;
3⃣ Signature — цифровая подпись, подтверждающая целостность и подлинность токена.

JWT широко используется в системах аутентификации и авторизации, но при неправильной реализации может стать уязвимостью — вплоть до полного компрометирования прав доступа.

💥 Уязвимость alg: none: отсутствие подписи

Если сервер не проверяет алгоритм, указанный в заголовке токена, злоумышленник может заменить значение alg на "none", удалить подпись и изменить payload, например:
"role": "admin"

Сервер может принять такой токен как действительный — и предоставить доступ к закрытым функциям, считая пользователя администратором.

Это одна из самых известных, но всё ещё встречающихся уязвимостей, особенно в нестандартных или устаревших библиотеках.

🔁 Подмена алгоритма: RS256 → HS256

Интересный кейс с «путаницей алгоритмов».
Предположим:
Сервер ожидает токен, подписанный с помощью асимметричного RS256;
Злоумышленник меняет alg на HS256 и использует публичный ключ как секретный HMAC-ключ;
Затем он подписывает поддельный токен и отправляет его.
Если сервер не проверяет алгоритм строго, то он принимает токен как действительный.

🔓 Слабые ключи и брутфорс

Если секрет, используемый для подписи токенов (HS256), недостаточно надёжен, его можно подобрать:
➖с помощью словарных атак (например, через jwt2john + John the Ripper);
➖через брутфорс (crackjwt.py, Hashcat и др.).

🧪 Распространённые ошибки при работе с JWT

🤦‍♂ Использование decode() без verify() — токен расшифровывается, но подпись не проверяется;
🙈 Отсутствие проверки exp, iss, aud, nbf, jti — позволяет повторно использовать устаревшие или "чужие" токены;
🤷‍♂ Передача токена в URL вместо HTTP-заголовка — приводит к утечкам через логи, историю браузера, рефереры;
⏳ Слишком долгий срок действия токенов — особенно без возможности отзыва;
✍ Логирование JWT в лог-файлы сервера — прямой путь к компрометации.

✅ Меры предосторожности

➖Не доверяйте значению alg из заголовка — задавайте допустимый алгоритм жёстко в конфигурации сервера.
➖Отключите поддержку алгоритма none — даже если он доступен в библиотеке.
➖Предпочитайте асимметричную криптографию (RS256) вместо симметричной (HS256) — это исключает некоторые виды атак.
➖Используйте длинные и криптоустойчивые секреты — не менее 256 бит.
➖Проверяйте все критически важные поля в payload — exp (время истечения), nbf (не раньше), iss (issuer), aud (аудитория), jti (идентификатор токена).
➖Передавайте токены в заголовках (Authorization: Bearer), а не в URL.
➖Не логируйте JWT в логи, особенно при ошибках или 5xx-ответах.
➖Ограничьте срок действия токенов и внедрите механизм их отзыва (например, с помощью blacklist или короткого TTL и refresh-токенов).
➖Аудируйте кодовую базу и зависимости — некоторые библиотеки могут игнорировать верификацию по умолчанию.

🧩 Вывод

JWT создавался как безопасный и самодостаточный формат. Но при ошибочной конфигурации или недостатке контроля он превращается в настоящий эксплойт, особенно в условиях, где разработчики не до конца понимают логику работы алгоритмов и доверяют библиотеке "по умолчанию".

Stay secure and read SecureTechTalks 📚

#JWT #веббезопасность #уязвимости #хакеры #инфобез #RS256 #HS256 #noneattack #pentest #SecureTechTalks
More from @securetechtalks
  1. Oct 6, 2026🧨 Два безопасных Skill могут собрать RCE Новое исследование и новая проблема: каждый навы…
  2. Oct 5, 2026🧨 OWASP Noir: карта API прямо из исходного кода OWASP Noir - это open source SAST инструм…
  3. Oct 2, 2026🧨 AI сокращает путь от найденной уязвимости до реальной атаки Google Threat Intelligence…
  4. Oct 1, 2026🧨 AI агенты выложили 13 000 внутренних скриншотов компаний в публичный Исследователи Glow…
  5. Sep 30, 2026🧨 MCP сервер может украсть OAuth токен через настоящий экран входа В официальном MCP Pyth…
  6. Sep 29, 2026🍷 Исследователи «напоили» LLM Команда UNSW решила проверить довольно странную гипотезу, ч…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →