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

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_version 0.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-инструменты, если это возможно.

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


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

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


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