CVE-2026-44003vm2 是 Node.js 的一个沙箱库。在 3.11.0 版本之前,其代码转换器存在性能优化逻辑,当代码不包含 catch、import 或 async 关键字时,会跳过 AST 分析。这导致沙箱内代码可直接访问内部变量 VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL,进而暴露内部安全函数,破坏沙箱隔离性。
该漏洞源于 vm2 代码转换器中旨在提升性能的“快速路径”优化机制。当检测到代码不含 `catch`、`import` 或 `async` 关键字时,vm2 会跳过耗时的语法树(AST)分析步骤。攻击者利用这一逻辑缺陷,精心构造不含上述关键字的恶意代码,从而成功绕过安全检查。通过这种方式,沙箱内的代码可以直接引用并操作名为 `VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL` 的内部对象。该对象暴露了 `handleException`、`wrapWith`、`import` 等原本受保护的安全函数。攻击者利用这些泄露的内部接口,可以打破沙箱隔离,进而可能导致执行任意代码或敏感信息泄露。