CVE-2026-100721
严重已发布
vm2 3.12.2 之前版本通过自定义解析器导致的授权绕过
- 已发布
- 2026年9月27日
- 已更新
- 2026年9月27日
- 分配 CNA
- VulnCheck
- 观察到的证据
- 2026年10月3日
初级CVSS
9.5/ 10严重
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'`)时,lib/resolver-compat.js 中的 `LegacyResolver.customResolve` 会将解析后的模块目录记录到 `this.externals` 中,形式为 `new RegExp('^' + escapeRegExp(resolvedPath))`,而未要求路径分隔符或字符串结尾边界。因此,不受信任的访客代码可以先 require 白名单模块(例如 `foo`),然后 require 一个未被列入白名单的同级模块的绝对路径,只要该路径仅共享已解析的前缀(例如 `.../node_modules/foo2/index.js`);该同级模块会通过 `isPathAllowedForModule` 检查,并通过 `hostRequire` 加载,因此其顶层代码会在宿主进程中运行,之后导出才会被 `vm.readonly` 包装,从而导致沙箱逃逸并在宿主上下文中执行任意代码。
来源
Python PoC for CVE-2026-100721:检测并利用 vm2 <3.12.2 NodeVM 外部允许列表绕过漏洞,通过本地实验环境或批量 HTTP 目标实现沙箱逃逸与宿主机 RCE。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。