CVE-2026-100690 в Debian: произвольное чтение файлов через симлинки в Hugo и статус исправлений

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.

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


  1. NVD — CVE-2026-100690
  2. Debian Security Tracker — CVE-2026-100690

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


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