CVE-2026-102278: DoS через переполнение стека в brace-expansion
В библиотеке brace-expansion обнаружена уязвимость высокого риска (CVSS 7.5), позволяющая вызвать отказ в обслуживании через глубоко вложенные группы фигурных скобок. Атака приводит к исчерпанию нативного стека и аварийному завершению процесса Node.js. Затронуты версии до 1.1.20, 2.1.6, 3.0.8 и 5.0.11.
Подробности
Уязвимость связана с неконтролируемой рекурсией во внутренней функции expand_(). При обработке глубоко вложенных групп фигурных скобок функция рекурсивно вызывается на каждом уровне вложенности — как на участках раскрытия элементов, разделённых запятыми, так и на участках с одиночными наборами. В результате нативный стек исчерпывается ещё до того, как успевают сработать ограничения на объём выходных данных, что приводит к аварийному завершению процесса Node.js. Согласно описанию, уязвимы версии brace-expansion до 1.1.20, 2.1.6, 3.0.8 и 5.0.11 включительно. Проблема проявляется, когда в качестве шаблона передаётся недоверенный ввод с глубоко вложенными группами скобок — например, при обработке пользовательских данных в инструментах сборки, парсерах путей, генераторах glob-шаблонов и других приложениях, использующих библиотеку для раскрытия выражений. Уязвимости присвоен базовый балл CVSS 7.5 (HIGH). Несмотря на то, что эксплуатация не требует аутентификации и не приводит к утечке данных, возможность удалённо спровоцировать падение сервиса делает проблему серьёзной для публичных приложений и серверных компонентов, работающих на Node.js.Что делать
Разработчикам и администраторам рекомендуется как можно скорее обновить brace-expansion до исправленных версий: 1.1.20, 2.1.6, 3.0.8 или 5.0.11 — в зависимости от используемой ветки. Поскольку библиотека часто является транзитивной зависимостью, стоит проверить дерево пакетов проекта и обновить все компоненты, которые её подтягивают. Если немедленное обновление невозможно, в качестве временной митигации следует ограничить или полностью исключить обработку недоверенных шаблонов с фигурными скобками, а также валидировать входящие данные на предмет глубокой вложенности. Дополнительно можно ограничить размер стека и изолировать процессы, обрабатывающие потенциально опасные шаблоны, чтобы падение одного процесса не затрагивало остальную систему. Итог: CVE-2026-102278 — это классическая уязвимость отказа в обслуживании, эксплуатируемая через относительно простой ввод. Учитывая высокую распространённость brace-expansion в экосистеме npm, обновление до исправленных версий является приоритетной задачей для команд, чьи сервисы обрабатывают внешние данные.Источник: CVE Project (cvelistV5)
