CVE: CVE-2026-100690
Продукт: Debian
Дата публикации: 26.09.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В Debian проблема затрагивает пакет hugo. Вектор — contribution к проекту Hugo, где Node.js-инструменты запускаются под permission model Node.js.
Симлинк внутри проекта может указывать на файл вне разрешённого набора путей. PostCSS-плагин или другой инструмент читает целевой файл и встраивает его содержимое в публикуемый сайт.
Затронуты версии Hugo v0.161.0–v0.165.0, если сборка вызывает Node.js-инструменты.
В Debian: bookworm и trixie — resolved, sid — resolved, forky — open.
Основные характеристики
Риск состоит в том, что содержимое файлов, доступных процессу сборки Hugo, может попасть в публикуемый сайт без ограничения на целевой путь.
- Тип ошибки: CWE-59, path traversal через симлинки
- CVSS:
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, HIGH
- Условие атаки: доступ к внесению контента в Hugo-проект и сборка с Node.js-инструментами (css.PostCSS, css.TailwindCSS, js.Babel)
- Факт эксплуатации: не подтверждён в предоставленных источниках
- EPSS: нет данных; процентиль нет данных
Какие продукты и версии затронуты
В Debian затронут пакет
hugo.- bookworm: resolved, версия в репозитории
0.111.3-1
- forky: open, версия в репозитории
0.165.0-3, urgency — not yet assigned
- sid: resolved, fixed_version
0.166.0-1, версия в репозитории0.167.0-1
- trixie: resolved, версия в репозитории
0.131.0-1
Причина уязвимости
Hugo запускает Node.js-инструменты под permission model Node.js, чтобы ограничить чтение файловой системы к директории проекта и настроенным mount.
Node.js permission model валидирует только лексический путь и следует по симлинкам, которые указывают за пределы разрешённого набора. Hugo не проверял, что симлинк внутри проекта не выходит из sandbox.
В результате файл вне проекта мог читаться Node.js-инструментом, если он был подключён через симлинк в проекте.
Как работает атака
Атакующий получает возможность внести контент в Hugo-проект. Например, это может быть pull request или любой другой механизм, позволяющий добавить файлы в проект.
В проект добавляется симлинк, например
assets/css/x.css -> /etc/passwd. Путь внутри проекта выглядит как обычный файл проекта, но целевой путь указывает на файл вне разрешённого набора.Если сборка вызывает Node.js-инструмент, который читает этот файл, содержимое целевого файла попадает в результат сборки. В описании указано, что PostCSS-плагин может читать симлинк и встраивать его содержимое в публикуемый сайт.
Ограничение на чтение не срабатывает, потому что проверка ведётся по лексическому пути, а симлинк следует за пределы sandbox.
Условия успешной эксплуатации
Для успешной эксплуатации нужны следующие условия:
- доступ к внесению файлов в Hugo-проект (например, pull request)
- установленная версия Hugo v0.161.0–v0.165.0 или Debian-пакет с такой версией
- сборка проекта использует Node.js-инструменты: css.PostCSS, css.TailwindCSS или js.Babel
- проект не отключает вызов этих инструментов
- файл, указанный симлинком, доступен для чтения процессом сборки Hugo
Возможный сценарий атаки
Сценарий описан в источниках как возможный путь атаки.
Атакующий отправляет pull request с файлом-симлинком в проект Hugo. Симлинк указывает на файл вне проекта, например
/etc/passwd или другой файл, доступный для чтения процессом сборки.При сборке Node.js-инструмент читает симлинк как обычный файл проекта. Содержимое целевого файла попадает в сгенерированный HTML или CSS.
Если сайт публикуется, содержимое файла становится доступно посетителям сайта.
В предоставленных источниках нет подтверждения реального инцидента или публичного эксплойта.
Есть ли публичный эксплойт
В предоставленных источниках нет сведений о публичном PoC, техническом описании эксплойта или подтверждённой эксплуатации.
Отсутствие данных в источниках не означает отсутствие эксплойта. Ситуация требует мониторинга официальных источников и отслеживания изменений по CVE-2026-100690.
Признаки эксплуатации
Специфичных IOC для этой уязвимости в предоставленных источниках нет.
Неспецифичные точки контроля:
- неожиданные файлы-симлинки в директориях Hugo-проекта, указывающие на пути вне проекта
- содержимое файлов сайта, которое не соответствует исходным файлам проекта
- сборка Hugo с Node.js-инструментами, где целевой путь симлинка выходит за пределы разрешённого набора
- изменения в публикуемом HTML/CSS, содержащие данные из системных или пользовательских файлов
Как обнаружить атаку
Для обнаружения атаки можно использовать следующие методы:
- проверка симлинков в директориях Hugo-проекта на наличие целевых путей вне проекта
- сравнение исходных файлов проекта и сгенерированного контента сайта
- мониторинг логов сборки Hugo на чтение файлов вне разрешённого набора
- аудит конфигурации Node.js-инструментов в проекте
Как проверить свою версию
Для проверки версии пакета
hugo в Debian:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' hugo
Для просмотра доступных версий и статуса обновления:
Bash:
apt-cache policy hugo
Для проверки версии дистрибутива:
Bash:
cat /etc/debian_version
cat /etc/os-release
Исправление
Исправление доступно в Hugo v0.166.0.
В Debian:
- bookworm: обновить пакет
hugoдо версии0.111.3-1
- forky: обновление не выпущено, статус open
- sid: обновить пакет
hugoдо версии0.167.0-1
- trixie: обновить пакет
hugoдо версии0.131.0-1
Команда обновления:
Bash:
apt update && apt upgrade hugo
После обновления проверить версию пакета и убедиться, что сборка Hugo не вызывает чтение файлов вне разрешённого набора.
Временные меры защиты
Пока обновление недоступно или не выполнено:
- ограничить доступ к внесению контента в Hugo-проект
- отключить Node.js-инструменты (css.PostCSS, css.TailwindCSS, js.Babel) в конфигурации проекта, если это возможно
- проверять симлинки в проекте на наличие целевых путей вне разрешённого набора
- ограничить права доступа к файлам, которые могут быть прочитаны процессом сборки Hugo
Как проверить устранение уязвимости
После обновления проверить:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' hugo
Убедиться, что версия пакета соответствует исправленной версии для вашего дистрибутива.
Проверить конфигурацию Hugo и убедиться, что Node.js-инструменты не вызывают чтение файлов вне разрешённого набора.
Выполнить сборку проекта и проверить, что симлинки внутри проекта не приводят к чтению файлов вне проекта.
Вывод
CVE-2026-100690 затрагивает Hugo v0.161.0–v0.165.0 в Debian. Проблема связана с тем, что Node.js permission model валидирует только лексический путь и следует по симлинкам за пределы разрешённого набора.
Атакующий может внести симлинк в проект Hugo и получить доступ к файлам вне проекта через Node.js-инструменты при сборке.
В Debian: bookworm, sid и trixie — resolved, forky — open. Рекомендуется обновить пакет
hugo до исправленной версии или ограничить доступ к внесению контента в проекты Hugo.Официальные источники
История обновлений статьи
- 28.09.2026 — Опубликована первая версия материала.
- 28.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 29.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
