CVE-2026-100692 в Debian: symlinked mount roots в Hugo и статус по дистрибутивам

CVE: CVE-2026-100692
Продукт: Debian
Дата публикации: 26.09.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: 0,44%; процентиль 35,65%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В Debian затронут пакет hugo. В версиях после v0.123.0 и до v0.166.0 проверка изоляции символьных ссылок останавливается на самом корне монтирования, из-за чего symlink в теме или vendored-модуле может указывать на внешний каталог.

Во время сборки Hugo читает файлы за этим symlink через resources.Get и resources.Match и публикует их в public/ через static mounts. В Debian статус по bookworm и sid — resolved, по forky и trixie — open.

Основные характеристики​


Риск возникает при сборке статического сайта: если в структуре темы или модуля есть symlink на уровне mount root, Hugo может читать файлы из каталога вне проекта и выкладывать их в public/.

  • 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, severity HIGH.
  • CWE: CWE-59 — path traversal.
  • Уязвимые версии: gohugo:hugo, >= 0.123.0, < 0.166.0.
  • Исправление вендора: Hugo v0.166.0.
  • EPSS: 0,44% (percentile 35,65%).
  • Состояние в Debian: bookworm и sid — resolved; forky и trixie — open.

Какие продукты и версии затронуты​


В Debian затронут пакет hugo.

  • bookworm: версия 0.111.3-1, статус resolved
  • forky: версия 0.165.0-3, статус open
  • sid: версия 0.167.0-2, статус resolved
  • trixie: версия 0.131.0-1, статус open

Вендорная фиксация Hugo v0.166.0.

Уязвимы версии hugo от 0.123.0 до 0.165.9 включительно.

Причина уязвимости​


Hugo проверяет границы монтирования, но останавливается на самом корне монтирования.

Если в теме или модуле есть symlink на уровне mount root и он указывает на внешний каталог, проверка не блокирует доступ за пределы этого корня.

Файлы за этим symlink читаются во время сборки через resources.Get, resources.Match и похожие функции. Публикация в public/ происходит через static mounts.

Модули, загружаемые через Go modules, не затронуты, потому что архивы Go module не содержат symlink.

Как работает атака​


Атака строится на обработке symlink при сборке сайта Hugo.

Путь данных начинается с каталога темы или vendored-модуля в структуре проекта. Внутри него находится symlink на уровне mount root, указывающий на внешний каталог.

Во время сборки Hugo вызывает resources.Get или resources.Match. Эти функции читают файлы за symlink без дополнительной проверки границ.

Затем static mounts публикуют прочитанные файлы в public/.

После этого нарушается правило, что источники тем и модулей должны быть локальными путями внутри проекта.

Условия успешной эксплуатации​


Для успешной эксплуатации нужны следующие условия:

  • установлен hugo версии от 0.123.0 до 0.165.9
  • есть тема или vendored-модуль в структуре сайта
  • в теме или модуле есть symlink на уровне mount root, указывающий на внешний каталог
  • сборка сайта выполняется с этим symlink в структуре проекта
  • static mounts настроены так, что файлы из темы или модуля публикуются в public/

Модули через Go modules не дают такого пути, потому что их архивы не содержат symlink.

Возможный сценарий атаки​


Сценарий начинается с сайта, где в themes/ лежит тема с symlink на уровне mount root.

Этот symlink указывает на каталог вне проекта. Во время hugo build функция resources.Get читает файлы из этого внешнего каталога.

resources.Match тоже может вернуть содержимое за symlink. Static mounts копируют эти файлы в public/.

В результате нарушается изоляция: файлы, которые должны были остаться внутри темы или модуля, попадают в опубликованный сайт.

Если во внешнем каталоге есть данные, не предназначенные для публикации, они становятся доступны через public/ после сборки.

Есть ли публичный эксплойт​


Публичный эксплойт подтверждён как техническое описание в advisory.

Вендор описывает механику: symlink на уровне mount root позволяет читать и публиковать файлы за пределами корня проекта.

Отдельного PoC с готовым payload не приведено в переданных источниках.

Подтверждённой эксплуатации в реальных атаках в переданных данных нет.

Отсутствие сведений о публичном эксплойте или подтверждённой эксплуатации не означает, что они отсутствуют.

Признаки эксплуатации​


Специфичных IOC для этой уязвимости в переданных источниках нет.

Можно использовать общие точки контроля:

  • наличие symlink в каталогах themes/ и vendored-модулей, указывающих на пути вне проекта
  • файлы в public/, которые не должны были попасть туда при сборке
  • неожиданные изменения в public/ после запуска hugo build
  • ссылки в конфиге Hugo на абсолютные пути или symlinked mount roots

Эти признаки неспецифичны и могут встречаться без уязвимости.

Как обнаружить атаку​


Для обнаружения нужно проверять структуру проекта и результат сборки.

Проверка каталогов:

  • ls -l themes/
  • ls -l modules/
  • find . -type l

Проверка результата сборки:

  • diff между исходными файлами темы и public/
  • поиск файлов в public/, которых нет в исходной структуре проекта

Проверка конфигурации Hugo на наличие абсолютных путей или symlinked mount roots.

Если используется Debian, можно проверить версию пакета hugo через dpkg-query или apt-cache policy.

Как проверить свою версию​


Команды проверки версии для Debian:

  • cat /etc/debian_version
  • cat /etc/os-release
  • apt-cache policy hugo
  • dpkg-query -W -f='${Package} ${Version}\n' hugo

Для bookworm и sid статус resolved, для forky и trixie — open.

Исправление​


Исправление в Debian:

  • обновить пакет hugo до версии с фиксацией v0.166.0 или выше
  • в bookworm: обновить до 0.111.3-1 или выше
  • в sid: обновить до 0.167.0-2 или выше
  • в forky и trixie фиксация ещё не выпущена, статус open

Команда обновления:

  • apt-get update
  • apt-get upgrade hugo

После обновления проверить версию через dpkg-query.

Временные меры защиты​


Временные меры до исправления:

  • проверить themes/ и vendored-модули на наличие symlink на уровне mount root
  • заменить symlink на явные mounts в конфигурации Hugo
  • ограничить доступ к внешним каталогам, которые могут быть указаны через symlink
  • перед сборкой сайта удалить или изолировать подозрительные symlink

Эти меры не заменяют обновление пакета.

Как проверить устранение уязвимости​


После обновления нужно проверить:

  • версию hugo через dpkg-query -W -f='${Package} ${Version}\n' hugo
  • что версия соответствует фиксированной версии из Debian Security Tracker
  • что сборка сайта не публикует файлы за symlink на уровне mount root
  • что public/ содержит только ожидаемые файлы

Если статус в Debian Security Tracker по вашей ветке — resolved, обновление должно закрыть проблему.

Вывод​


В Debian проблема CVE-2026-100692 закрыта для bookworm и sid. Для forky и trixie фиксация ещё не выпущена.

Риск связан с тем, что symlink на уровне mount root позволяет Hugo читать и публиковать файлы из внешних каталогов во время сборки.

До обновления нужно проверять структуру проекта на наличие таких symlink и ограничивать доступ к внешним путям.

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


  1. NVD — CVE-2026-100692
  2. Debian Security Tracker — CVE-2026-100692
  3. FIRST EPSS — CVE-2026-100692

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


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