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-authlib0.15.5-1ubuntu0.1~esm2
- Ubuntu Pro 24.04 LTS (esm-apps/noble):
python3-authlib1.3.0-1ubuntu0.1~esm2
- Ubuntu Pro 26.04 LTS (esm-apps/resolute):
python3-authlib1.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) само по себе аргумент не откладывать: практический риск зависит от сетевого окружения каждого приложения. Проверьте версию пакета, установите обновление, перезапустите зависимые сервисы и возьмите под контроль канал загрузки метаданных.
Официальные источники
История обновлений статьи
- 06.10.2026 — Опубликована первая версия материала.
