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