安全研究人员发现了一个 vm2 中的关键沙箱逃逸漏洞。vm2 是一个流行的 JavaScript 沙箱库,用于安全地执行不受信任的代码。该漏洞编号为 CVE-2026-22709,允许攻击者绕过沙箱保护并在主机系统上执行任意代码。使用 vm2 的组织应立即升级到已修补的版本。
理解该漏洞
该漏洞存在于 vm2 3.10.0 及更早版本中,其中 Promise.prototype.then 和 Promise.prototype.catch 回调清理机制可以被绕过。这允许攻击者逃逸沙箱并在主机系统上运行任意代码。
根本原因在于 vm2 处理 Promise 对象的方式。在 lib/setup-sandbox.js 中,localPromise.prototype.then 的回调函数经过了清理,但 globalPromise.prototype.then 没有。由于 async 函数的返回值是一个 globalPromise 对象,攻击者可以利用这个漏洞突破沙箱。
这尤其令人担忧,因为 vm2 专门设计用于安全地运行不受信任的代码——沙箱逃逸完全违背了它的设计目的。
受影响版本
软件包:vm2
受影响版本:<= 3.10.1
已修补版本:>= 3.10.2
严重程度:严重(CVSS 9.8)
识别您的风险敞口
StepSecurity 提供工具帮助您快速识别组织中易受攻击的软件包:
NPM 软件包搜索:使用我们的租户级软件包搜索功能,在您的代码仓库中定位所有受影响 vm2 版本的实例。
威胁中心监控:StepSecurity 的威胁中心为此类严重漏洞提供实时警报,使您能够在依赖链中出现新威胁时快速响应。
立即修复步骤
- 立即升级到 vm2 3.10.2 或更高版本
- 使用
npm list vm2验证您的升级 - 审查间接依赖项,它们可能将 vm2 作为可传递依赖项包含
- 审计使用模式,确保 vm2 仅在真正必要时使用