CVE: CVE-2026-85394
Продукт: Ubuntu
Дата публикации: 03.09.2026
Критичность: CRITICAL
CVSS: 9.3 (4.0)
EPSS: 0,22%; процентиль 12,71%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Библиотека python-jose в Ubuntu 22.04 и 24.04 LTS содержит ошибку валидации ключей, позволяющую использовать публичный ключ как секрет HMAC. Это открывает путь к подделке HS256-токенов, если приложение не ограничивает разрешенные алгоритмы. Материал разбирает механику атаки, затронутые версии и способы проверки исправления.
Основные характеристики
Уязвимость позволяет нарушителю, получившему публичный ключ сервиса, сгенерировать валидные JWT-токены, обходя проверку подлинности. Риск реализуется, если приложение не фиксирует разрешенные алгоритмы шифрования.
- Тип ошибки: CWE-347 (Incomplete Validation of Integrity Check).
- CVSS 4.0: 9.3 (CRITICAL). Вектор:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N.
- CVSS 3.1: 9.1. Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N.
- Оценка Ubuntu: medium.
- EPSS: 0,22% (процентиль 12,71%).
- Статус: CVE-2026-85394 является неполным исправлением CVE-2024-33663.
Какие продукты и версии затронуты
Согласно данным Ubuntu OSV, уязвимость затрагивает пакет
python-jose в следующих дистрибутивах:- Ubuntu 22.04 LTS (jammy): версия пакета
3.3.0+dfsg-1.
- Ubuntu 24.04 LTS (noble): версия пакета
3.3.0+dfsg-4.
Бинарный пакет
python3-jose в указанных версиях содержит уязвимый код. Информация о наличии исправлений в репозиториях Ubuntu на момент публикации данных не подтверждена.Причина уязвимости
Библиотека python-jose некорректно валидирует асимметричные ключи при инициализации HMAC. Функция, отвечающая за проверку ключа, принимает DER-кодированные публичные ключи, даже если они не имеют PEM-обертки или SSH-префиксов.
В результате публичный ключ, который должен использоваться только для верификации подписи (RS256/ES256), может быть принят как секретный ключ для симметричного алгоритма HS256. Это нарушает границу доверия между асимметричной и симметричной криптографией.
Как работает атака
Атакующий получает публичный ключ сервиса (например, из конфигурации, клиентского кода или публичного API). Далее он кодирует этот ключ в DER-формате и передает его в функцию верификации токена.
Если приложение не ограничивает список разрешенных алгоритмов (алгоритм
alg в заголовке JWT), библиотека python-jose может использовать переданный публичный ключ как секрет для HMAC-SHA256. Атакующий вычисляет подпись HS256 с этим «секретом», и библиотека успешно ее проверяет, принимая токен как подлинный.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- Приложение использует библиотеку
python-joseдля верификации JWT.
- В коде приложения не задан явный список разрешенных алгоритмов (например,
algorithms=['RS256']).
- Атакующий имеет доступ к публичному ключу сервиса.
- Сервер принимает токены с алгоритмом
HS256в заголовке.
Возможный сценарий атаки
Злоумышленник перехватывает или извлекает публичный ключ из клиентского приложения. Он формирует JWT с заголовком
{"alg": "HS256"} и телом, содержащим привилегированные права (например, role: admin).Атакующий использует DER-кодированный публичный ключ как секрет для вычисления HMAC-подписи. При отправке такого токена на сервер, библиотека python-jose, не имея ограничений на алгоритмы, использует переданный ключ для проверки HMAC. Подпись совпадает, и сервер принимает токен, выдавая атакующему доступ к защищенным ресурсам.
Есть ли публичный эксплойт
В доступных источниках отсутствует информация о публичных эксплойтах или подтвержденной эксплуатации в реальных атаках. Указано, что CVE-2026-85394 является неполным исправлением предыдущей уязвимости CVE-2024-33663, что подразумевает наличие технической возможности для атаки, но фактов массового использования не зафиксировано.
Признаки эксплуатации
Специфичных индикаторов компрометации (IOC) для этой уязвимости в источниках не указано. Общие неспецифичные признаки, которые могут свидетельствовать о попытке атаки:
- Резкое увеличение количества запросов с токенами, содержащими алгоритм
HS256, в сервисах, использующих асимметричную подпись.
- Запросы с токенами, где
algне соответствует ожидаемому (например,HS256вместоRS256).
- Необычная активность пользователей с повышенными привилегиями в короткие промежутки времени.
Как обнаружить атаку
Для обнаружения атаки рекомендуется настроить мониторинг логов аутентификации:
- Фильтровать запросы, где заголовок JWT содержит
alg: HS256, если сервис использует только асимметричные алгоритмы.
- Логировать случаи, когда верификация токена проходит, но ключ, использованный для проверки, не соответствует ожидаемому типу (публичный vs секретный).
- Анализировать журналы доступа на предмет аномальных действий, выполненных с токенами, сгенерированными в подозрительные периоды.
Как проверить свою версию
Для проверки версии установленного пакета
python-jose в Ubuntu используйте следующие команды:
Bash:
cat /etc/os-release
uname -r
apt-cache policy python-jose
ubuntu-security-status
Команда
apt-cache policy python-jose покажет установленную версию и доступные обновления. Замените <имя-пакета> на python-jose при необходимости проверки других пакетов.Исправление
Основной способ устранения уязвимости — обновление пакета
python-jose до версии, содержащей исправление. Поскольку в данных Ubuntu OSV не указана конкретная исправленная версия, рекомендуется:- Проверить наличие обновлений через
apt updateиapt upgrade python-jose.
- Следить за официальными уведомлениями безопасности Ubuntu по адресу ubuntu.com/security/CVE-2026-85394.
- Если обновление недоступно, применить временные меры защиты, описанные ниже.
Временные меры защиты
До установки исправления необходимо ограничить разрешенные алгоритмы в коде приложения:
- Явно указать список разрешенных алгоритмов при верификации токенов. Например, для RS256:
algorithms=['RS256'].
- Запретить использование
HS256и других симметричных алгоритмов, если сервис использует только асимметричную подпись.
- Валидировать заголовок JWT на стороне приложения перед передачей в библиотеку python-jose, отклоняя токены с недопустимым
alg.
Как проверить устранение уязвимости
После обновления пакета или применения временных мер проверьте исправление:
- Убедитесь, что версия пакета соответствует исправленной (через
apt-cache policy python-jose).
- Проведите тестирование: сгенерируйте токен с
alg: HS256и публичным ключом в качестве секрета. Сервер должен отклонить такой токен.
- Проверьте логи приложения на наличие ошибок при попытке верификации токенов с недопустимыми алгоритмами.
Вывод
CVE-2026-85394 представляет серьезную угрозу для приложений, использующих python-jose без явного ограничения алгоритмов. Атакующий может подделать токены, используя публичный ключ. Рекомендуется немедленно ограничить разрешенные алгоритмы в коде и обновить пакет до исправленной версии, как только она станет доступна в репозиториях Ubuntu.
Официальные источники
История обновлений статьи
- 07.09.2026 — Опубликована первая версия материала.
