CVE-2026-82331 в Ubuntu: link following в tar source plugin Apache BuildStream и исправление

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

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


В Ubuntu затронут пакет buildstream. Ошибка — improper link resolution before file access (CWE-59) в tar source plugin Apache BuildStream при работе на Python < 3.12.

Злоупотребление позволяет вредоносным исходным tarball'ам записывать файлы на хосте через symlink escape с привилегиями пользователя, запускающего BuildStream.

В Ubuntu OSV указаны версии buildstream 1.4.1-1 для focal, 1.6.1-1 для jammy и 1.6.9-1 для noble; рекомендован апгрейд до 2.8.1.

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


Риск связан с нарушением границы доверия при извлечении исходных tarball'ов: BuildStream на Python < 3.12 не блокирует выход symlink'а за пределы целевого каталога, что даёт запись файлов на хосте.

  • Тип ошибки: improper link resolution before file access, CWE-59
  • CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, 9.8 CRITICAL
  • Вектор атаки: удалённый, без необходимости авторизации и взаимодействия пользователя
  • Факт эксплуатации: не подтверждён в предоставленных источниках
  • EPSS: 0,42% (percentile 34,09%)

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


В Ubuntu OSV зафиксированы следующие дистрибутивы и пакеты:

  • Ubuntu 20.04 LTS (focal): buildstream 1.4.1-1, python3-buildstream 1.4.1-1
  • Ubuntu 22.04 LTS (jammy): buildstream 1.6.1-1, python3-buildstream 1.6.1-1
  • Ubuntu 24.04 LTS (noble): buildstream 1.6.9-1, python3-buildstream 1.6.9-1

Указанные версии относятся к пакету buildstream в Debian-based репозиториях Ubuntu.

Официальная страница Ubuntu: CVE-2026-82331.

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


Уязвимость находится в tar source plugin Apache BuildStream, который извлекает исходные tarball'ы во время сборки.

При работе на Python < 3.12 plugin использует механизм link following без достаточной проверки целевого пути после разрешения symlink'а.

Синклинк внутри tarball может указывать на путь вне ожидаемого каталога извлечения, и BuildStream следует этому пути при записи файла.

Python >= 3.12 в связке с BuildStream >= 2.3.0 применяет tarfile filter functionality, которая блокирует symlink escape. В Ubuntu OSV не указано конкретное исправление внутри пакетов focal/jammy/noble до версии 2.8.1; рекомендован апгрейд до 2.8.1.

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


Атакующий подготавливает вредоносный исходный tarball, содержащий symlink'ы с путями вне целевого каталога извлечения.

BuildStream на уязвимой версии при source fetching разрешает symlink и пишет файл по указанному пути.

Запись происходит с привилегиями пользователя, запускающего BuildStream.

Целевым результатом может быть создание или перезапись файлов в доступных пользователю каталогах: конфигурации, скрипты, файлы сборки, временные объекты.

Если BuildStream запускается в CI/CD или build-окружении с доступом к артефактам, запись может затронуть последующие этапы сборки и дистрибуцию.

Python >= 3.12 + BuildStream >= 2.3.0 использует tarfile filter, который блокирует выход symlink'а за пределы целевого каталога.

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


Для успешной эксплуатации необходимы следующие условия:

  • Система с установленным пакетом buildstream из Ubuntu OSV: focal 1.4.1-1, jammy 1.6.1-1 или noble 1.6.9-1
  • BuildStream работает на Python < 3.12 или не применяет tarfile filter functionality
  • Атакующий способен предоставить или подменить исходный tarball для проекта BuildStream
  • Tarball содержит symlink'ы с путями вне целевого каталога извлечения
  • Запись файлов возможна в каталогах, доступных пользователю, запускающему BuildStream

Если проект использует только доверенные источники и фиксирует SHA256 hash отслеживаемого tarball, влияние ограничивается доверием к самому содержимому tarball.

Ubuntu OSV отмечает, что build output не может быть доверен при использовании недоверенных источников.

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


Сценарий основан на подтверждённой механике из описания CVE.

Атакующий получает доступ к каналу поставки исходного tarball для элемента BuildStream или подменяет его в репозитории/CI-контексте.

Tarball содержит symlink'ы, указывающие на пути вне целевого каталога извлечения.

BuildStream на уязвимой версии разрешает symlink и записывает файл по внешнему пути с привилегиями пользователя.

Запись может затронуть файлы сборки, конфигурационные объекты или временные артефакты.

Если BuildStream запускается в CI/CD, последующие этапы сборки могут использовать модифицированные файлы.

Python >= 3.12 + BuildStream >= 2.3.0 блокирует symlink escape через tarfile filter functionality.

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


В предоставленных источниках не указано наличие публичного эксплойта, PoC или подтверждённой эксплуатации CVE-2026-82331.

Отсутствие сведений в NVD, Ubuntu OSV и FIRST EPSS не означает отсутствие эксплойта.

Техническое описание достаточно для понимания механики: tar source plugin на Python < 3.12 следует symlink'ам вне целевого каталога при извлечении.

Рекомендуемый способ защиты — апгрейд до BuildStream 2.8.1 или использование окружения с Python >= 3.12 и BuildStream >= 2.3.0, где tarfile filter блокирует symlink escape.

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


Специфичных IOC для CVE-2026-82331 в предоставленных источниках не указано.

Ниже приведены общие точки контроля; они неспецифичны и требуют корреляции с контекстом системы:

  • Непредвиденные файлы или symlink'ы вне каталогов сборки BuildStream
  • Изменения временных файлов в CI/CD окружениях, где запускается BuildStream
  • Записи в файловой системе с привилегиями пользователя, запускающего BuildStream
  • Аномальные изменения конфигурационных файлов или скриптов сборки
  • Новые исполняемые объекты в каталогах, доступных пользователю BuildStream
  • Изменения SHA256 hash отслеживаемых tarball'ов при отсутствии авторизованного обновления проекта

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


Для обнаружения атаки используйте следующие методы:

  • Проверка версии пакета buildstream через apt-cache policy <имя-пакета>
  • Мониторинг файловой системы в каталогах сборки и временных артефактов BuildStream
  • Контроль изменений symlink'ов и файлов вне целевых каталогов извлечения
  • Проверка SHA256 hash отслеживаемых tarball'ов для обнаружения подмены
  • Анализ журналов CI/CD на аномальные изменения артефактов после source fetching
  • Использование ubuntu-security-status для проверки статуса уязвимостей системы

Команды:

Bash:
cat /etc/os-release
uname -r
apt-cache policy <имя-пакета>
ubuntu-security-status

Замени <имя-пакета> на buildstream или python3-buildstream в зависимости от проверяемого пакета.

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


Проверка версии Ubuntu и пакетов buildstream:

Bash:
cat /etc/os-release
uname -r
apt-cache policy <имя-пакета>
ubuntu-security-status

Замени <имя-пакета> на buildstream или python3-buildstream.

Ожидаемые результаты:

  • Ubuntu 20.04 LTS: buildstream 1.4.1-1
  • Ubuntu 22.04 LTS: buildstream 1.6.1-1
  • Ubuntu 24.04 LTS: buildstream 1.6.9-1

Если версия ниже 2.8.1 и Python < 3.12, система уязвима.

Python >= 3.12 + BuildStream >= 2.3.0 уже применяет tarfile filter functionality.

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


Рекомендуемые меры:

  • Апгрейд buildstream до версии 2.8.1
  • Переход на Python >= 3.12, если это возможно в окружении сборки
  • Использование BuildStream >= 2.3.0 с tarfile filter functionality
  • Ограничение источников элементов BuildStream только доверенными репозиториями
  • Фиксация SHA256 hash отслеживаемых tarball'ов для предотвращения MITM
  • Пересборка артефактов из чистых исходников после обновления

Ubuntu OSV указывает severity medium, но CVSS v3.1 — CRITICAL 9.8.

Официальная страница Ubuntu: CVE-2026-82331.

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


Пока не выполнен апгрейд до 2.8.1:

  • Ограничьте использование BuildStream только для доверенных исходных tarball'ов
  • Фиксируйте SHA256 hash отслеживаемых tarball'ов
  • Изолируйте CI/CD окружение, где запускается BuildStream
  • Ограничьте права пользователя, запускающего BuildStream, на минимально необходимые каталоги
  • Мониторинг файловой системы в каталогах сборки и временных артефактов
  • Пересмотрите источники элементов проекта и удалите недоверенные репозитории

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

Python >= 3.12 + BuildStream >= 2.3.0 блокирует symlink escape через tarfile filter functionality.

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


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

  • Версию buildstream: apt-cache policy <имя-пакета>
  • Версию Python: python3 --version
  • Наличие tarfile filter functionality в BuildStream >= 2.3.0
  • Отсутствие уязвимых версий через ubuntu-security-status
  • Пересборку артефактов из чистых исходников

Ожидаемый результат: buildstream 2.8.1 или выше, Python >= 3.12 или BuildStream >= 2.3.0 с активным tarfile filter.

Замените <имя-пакета> на buildstream.

Вывод​


CVE-2026-82331 — уязвимость link following в tar source plugin Apache BuildStream на Python < 3.12.

В Ubuntu затронуты focal, jammy и noble с версиями buildstream 1.4.1-1, 1.6.1-1 и 1.6.9-1.

Риск — запись файлов на хосте через symlink'ы из вредоносных tarball'ов с привилегиями пользователя BuildStream.

Основной способ защиты — апгрейд до 2.8.1 или использование Python >= 3.12 + BuildStream >= 2.3.0.

Дополнительно ограничьте источники и фиксируйте SHA256 hash tarball'ов.

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


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

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


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