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-провайдера.
Возможный сценарий атаки
- Злоумышленник регистрирует или компрометирует 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 является обязательным. Временные меры включают ограничение сетевого доступа. Регулярный мониторинг логов и проверка версий помогут обеспечить безопасность.
Официальные источники
История обновлений статьи
- 14.08.2026 — Опубликована первая версия материала.
- 16.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
