CVE: CVE-2026-89259
Продукт: Ubuntu
Дата публикации: 11.09.2026
Критичность: CRITICAL
CVSS: 9.3 (4.0)
EPSS: 0,41%; процентиль 34,70%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В генераторе статических сайтов Hugo обнаружена уязвимость, позволяющая нарушить ограничения файловой системы при сборке. Причина — включение TailwindCSS в список разрешённых инструментов по умолчанию, что требует прав, обходящих защиту, введённую ранее.
В результате Node-инструменты могут читать и записывать файлы вне рабочей директории проекта. Материал описывает механику, затронутые версии пакетов в Ubuntu и способы проверки и исправления.
Основные характеристики
Риск связан с недостаточным ограничением прав при выполнении внешних инструментов во время сборки сайта. Если Hugo настроен на использование уязвимых инструментов по умолчанию, нарушитель может получить доступ к файлам за пределами проекта.
- Тип ошибки: CWE-250 (Недостаточное ограничение прав).
- CVSS 4.0: 9.3 (CRITICAL). Вектор:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N.
- CVSS 3.1: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
- Оценка Ubuntu: medium.
- EPSS: 0,41% (процентиль 34,7%).
- Эксплуатация: Публичные данные о массовой эксплуатации отсутствуют.
Какие продукты и версии затронуты
Уязвимость затрагивает пакет
hugo в дистрибутивах Ubuntu, где версия пакета ниже исправленной. В официальных базах данных Ubuntu указаны следующие релизы и версии пакетов, которые считаются уязвимыми:- Ubuntu 16.04 LTS (xenial):
hugo0.15+git20160206.203.ed23711-1,golang-github-spf13-hugo-dev0.15+git20160206.203.ed23711-1.
- Ubuntu 18.04 LTS (bionic):
hugo0.40.1-1,golang-github-gohugoio-hugo-dev0.40.1-1.
- Ubuntu 20.04 LTS (focal):
hugo0.68.3-1.
- Ubuntu 22.04 LTS (jammy):
hugo0.92.2-1ubuntu0.1.
- Ubuntu Pro 24.04 LTS (noble):
hugo0.123.7-1ubuntu0.3+esm2.
- Ubuntu 26.04 LTS (resolute):
hugo0.154.5-1.
Уязвимость актуальна для версий Hugo, выпущенных после v0.43. Если вы используете Hugo, установленный из исходников или через другие менеджеры пакетов, сверьтесь с версией программы, а не только с версией пакета Ubuntu.
Причина уязвимости
Начиная с версии v0.161.0, Hugo выполняет Node-инструменты в рамках модели разрешений Node.js. Целью этого механизма была изоляция инструментов от файловой системы.
Однако TailwindCSS, который по умолчанию входит в список
security.exec.allow, требует для работы высокопривилегированных флагов: --allow-addons, --allow-child-process и --allow-worker. Эти флаги фактически отключают ограничения, введённые для исправления предыдущей уязвимости (GHSA-x597-9fr4-5857).В результате, если во время сборки вызывается Node-инструмент, работающий в таком режиме, он получает возможность читать и записывать файлы за пределами рабочей директории проекта. Это нарушает границу доверия, предполагавшую, что инструменты ограничены только файлами сайта.
Как работает атака
Атака эксплуатирует механизм выполнения внешних инструментов при сборке статического сайта. Hugo вызывает Node-инструменты, передавая им параметры, которые определяют уровень доступа.
Поскольку TailwindCSS по умолчанию разрешён и требует широких прав, атакующий может подготовить конфигурацию или контент сайта так, чтобы во время сборки был запущен инструмент с обходом изоляции. Это позволяет нарушителю получить доступ к файлам, которые не относятся к проекту Hugo.
Механизм не требует аутентификации или взаимодействия пользователя, если сборка запускается автоматически (например, в CI/CD пайплайне) или если атакующий имеет возможность повлиять на конфигурацию сборки.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- В системе установлен Hugo версии, выпущенной после v0.43 и до v0.165.0.
- В конфигурации Hugo (или по умолчанию) разрешено использование TailwindCSS или других инструментов, требующих флагов
--allow-child-processили--allow-worker.
- Атакующий имеет возможность повлиять на процесс сборки: например, может изменить файлы проекта, конфигурацию
hugo.tomlили запускать сборку в среде, где он контролирует входные данные.
- Сборка выполняется в среде, где доступ к файлам вне рабочей директории имеет значение (например, сервер с чувствительными данными или CI-агент).
Возможный сценарий атаки
Представим сценарий, где атакующий получает доступ к репозиторию с проектом Hugo или имеет возможность внести изменения в файлы перед сборкой.
- Атакующий модифицирует конфигурацию или шаблоны так, чтобы во время сборки был вызван Node-инструмент, работающий в режиме, требующем
--allow-child-process.
- При запуске сборки Hugo применяет настройки по умолчанию, где TailwindCSS разрешён, что активирует высокопривилегированный режим для инструментов.
- Инструмент получает доступ к файловой системе за пределами проекта и может, например, прочитать ключи API из переменной окружения или записать вредоносный код в системные директории.
- В результате атакующий получает доступ к данным или возможность для дальнейшей эксплуатации системы.
Этот сценарий иллюстрирует, как нарушение изоляции приводит к компрометации данных или системы.
Есть ли публичный эксплойт
На момент подготовки статьи в публичных базах данных (NVD, Ubuntu OSV) отсутствуют сведения о подтверждённой массовой эксплуатации CVE-2026-89259 в реальных атаках.
Также нет информации о публично доступных PoC (proof-of-concept) или готовых эксплойтах. Это не означает, что эксплойт не существует, но подтверждённых данных о его использовании в дикой природе нет.
Разработчики Hugo выпустили исправление в версии v0.165.0, что снижает риск, если система обновлена.
Признаки эксплуатации
Специфичных индикаторов компрометации (IOC) для этой уязвимости в открытых источниках не опубликовано. Однако можно использовать общие точки контроля, которые не являются специфичными для CVE-2026-89259, но помогают обнаружить подозрительную активность при сборке:
- Необычные записи в логах сборки Hugo, связанные с доступом к файлам вне рабочей директории.
- Появление новых файлов или изменение прав на файлы в системных директориях во время процесса сборки.
- Аномальная активность процессов Node.js, запущенных в рамках сборки, с попытками чтения чувствительных файлов (например,
~/.ssh,/etc/passwd).
- Изменения в конфигурации
hugo.tomlили в файлах проекта, которые не были внесены авторизованными разработчиками.
Как обнаружить атаку
Для обнаружения признаков эксплуатации или аномальной активности при сборке Hugo рекомендуется:
- Вести логи выполнения команд сборки и анализировать их на предмет попыток доступа к файлам вне рабочей директории.
- Использовать инструменты мониторинга файловой системы (например,
auditdилиinotifywait) для отслеживания изменений в чувствительных директориях во время сборки.
- Проверять конфигурацию Hugo на наличие разрешений для инструментов, требующих широких прав, и ограничивать список
security.exec.allowдо минимума.
- Регулярно обновлять Hugo до последней версии и проверять, что используемые версии не содержат известных уязвимостей.
Как проверить свою версию
Для проверки версии Hugo и статуса обновлений в Ubuntu используйте следующие команды:
Bash:
# Проверка версии Hugo
hugo version
# Проверка версии пакета Hugo в системе
apt-cache policy hugo
# Проверка статуса безопасности Ubuntu
ubuntu-security-status
Если вы используете Hugo, установленный из исходников, убедитесь, что версия программы не ниже v0.165.0. Для пакетов Ubuntu сверьтесь с версией, указанной в
apt-cache policy, и сравните её с версией, содержащей исправление (v0.165.0 или выше).Исправление
Основной способ устранения уязвимости — обновление Hugo до версии v0.165.0 или выше, где TailwindCSS удалён из списка разрешённых инструментов по умолчанию.
Для пользователей Ubuntu:
- Обновите пакет
hugoдо последней доступной версии в вашем дистрибутиве.
- Если обновление через
aptнедоступно, рассмотрите установку Hugo из официальных бинарных пакетов или из исходников версии v0.165.0+.
- После обновления проверьте, что конфигурация Hugo не содержит явных разрешений для инструментов, требующих широких прав.
Для пользователей, которые не могут обновить Hugo:
- Ограничьте список
security.exec.allowвhugo.toml, исключив TailwindCSS и другие инструменты, требующие--allow-child-processили--allow-worker.
- Запускайте сборку в изолированной среде (контейнер, виртуальная машина), где доступ к файлам вне проекта ограничен.
Временные меры защиты
Если обновление до v0.165.0 невозможно, можно применить следующие временные меры:
- Вручную отредактируйте
hugo.tomlи удалитеtailwindcssиз спискаsecurity.exec.allow.
- Задайте строгий список разрешённых инструментов, исключая те, которые требуют
--allow-child-process,--allow-workerили--allow-addons.
- Запускайте сборку Hugo в контейнере или изолированной среде, где файловая система ограничена только рабочей директорией проекта.
- Ограничьте права пользователя, под которым выполняется сборка, чтобы он не имел доступа к чувствительным файлам за пределами проекта.
Эти меры снижают риск, но не устраняют уязвимость полностью. Обновление до исправленной версии остаётся приоритетным.
Как проверить устранение уязвимости
После применения исправлений или временных мер проверьте их эффективность:
- Убедитесь, что версия Hugo не ниже v0.165.0:
Bash:hugo version - Проверьте конфигурацию
hugo.tomlна отсутствие разрешений для инструментов, требующих широких прав.
- Проведите тестовую сборку в изолированной среде и убедитесь, что инструменты не имеют доступа к файлам вне рабочей директории.
- Проверьте логи сборки на предмет аномальной активности или ошибок, связанных с правами доступа.
Если все проверки пройдены, уязвимость считается устранённой или эффективно смягчённой.
Вывод
CVE-2026-89259 представляет серьёзный риск для систем, где Hugo используется для сборки сайтов с внешними Node-инструментами. Уязвимость позволяет нарушить изоляцию файловой системы и получить доступ к данным за пределами проекта.
Ключевые шаги для защиты:
- Обновить Hugo до версии v0.165.0 или выше.
- Ограничить список разрешённых инструментов в конфигурации Hugo.
- Запускать сборку в изолированной среде.
Регулярный мониторинг версий и конфигураций, а также применение принципа минимальных привилегий, помогут снизить риск подобных уязвимостей в будущем.
Официальные источники
История обновлений статьи
- 16.09.2026 — Опубликована первая версия материала.
