CVE-2026-100721
vm2 до 3.12.2 Обход авторизации через пользовательский резолвер
- Опубликовано
- 27 сент. 2026 г.
- Обновлено
- 27 сент. 2026 г.
- Назначение CNA
- VulnCheck
- Наблюдены доказательства
- 3 окт. 2026 г.
Первичный CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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Резюме
vm2 до 3.12.2 содержит обход авторизации в резолвере внешних модулей NodeVM. Когда встраивающее приложение настраивает `require.external` с пользовательским резолвером (и `context: 'host'`), `LegacyResolver.customResolve` в lib/resolver-compat.js записывает разрешённый каталог модуля в `this.externals` как `new RegExp('^' + escapeRegExp(resolvedPath))`, не требуя разделителя пути или границы конца строки. Таким образом, недоверенный гостевой код может запросить модуль из белого списка (например, `foo`), а затем запросить абсолютный путь соседнего модуля, не входящего в белый список, путь которого лишь разделяет разрешённый префикс (например, `.../node_modules/foo2/index.js`); соседний модуль проходит проверку `isPathAllowedForModule` и загружается через `hostRequire`, поэтому его код верхнего уровня выполняется в хост-процессе до того, как экспорты оборачиваются в `vm.readonly`, что приводит к побегу из песочницы и выполнению произвольного кода в контексте хоста.
Источники
Python PoC для CVE-2026-100721: обнаруживает и эксплуатирует обход внешнего allowlist в NodeVM vm2 <3.12.2, обеспечивая побег из песочницы и RCE на хосте через локальную лабораторию или массовые HTTP-цели.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.