Уязвимость ReDoS в Mammoth.js 1.3.0–1.12.2 позволяет заблокировать Node.js через Style Map (CVE-2026-105219)
В библиотеке Mammoth.js выявлена уязвимость отказа в обслуживании через регулярные выражения (ReDoS). Атакующий может отправить специально сформированный .docx-файл, чтобы заблокировать event loop Node.js. Проблема затрагивает версии с 1.3.0 по 1.12.2 и получила оценку CVSS 8.7 (HIGH).
Подробности
Уязвимость затрагивает Mammoth.js в диапазоне версий от 1.3.0 до 1.12.2 включительно; исправление выпущено в версии 1.12.3. Проблема локализована в модуле токенизатора карты стилей — файлlib/styles/parser/tokeniser.js. Причиной является наличие перекрывающихся альтернатив в регулярном выражении, что приводит к катастрофическому бэктрекингу при обработке определённых входных данных.
Согласно описанию, атакующий может передать специально сформированный .docx-файл, содержащий в mammoth/style-map незакрытую строку в кавычках с повторяющимися escape-последовательностями обратного слэша. Обработка такого ввода вызывает экспоненциальный рост времени выполнения регулярного выражения и блокировку event loop Node.js. Поскольку Node.js выполняет JavaScript в однопоточном режиме, это приводит к полной остановке обработки запросов в приложении, использующем уязвимую библиотеку.
Уязвимости присвоена оценка CVSS 8.7 (HIGH). Такой уровень reflects высокую опасность: эксплуатация не требует аутентификации и специальных привилегий, а последствия — недоступность сервиса — могут быть достигнуты одним вредоносным файлом.
Что делать
Основная рекомендация — как можно скорее обновить Mammoth.js до версии 1.12.3 или более новой. Исправление устраняет перекрывающиеся альтернативы в регулярном выражении токенизатора карты стилей и предотвращает катастрофический бэктрекинг. Если немедленное обновление невозможно, следует рассмотреть временные компенсационные меры:- Ограничить размер и происхождение обрабатываемых .docx-файлов, принимая их только из доверенных источников.
- Изолировать процесс конвертации документа в отдельный worker или дочерний процесс с жёстким таймаутом, чтобы блокировка не затрагивала основной event loop.
- Настроить мониторинг аномально долгих операций парсинга и автоматически прерывать их.
- Применять WAF или входную валидацию для фильтрации подозрительных конструкций в полях style-map, хотя это не заменяет полноценного патча.
Итог
CVE-2026-105219 — серьёзная уязвимость ReDoS в Mammoth.js, позволяющая заблокировать Node.js-приложение одним вредоносным .docx-файлом. При оценке CVSS 8.7 (HIGH) её следует рассматривать как приоритетную для устранения. Обновление до версии 1.12.3 закрывает проблему; до установки патча рекомендуется изоляция и ограничение обработки ненадёжных документов.Источник: CVE Project (cvelistV5)
