CVE-2026-49478 в Ubuntu: SSRF в Fulcio и раскрытие токенов

CVE: CVE-2026-49478
Продукт: Ubuntu
Дата публикации: 13.08.2026
Критичность: HIGH
CVSS: 8.7 (3.1)
EPSS: 0,28%; процентиль 20,68%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


Уязвимость CVE-2026-49478 затрагивает пакет golang-github-sigstore-fulcio в Ubuntu 26.04 LTS. Ошибка позволяет злоумышленнику использовать слепой SSRF и раскрыть токены Kubernetes ServiceAccount через подмену JWKS-ключей. Риск оценивается как HIGH (CVSS 8.7), однако Ubuntu классифицирует его как medium. Статья описывает механизм атаки, условия эксплуатации и методы проверки версий.

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


Fulcio — это центр сертификации, выдающий сертификаты для подписи кода на основе OIDC-идентичности. Уязвимость связана с некорректной обработкой перенаправлений между хостами (cross-host redirects) во время OIDC-открытия. Злоумышленник может заставить Fulcio следовать за вредоносным перенаправлением, при этом к запросу прикрепляется токен Kubernetes ServiceAccount. Это приводит к раскрытию токенов внешним хостам, выполнению слепого SSRF или подмене и кэшированию вредоносных JWKS-ключей. Версия 1.8.6 исправляет проблему, блокируя перенаправления и ограничивая инъекцию токенов.

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


В Ubuntu 26.04 LTS уязвим исходный пакет golang-github-sigstore-fulcio версии 1.7.1-1. Соответствующий бинарный пакет golang-github-sigstore-fulcio-dev также имеет версию 1.7.1-1. Уязвимость присутствует в версиях Fulcio вплоть до 1.8.5 включительно. В Ubuntu 26.04 LTS поставляется версия 1.7.1, которая попадает в диапазон уязвимых версий.

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


Причиной уязвимости является отсутствие проверки целевого хоста при обработке HTTP-перенаправлений во время процесса OIDC-открытия. Клиентская логика Fulcio не ограничивает переход на другие домены (cross-host redirects). Кроме того, токен Kubernetes ServiceAccount автоматически прикрепляется к запросам, даже если они перенаправляются на внешний, потенциально вредоносный сервер. Это нарушает принцип изоляции и приводит к утечке конфиденциальных учетных данных.

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


Атакующий контролирует или компрометирует OIDC-издателя (issuer). В процессе OIDC-открытия Fulcio запрашивает метаданные издателя. Злоумышленник возвращает HTTP-ответ с кодом перенаправления (например, 302), указывающим на внешний хост, контролируемый атакующим. Поскольку Fulcio не проверяет, что целевой хост совпадает с исходным, он следует за перенаправлением. При этом к запросу на внешний хост прикрепляется токен Kubernetes ServiceAccount. Атакующий получает токен, что позволяет ему выполнять действия от имени сервисного аккаунта в кластере Kubernetes. Также возможно подмена JWKS-ключей, что позволяет выдать поддельные сертификаты.

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


Для эксплуатации требуется, чтобы Fulcio был настроен на использование OIDC-провайдера, контролируемого или скомпрометированного злоумышленником. Атакующий должен иметь возможность управлять ответами OIDC-издателя, включая заголовки перенаправления. Также необходимо, чтобы Fulcio работал в среде Kubernetes и использовал ServiceAccount-токены для аутентификации. Удаленный доступ к сети, где размещен Fulcio, не требуется, если атакующий контролирует OIDC-провайдера.

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


  1. Злоумышленник регистрирует или компрометирует OIDC-провайдера. 2. Пользователь или автоматизированная система инициирует запрос на выпуск сертификата через Fulcio, используя OIDC-идентичность. 3. Fulcio обращается к OIDC-провайдеру для получения метаданных. 4. Провайдер возвращает HTTP-перенаправление на внешний сервер, контролируемый злоумышленником. 5. Fulcio следует за перенаправлением, прикрепляя токен Kubernetes ServiceAccount. 6. Внешний сервер получает токен. 7. Злоумышленник использует токен для доступа к Kubernetes API или подменяет JWKS-ключи для выдачи поддельных сертификатов.

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


В официальных источниках не упоминается наличие публичного эксплойта или PoC. Однако механизм атаки хорошо документирован в отчете о безопасности. Отсутствие публичного эксплойта не означает, что эксплуатация невозможна. Учитывая природу SSRF и раскрытие токенов, эксплуатация может быть реализована с использованием стандартных инструментов для перехвата HTTP-запросов.

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


Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Общие признаки могут включать неожиданные исходящие HTTP-запросы от Fulcio к неизвестным внешним хостам. Также стоит обратить внимание на появление токенов Kubernetes ServiceAccount в логах внешних серверов. Аномальная активность в Kubernetes API, связанная с использованием ServiceAccount-токенов, может указывать на эксплуатацию.

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


Для обнаружения эксплуатации рекомендуется анализировать логи Fulcio на предмет HTTP-перенаправлений на внешние хосты. Также следует проверять логи OIDC-провайдеров на наличие запросов от Fulcio. Мониторинг исходящего трафика от серверов Fulcio может помочь выявить подозрительные соединения. В Kubernetes стоит отслеживать использование ServiceAccount-токенов для доступа к API, особенно если это происходит из неожиданных источников.

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


Для проверки версии установленного пакета Fulcio в Ubuntu используйте команду:

Bash:
apt-cache policy golang-github-sigstore-fulcio

Замените <имя-пакета> на golang-github-sigstore-fulcio, если вы проверяете другой пакет. Также можно проверить версию бинарного пакета:

Bash:
apt-cache policy golang-github-sigstore-fulcio-dev

Если версия пакета 1.7.1-1 или ниже, система уязвима. Для проверки версии самой ОС используйте:

Bash:
cat /etc/os-release

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


Основной способ устранения уязвимости — обновление пакета golang-github-sigstore-fulcio до версии 1.8.6 или выше. В Ubuntu 26.04 LTS исправление может быть доступно в репозиториях безопасности. Выполните обновление системы:

Bash:
sudo apt update
sudo apt upgrade golang-github-sigstore-fulcio

Если обновление недоступно, рассмотрите возможность установки Fulcio из исходного кода или использования контейнерного образа с исправленной версией.

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


Официальных временных решений (workarounds) не предоставлено. Однако можно снизить риск, ограничив доступ Fulcio к внешним сетям. Используйте firewall или network policies в Kubernetes для блокировки исходящих соединений от Fulcio к неизвестным хостам. Также можно настроить OIDC-провайдер так, чтобы он не возвращал перенаправления на внешние домены.

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


После обновления проверьте версию пакета:

Bash:
apt-cache policy golang-github-sigstore-fulcio

Убедитесь, что версия 1.8.6 или выше. Также проверьте, что перенаправления на внешние хосты блокируются. Для этого можно отправить тестовый запрос к OIDC-провайдеру, который возвращает перенаправление, и убедиться, что Fulcio не следует за ним.

Вывод​


CVE-2026-49478 представляет серьезную угрозу для систем, использующих Fulcio в Ubuntu 26.04 LTS. Уязвимость позволяет злоумышленнику раскрыть токены Kubernetes ServiceAccount и выполнить SSRF. Обновление до версии 1.8.6 является обязательным. Временные меры включают ограничение сетевого доступа. Регулярный мониторинг логов и проверка версий помогут обеспечить безопасность.

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


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

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


  • 14.08.2026 — Опубликована первая версия материала.
  • 16.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ