Уязвимость CVE-2026-29000 получила 10 баллов по шкале CVSS.

В популярной Java-библиотеке аутентификации pac4j-jwt обнаружили критическую уязвимость, которая позволяет злоумышленнику выдавать себя за любого пользователя системы, включая администраторов. Проблема получила идентификатор CVE-2026-29000 и максимальную оценку опасности по шкале CVSS — 10,0.
Дефект выявила команда CodeAnt AI во время анализа изменений в открытом исходном коде проектов. Проверка показала, что удалённый атакующий способен создать поддельный JSON Web Token с произвольными данными и пройти проверку подлинности без доступа к закрытым ключам, паролям или секретам.
В обычной схеме pac4j-jwt защищает токены двумя уровнями. Сначала применяется шифрование, скрывающее содержимое, затем криптографическая подпись подтверждает подлинность данных. Когда сервер получает токен, система сначала расшифровывает внешнюю оболочку, после чего проверяет подпись.
Анализ показал ошибку в обработке токенов без подписи. Если злоумышленник создаёт так называемый PlainJWT — токен без цифровой подписи — и шифрует его публичным RSA-ключом сервера, библиотека не распознаёт объект как подписанный. Во время обработки возникает пустое значение.
Из-за неверно расположенной проверки такого значения в коде приложения блок проверки подписи просто пропускается. Вместо отклонения недействительного токена система продолжает работу и читает неподтверждённые данные. В результате атакующий может указать в токене любую роль, например «admin», зашифровать данные публичным ключом сервера и получить полный доступ. Сервер принимает содержимое как доверенное, не проверяя источник.
Проблема затрагивает конфигурации, где используются RSA-зашифрованные токены вместе с компонентом JwtAuthenticator. После закрытого уведомления разработчик библиотеки Жером Лелею быстро подтвердил проблему и выпустил исправления для нескольких веток проекта. Подготовка обновлений заняла два рабочих дня.
Разработчикам, использующим pac4j-jwt, рекомендуют срочно обновить зависимости. Для ветки 4.x безопасной считается версия 4.5.9 и новее, для ветки 5.x — 5.7.9 и новее, для ветки 6.x — 6.3.3 и выше. Проверку уязвимости можно провести через менеджеры пакетов и анализ конфигурации приложений, где одновременно задействованы шифрование и подпись токенов.