PyJWT: обход проверки асимметричного ключа через мутированный PEM — CVE-2026-102268
В библиотеке PyJWT до версии 2.14.0 обнаружена критическая уязвимость (CVSS 9.1), позволяющая обойти защиту от путаницы алгоритмов HMAC/асимметричных. При определённых условиях атакующий, зная публичный ключ, может подделывать аутентифицированные HMAC-токены. Уязвимость затрагивает приложения, использующие Python-библиотеку PyJWT.
Подробности
Уязвимость затрагивает PyJWT (jpadilla pyjwt) во всех версиях до 2.14.0. Причина кроется в функции is_pem_format в модуле jwt/utils.py. Эта функция не распознаёт все представления PEM, которые принимает загрузчик модуля cryptography. Если приложение одновременно использует алгоритмы HMAC и асимметричные алгоритмы и передаёт публичный ключ в формате PEM как «сырые» байты, проверка формата может не сработать. В результате метод HMACAlgorithm.prepare_key воспринимает нераспознанный асимметричный публичный ключ как секрет для HMAC. Это открывает возможность для атаки: злоумышленник, которому известен публичный ключ, может подделать аутентифицированные HMAC-токены, поскольку публичный ключ фактически используется в качестве общего секрета. Для эксплуатации достаточно модифицировать публичный ключ в формате PEM с помощью пробелов или изменения символов перевода строки, что позволяет обойти защитную проверку. Уязвимости присвоен рейтинг CVSS 9.1 (CRITICAL). Успешная эксплуатация приводит к компрометации механизма аутентификации токенов и потенциальному несанкционированному доступу.Что делать
Разработчикам и администраторам, использующим PyJWT, рекомендуется как можно скорее обновить библиотеку до версии 2.14.0 или выше, в которой проблема устранена. Дополнительные меры защиты: - Не допускайте смешивания HMAC и асимметричных алгоритмов в одном приложении. Явно задавайте ожидаемый алгоритм при проверке токена через параметр algorithms. - Не принимайте «сырые» байты публичного ключа из внешних источников и не используйте публичный ключ в качестве секрета HMAC. - Проверьте конфигурацию проверки JWT-токенов на предмет строгого указания допустимых алгоритмов. - Если обновление невозможно, рассмотрите изоляцию логики проверки токенов и добавление собственной валидации формата ключа перед передачей его в библиотеку. Итог CVE-2026-102268 — критическая уязвимость в PyJWT, позволяющая обойти защиту от путаницы алгоритмов и подделывать HMAC-токены при знании публичного ключа. Единственное надёжное решение — обновление до версии 2.14.0. Приложениям, использующим одновременно HMAC и асимметричные алгоритмы, следует немедленно проверить свои зависимости и конфигурацию.Источник: CVE Project (cvelistV5)
