CVE-2026-104056 в Ubuntu: подмена discovery-метаданных в Authlib, затронутые релизы и обновление python-authlib

CVE: CVE-2026-104056
Продукт: Ubuntu
Дата публикации: 01.10.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,10%; процентиль 0,69%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Ubuntu выпустила обновлённые пакеты python-authlib/python3-authlib для CVE-2026-104056 — дефекта библиотеки Authlib версии 1.7.2 и ниже, при котором discovery-метаданные OAuth/OIDC кэшируются без проверки подлинности и без привязки к источнику.

Отравленный ответ discovery в уязвимых версиях заменяет все значения endpoint'ов на произвольные, контролируемые атакующим, вместо адресов, разделяющих origin с настроенным URL метаданных. Запись CVE опубликована 1 октября 2026 года, запись Ubuntu — 5 октября 2026 года.

Обновления распространяются через карман esm-apps (Ubuntu Pro) для релизов 22.04, 24.04 и 26.04 LTS. Внешняя оценка CVSS 9.8 описывает сценарий атаки по сети без прав и участия пользователя; Ubuntu при этом оценивает проблему как medium. До установки обновления библиотека продолжает принимать и кэшировать метаданные без проверки.

Основные характеристики​


Суть риска: библиотека Authlib при работе с discovery OAuth/OIDC сохраняет полученный JSON-документ метаданных в кэш, не проверяя его подлинность и не привязывая адреса endpoint'ов к источнику. Если злоумышленник сумеет подставить отравленный ответ, клиент начнёт работать с подменёнными адресами вместо легитимных.

Ключевые параметры:

  • Тип ошибки: CWE-345 (недостаточная проверка подлинности данных), CWE-346 (ошибка проверки источника), CWE-829 (подключение функциональности из недоверенной сферы управления).
  • Оценка CVSS: 9.8, CRITICAL по CVSS 3.1, вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H; оценка приведена в записи NVD, статус которой — Awaiting Analysis. Ubuntu оценивает проблему как medium.
  • Условия по вектору: атака по сети, низкая сложность, не требуются привилегии и взаимодействие с пользователем; последствия для конфиденциальности, целостности и доступности оценены как высокие.
  • Подтверждённая эксплуатация: сведений о реальных атаках нет, в каталоге CISA KEV уязвимость не значится.
  • EPSS: 0,097% (процентиль 0,69%) по данным FIRST — прогнозная вероятность эксплуатации в ближайшее время низкая, метрика динамическая.

Какие продукты и версии затронуты​


Уязвим upstream-проект Authlib версии 1.7.2 и ниже; исправленная upstream-версия в доступных данных не названа. В Ubuntu затронут исходный пакет python-authlib (двоичный пакет python3-authlib). В записи Ubuntu OSV уязвимость помечена как затрагивающая все версии пакета (событие introduced: 0).

Обновлённые сборки, перечисленные в записи Ubuntu (карман esm-apps, доступный через Ubuntu Pro):

  • Ubuntu Pro 22.04 LTS (esm-apps/jammy): python3-authlib 0.15.5-1ubuntu0.1~esm2
  • Ubuntu Pro 24.04 LTS (esm-apps/noble): python3-authlib 1.3.0-1ubuntu0.1~esm2
  • Ubuntu Pro 26.04 LTS (esm-apps/resolute): python3-authlib 1.6.7-1ubuntu0.1~esm1

Предоставленная запись охватывает только Ubuntu Pro (ESM); о статусе стандартных карманов этих релизов в ней сведений нет. Актуальное состояние по релизам проверяйте на странице Ubuntu Security.

Причина уязвимости​


Механизм discovery в OAuth 2.0 / OpenID Connect устроен так: клиент загружает JSON-документ метаданных с настроенного URL сервера метаданных и использует содержащиеся в нём адреса endpoint'ов — авторизации, токена, ключей и других.

Корневая причина CVE-2026-104056 в том, что Authlib версии 1.7.2 и ниже кэширует этот документ без проверки подлинности и без привязки значений к источнику (issuer-origin binding). Полученные адреса не сверяются с origin настроенного URL метаданных, хотя корректное поведение — принимать только endpoint'ы, разделяющие origin с этим URL.

В терминах CWE дефект описан тремя классами: CWE-345 (недостаточная проверка подлинности данных), CWE-346 (ошибка проверки источника) и CWE-829 (подключение функциональности из недоверенной сферы управления). Практический итог: любой ответ discovery, подставленный в канал загрузки, принимается как достоверный и сохраняется в кэш.

Как работает атака​


Приложение настраивает URL метаданных сервера (в интеграциях Authlib для этого обычно служит параметр вида server_metadata_url). Библиотека загружает по нему JSON-документ discovery, извлекает значения endpoint'ов и кэширует их для последующих операций авторизации.

На этапе кэширования в уязвимых версиях нет ни проверки подлинности документа, ни привязки к origin. Отравленный ответ discovery — подставленный в канал загрузки между приложением и сервером метаданных — заменяет все значения endpoint'ов на произвольные, контролируемые атакующим. Ограничение «адрес должен разделять origin с настроенным URL метаданных» не применяется.

Следствие из этой механики (в описании CVE прямо не перечислено, но вытекает из назначения подменяемых полей): если клиент направит запрос авторизации или обмена токена на адрес атакующего, туда же уйдут коды авторизации, токены и, в зависимости от схемы, секреты клиента. Подмена адреса ключей (JWKS) открывает путь к приёму токенов, подписанных чужими ключами. Конкретные последствия зависят от того, как именно приложение использует библиотеку.

Условия успешной эксплуатации​


Подтверждённое условие из описания: атакующий должен получить возможность подменить ответ discovery, который получает приложение, — уязвимые версии принимают его без проверки. Способы реализации такой подмены в доступных данных не расписаны.

Разумные сценарии достижения этого условия (защитный вывод, а не факт из записи):

  • перехват трафика между приложением и сервером метаданных, особенно если метаданные запрашиваются без строгого TLS;
  • компрометация промежуточной инфраструктуры — прокси, балансировщика, DNS;
  • конфигурация, в которой URL метаданных изначально указывает на точку, подконтрольную атакующему.

Дополнительно требуется, чтобы приложение использовало механизм discovery Authlib и полагалось на кэшированные метаданные. Если метаданные загружаются только по доверенному каналу внутри контролируемого периметра, практическая применимость атаки снижается; с этим согласуется и расхождение оценок: Ubuntu даёт medium, внешняя запись CVSS — 9.8.

Возможный сценарий атаки​


Разумный сценарий (защитный вывод на основе описанной механики; в записи он пошагово не расписан). Атакующий добивается подмены ответа discovery — например, находясь на сетевом пути между приложением и сервером метаданных. Приложение принимает отравленный документ и кэширует его: все значения endpoint'ов теперь указывают на инфраструктуру атакующего.

Дальше обычный поток авторизации работает на злоумышленника. Перенаправление пользователя на «authorization endpoint» ведёт на ресурс атакующего, запрос обмена кода на токен вместе с клиентским секретом уходит туда же, а полученные токены можно использовать против реальных сервисов.

Если подменён и адрес JWKS, клиент может принимать токены, подписанные ключами атакующего, — это уже прямая имперсонация пользователей. Насколько сценарий реализуем в конкретном приложении, зависит от конфигурации и сетевого окружения; подтверждённых случаев такого развития в доступных данных нет.

Есть ли публичный эксплойт​


В доступных данных есть указание на публичное техническое описание: записи CVE и Ubuntu ссылаются на публикацию исследователя в блоге uziii2208.github.io, где раскрыта суть дефекта. Готовый PoC-код, работающий эксплойт и подтверждённые случаи эксплуатации в предоставленных источниках не зафиксированы — это три разных уровня зрелости, и подтверждён здесь только первый.

Отсутствие сведений о PoC не означает его отсутствия. Статус записи NVD — Awaiting Analysis, каталог CISA KEV уязвимость не содержит, EPSS низкий (0,097%), но эти метрики отражают текущую известность проблемы, а не техническую сложность её использования. Вектор CVSS оценивает сложность атаки как низкую, поэтому ждать появления «официального» эксплойта перед обновлением не нужно.

Признаки эксплуатации​


Специфичных индикаторов компрометации для CVE-2026-104056 в доступных данных не приводится. Ниже — неспецифичные точки контроля, применимые к любому случаю подмены discovery-метаданных:

  • журналы исходящих соединений с хостов приложений: обращения к неожиданным доменам или IP-адресам на путях авторизации, токена и JWKS;
  • изменения кэшированного discovery-документа: внезапная смена хостов в значениях endpoint'ов;
  • конфигурация приложений: URL метаданных, указывающие на домены вне ожидаемого периметра;
  • журналы пакетного менеджера: незапланированные изменения пакета python3-authlib.

Совпадение с этими признаками не доказывает эксплуатацию именно этой уязвимости и требует разбора в контексте окружения.

Как обнаружить атаку​


Первый шаг — определить, установлена ли уязвимая библиотека и кто её использует.

  • Проверьте версию пакета: apt-cache policy python3-authlib (подробности — в разделе проверки версии).
  • Составьте перечень приложений, зависящих от python3-authlib, и выясните, используют ли они discovery, то есть настраивают URL метаданных сервера вместо явного задания endpoint'ов.
  • Если discovery используется, зафиксируйте, откуда загружаются метаданные: схема, домен, сетевой путь, а также что сейчас находится в кэше метаданных приложения.
  • Проверьте статус обслуживания: ubuntu-security-status покажет, подключены ли ESM-репозитории, через которые распространяются исправления.

Дополнительно просмотрите журналы исходящих соединений приложений на обращения к неожиданным хостам — это неспецифичный, но полезный контроль (см. раздел об индикаторах компрометации).

Как проверить свою версию​


Для определения выпуска и версии пакета выполните:

Bash:
cat /etc/os-release
apt-cache policy python3-authlib
ubuntu-security-status

В общем виде команда записывается как apt-cache policy <имя-пакета>; заполнитель <имя-пакета> необходимо заменить на фактическое имя, в этом случае — python3-authlib. Команда cat /etc/os-release показывает выпуск Ubuntu, ubuntu-security-status — состояние подписки Ubuntu Pro и доступность ESM-репозиториев. Команда uname -r из стандартного набора здесь малоинформативна: она возвращает версию ядра и не связана с пакетом Authlib.

Сверьте выведенную версию пакета со списком обновлённых сборок из раздела «Исправление».

Исправление​


Исправление доставляется обновлённым пакетом python3-authlib. По записи Ubuntu обновления выпущены в кармане esm-apps (Ubuntu Pro / ESM):

  • Ubuntu Pro 22.04 LTS — 0.15.5-1ubuntu0.1~esm2;
  • Ubuntu Pro 24.04 LTS — 1.3.0-1ubuntu0.1~esm2;
  • Ubuntu Pro 26.04 LTS — 1.6.7-1ubuntu0.1~esm1.

Порядок обновления:

  • убедитесь, что система подключена к Ubuntu Pro и сервис ESM Apps включён (проверка — ubuntu-security-status);
  • обновите индекс и пакет: sudo apt update && sudo apt install --only-upgrade python3-authlib;
  • перезапустите приложения и сервисы, использующие библиотеку: работающие процессы Python продолжают держать в памяти загруженную старую версию.

Если система не покрыта Ubuntu Pro, вариант исправления из предоставленных данных не описан — уточните статус на странице Ubuntu Security.

Временные меры защиты​


Официальных временных обходных мер в доступных записях не приведено. Общие защитные меры (вывод редакции, а не рекомендация из записи CVE):

  • убедитесь, что URL метаданных сервера использует HTTPS и указывает на доверенный домен под вашим контролем;
  • ограничьте исходящий сетевой доступ с хостов приложений до ожидаемых адресов провайдера идентификации (egress-фильтрация);
  • исключите загрузку метаданных через недоверенные промежуточные узлы, включая перехватывающие TLS прокси;
  • контролируйте целостность кэша discovery-метаданных: фиксируйте ожидаемые значения endpoint'ов и оповещайте об их изменениях;
  • по возможности задавайте endpoint'ы явно в конфигурации приложения, не полагаясь на discovery, если это поддерживается вашей интеграцией.

Эти меры снижают вероятность подмены ответа, но не заменяют установку исправленного пакета.

Как проверить устранение уязвимости​


После обновления убедитесь, что исправленная сборка установлена и реально используется.

  • apt-cache policy python3-authlib — установленная версия должна соответствовать обновлению для вашего релиза, например 0.15.5-1ubuntu0.1~esm2 для 22.04 LTS;
  • grep python3-authlib /var/log/apt/history.log — подтвердите факт установки в журнале apt;
  • перезапустите зависимые приложения и убедитесь, что они запустились без ошибок импорта;
  • при наличии мониторинга исходящих соединений проверьте, что обращения идут только к ожидаемым адресам провайдера идентификации.

Вывод​


CVE-2026-104056 — дефект класса «отсутствие проверки подлинности и источника данных»: Authlib до 1.7.2 включительно кэширует discovery-метаданные OAuth/OIDC как есть, и отравленный ответ подменяет все endpoint'ы на контролируемые атакующим. Для Ubuntu исправление доставлено обновлениями python3-authlib в Ubuntu Pro (ESM) для 22.04, 24.04 и 26.04 LTS.

Подтверждённых атак и публичного PoC в доступных данных нет, EPSS низкий, но расхождение оценок (medium у Ubuntu против 9.8 во внешней записи CVSS) само по себе аргумент не откладывать: практический риск зависит от сетевого окружения каждого приложения. Проверьте версию пакета, установите обновление, перезапустите зависимые сервисы и возьмите под контроль канал загрузки метаданных.

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


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

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


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