CVE-2026-85394 в Ubuntu: подделка JWT-токенов через публичный ключ

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.

Официальные источники​


  1. NVD — CVE-2026-85394
  2. Ubuntu OSV — CVE-2026-85394
  3. FIRST EPSS — CVE-2026-85394

История обновлений статьи​


  • 07.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ