CVE: CVE-2026-100690
Продукт: Debian
Дата публикации: 26.09.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: 0,35%; процентиль 25,95%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В Debian проблема касается пакета hugo. Зависимые версии v0.161.0–v0.165.0 позволяют нарушить изоляцию Node.js-инструментов через символические ссылки, что приводит к раскрытию файлов, читаемых процессом сборки Hugo. В release bookworm и trixie статус resolved, в sid тоже resolved, в forky open.
Основные характеристики
Риск связан с нарушением проверки пути при использовании Node.js-инструментов Hugo: символическая ссылка внутри проекта может указывать на файл вне разрешённого набора каталогов, и сборка продолжит читать этот файл.
- Тип ошибки: CWE-59 — Path Traversal
- CVSS v4.0:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X, оценка 8.7, severity HIGH
- Условие атаки: доступ к внесению контента в проект Hugo и использование Node.js-инструментов css.PostCSS, css.TailwindCSS или js.Babel с default security configuration
- Факт эксплуатации: подтверждённая эксплуатация не раскрыта в предоставленных источниках; есть описание механики и фиксация в v0.166.0
- EPSS: 0,349%, процентиль 25,95%
Какие продукты и версии затронуты
В Debian затронут пакет hugo.
- Debian bookworm: статус resolved, версия в репозитории
0.111.3-1
- Debian forky: статус open, версия в репозитории
0.165.0-3, urgency not yet assigned
- Debian sid: статус resolved, fixed_version
0.166.0-1, версия в репозитории0.167.0-2
- Debian trixie: статус resolved, версия в репозитории
0.131.0-1
Причина уязвимости
Hugo запускает Node.js-инструменты css.PostCSS, css.TailwindCSS и js.Babel под permission model Node.js, который ограничивает чтение файловой системы к проектному каталогу и настроенным mount'ам.
Node.js permission model проверяет только лексический путь. При этом он следует символическим ссылкам, которые указывают за пределы разрешённого набора. Hugo не обнаруживал симлинки, выходящие из песочницы, поэтому сборка могла читать файлы вне проекта.
В v0.166.0 добавлена проверка: Hugo сканирует разрешённые пути и завершает сборку, если символическая ссылка резолвится за пределы них.
Как работает атака
Атакующий получает возможность внести контент в проект Hugo, например через pull request.
В проект можно добавить символическую ссылку, например assets/css/x.css -> /etc/passwd. Если сборка использует PostCSS-плагин, который читает этот файл, Node.js-инструмент последует ссылке и прочитает целевой файл.
После этого содержимое файла может быть встроено в публикуемый сайт. Ограничение — файлы должны быть читаемы процессом Hugo build. Проекты без Node.js-инструментов не затронуты.
Условия успешной эксплуатации
Для успешной эксплуатации нужны следующие условия:
- доступ к внесению контента в проект Hugo, например через pull request или другой механизм публикации изменений
- использование Node.js-инструментов Hugo: css.PostCSS, css.TailwindCSS или js.Babel
- default security configuration сборки Hugo
- наличие символической ссылки внутри проекта, указывающей на файл вне разрешённого набора
- возможность запускать сборку Hugo с доступом к файловой системе процесса Hugo
Возможный сценарий атаки
Сценарий предполагает проект Hugo версии v0.161.0–v0.165.0, где авторизация контента доступна атакующему.
Атакующий отправляет pull request с символической ссылкой в assets/css/x.css на /etc/passwd и PostCSS-плагин, который читает этот файл при обработке CSS.
Сборка Hugo запускает Node.js-инструмент. Permission model проверяет лексический путь assets/css/x.css, но следует ссылке и читает /etc/passwd. Содержимое файла может попасть в результат сборки и быть опубликовано на сайте.
Если сборка выполняется с правами процесса Hugo, доступны все файлы, читаемые этим процессом.
Есть ли публичный эксплойт
В предоставленных источниках раскрыта механика уязвимости и фиксация в v0.166.0.
Публичный PoC не подтверждён отдельным документом в пакете доказательств. Описание содержит конкретный пример символической ссылки и PostCSS-плагина, который читает её, но статус публичного эксплойта как отдельного артефакта не раскрыт.
Подтверждённая эксплуатация в реальных атаках не указана.
Признаки эксплуатации
Специфичные IOC для CVE-2026-100690 не подтверждены в предоставленных источниках.
Неспецифичные точки контроля:
- неожиданные символические ссылки в каталогах проекта Hugo, указывающие на файлы вне проекта
- чтение файлов за пределы project directory процессом hugo или Node.js-инструментами при сборке
- появление содержимого системных файлов в сгенерированных HTML/CSS/JS артефактах сайта
- аномальные обращения hugo к путям, не относящимся к структуре проекта
Как обнаружить атаку
Для обнаружения можно использовать проверки файловой системы и журналы сборки.
- Проверить наличие символьных ссылок в проекте Hugo:
find /path/to/hugo-project -type l— замените/path/to/hugo-projectна путь к проекту.
- Проверить целевые пути ссылок: для каждой ссылки выполнить
readlink -f <имя-ссылки>и сравнить результат с корнем проекта. Замените<имя-ссылки>на конкретный файл.
- Смотреть логи Hugo build на ошибки или аномальные обращения к файлам вне project directory.
- Проверять артефакты сборки на наличие содержимого, не соответствующего ожидаемым CSS/JS/HTML файлам.
Как проверить свою версию
Команды проверки версии для Debian:
cat /etc/debian_version— версия дистрибутива
cat /etc/os-release— идентификатор и release d'и
apt-cache policy <имя-пакета>— доступные версии пакета; замените<имя-пакета>на hugo
dpkg-query -W -f='${Package} ${Version}\n' <имя-пакета>— установленная версия пакета; замените<имя-пакета>на hugo
Исправление
Для Debian:
- bookworm: обновить пакет hugo до версии
0.111.3-1из stable
- forky: статус open, исправление не подтверждено в предоставленных данных; отслеживать обновления и использовать временные меры
- sid: обновить пакет hugo до версии
0.167.0-2, где fixed_version0.166.0-1
- trixie: обновить пакет hugo до версии
0.131.0-1
Обновление выполняется через стандартный механизм apt для конкретной release.
Официальный трекер: Debian Security Tracker — CVE-2026-100690.
Временные меры защиты
Пока нет исправления в forky или до обновления пакетов:
- ограничить доступ к внесению контента в проекты Hugo, использующие Node.js-инструменты
- не принимать pull request с символическими ссылками на файлы вне проекта
- проверять символные ссылки перед сборкой вручную или скриптом
- запускать Hugo build с минимальными правами доступа к файловой системе
- изолировать проект Hugo в отдельном контейнере или VM, где доступ к системным файлам ограничен
Как проверить устранение уязвимости
После обновления проверить:
- установленную версию пакета:
dpkg-query -W -f='${Package} ${Version}\n' hugo
- наличие исправленной версии в репозитории:
apt-cache policy hugo
- что версия соответствует фиксированной для release: bookworm
0.111.3-1, sid0.167.0-2, trixie0.131.0-1
- повторить сборку Hugo с тестовым проектом, содержащим символическую ссылку вне проекта; в исправленной версии сборка должна завершиться ошибкой при резолве ссылки за пределы разрешённых путей
Вывод
В Debian CVE-2026-100690 затрагивает пакет hugo. В bookworm, sid и trixie статус resolved, в forky open.
Риск реализуется при доступе к контенту проекта и использовании Node.js-инструментов Hugo. Фиксация в v0.166.0 добавляет проверку резолва символьных ссылок и завершение сборки при выходе за пределы разрешённых путей.
Для forky до появления исправления рекомендуется ограничивать доступ к контентам проектов Hugo, использующих Node.js-инструменты, и проверять символные ссылки перед сборкой.
Официальные источники
История обновлений статьи
- 28.09.2026 — Опубликована первая версия материала.
- 28.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 29.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 30.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
