CVE-2026-44002vm2是一个Node.js的开源虚拟机与沙箱环境。在3.11.0版本之前,其CallSite包装类虽然阻止了可能导致宿主对象泄露的getThis()和getFunction()方法,但却允许getFileName()返回未经过净化的宿主绝对路径。这允许任何在沙箱中运行的代码提取宿主服务器的完整目录结构、库路径以及框架版本信息,造成敏感信息泄露风险。
该漏洞源于vm2沙箱对V8引擎CallSite对象的安全封装不完整。CallSite对象通常用于获取堆栈跟踪信息。vm2为了防止沙箱逃逸,拦截了getThis()和getFunction()这两个可能返回宿主对象引用的方法。然而,开发人员未对getFileName()方法实施相同的过滤机制。攻击者可以在沙箱代码中故意抛出错误或创建堆栈跟踪,进而访问CallSite对象。通过调用getFileName(),攻击者能够获取宿主服务器上文件的绝对路径,而非经过沙箱虚拟化的路径。这使得攻击者能够推断出服务器的目录结构、安装的依赖库版本及具体框架信息,为进一步的攻击提供情报。