
Уведомление для textract ⌯⌲ 15 000 еженедельных загрузок
textract вплоть до версии 2.5.0 позволяет внедрение OS-команд через
путь к файлу, передаваемый во множество экстракторов. Некоторые участки кода
передают этот путь в child_process.exec() без надлежащей санитизации.
Злоумышленник, который может влиять на имя файла или путь, может выйти за
пределы командной строки и выполнить произвольные команды на хосте.
| Продукт | Затронутые версии | Исправленная версия |
|---|
| textract | все версии до 2.5.0 включительно | исправление недоступно по состоянию на 2026-03-24 |
CVE-2026-26831CWE-78 - внедрение команд ОС9.8 (Критический)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hlib/extractors/doc.jslib/extractors/rtf.jslib/extractors/dxf.jslib/extractors/images.jslib/util.jsОдним из примеров является экстрактор doc.js:
exec('antiword -m UTF-8.txt "' + filePath + '"', ...)
Другой пример — обработка пути в rtf.js, которая экранирует только
пробелы перед выполнением shell-команды. Это не останавливает
метасимволы, такие как ;, обратные кавычки или $().
Приложения часто используют textract для пользовательских загруженных
документов. В такой конфигурации вредоносное имя файла может вызвать
выполнение команд во время извлечения текста.
Имя входного файла, например:
test";whoami;".doc
может выйти за пределы строки команды в кавычках при запуске уязвимого экстрактора.
На момент написания исправленный npm-релиз недоступен.
Если вы по-прежнему зависите от этого пакета:
textract.exec() на запуск процессов с безопасной передачей аргументов.