CVE-2026-43998vm2是Node.js广泛使用的开源沙箱库,用于在不安全的环境中运行代码。在3.10.5及以前版本中,NodeVM的require.root路径限制机制存在严重安全漏洞。攻击者可利用文件系统符号链接绕过路径验证逻辑,从允许的根目录之外加载任意主机模块。这导致沙箱机制完全失效,攻击者可在主机上下文中执行任意代码,造成严重的安全风险,需立即修复。
该漏洞的核心在于`vm2`库在路径验证和模块加载这两个阶段使用了不一致的解析机制。在验证阶段,NodeVM使用Node.js的`path.resolve()`方法检查请求的模块路径是否包含在允许的`root`目录内。然而,`path.resolve()`在处理路径时不会自动解引用符号链接,因此只要符号链接本身位于根目录下,验证就会通过。但在实际的模块加载阶段,Node.js原生的`require()`函数会自动解引用符号链接。攻击者利用这一差异,在沙箱允许的目录内创建一个符号链接,指向根目录以外的敏感系统模块或恶意文件。当沙箱代码尝试require该符号链接时,`require()`会跟随链接加载外部文件,从而成功绕过沙箱限制,在宿主机上下文中执行任意代码,实现远程代码执行攻击。