在流行的vm2 JavaScript沙箱软件包中,研究人员发现了13个严重漏洞,攻击者可利用这些漏洞逃出沙箱容器,对IT环境造成严重危害。目前,所有使用该库的开发者均被强烈建议立即将软件升级至最新版本3.11.2。
上述警告来自vm2维护者Patrik Simek发布的安全公告。vm2是一款开源虚拟机/沙箱工具,可在白名单限制下运行不受信任的代码,并调用Node.js内置模块。
13个漏洞中较为严重的一个是CVE-2026-26956,该漏洞可实现完整的沙箱逃逸并执行任意代码。攻击者在VM.run()内部运行的代码能够获取宿主进程对象,并在无需宿主配合的情况下执行宿主命令。
安全研究机构Socket在一封电子邮件中告知,该漏洞目前仅在Node.js 25.6.1版本上得到确认,且需要支持WebAssembly异常处理和JSTag功能的Node.js版本才能触发。
研究人员表示,风险最高的场景是:应用程序使用vm2 3.10.4版本运行在Node.js 25环境中,且允许攻击者控制的JavaScript代码传入VM.run()。
Socket研究工程师Wenxin Jiang通过邮件表示:"这是一个攻击面较窄但影响极大的漏洞。由于公告指向特定的脆弱版本以及Node.js 25与WebAssembly的特定组合,并非所有vm2部署都受到影响。但一旦条件满足,安全边界将完全失效——原本应被限制在沙箱内的代码能够触达宿主进程并执行命令。因此,使用vm2运行用户提供JavaScript代码的团队应尽快打补丁,并审查沙箱进程的访问权限。"
更新:该报道发布一天后,Socket发布了新的指导意见,指出该漏洞涉及的软件包和运行时范围比原始公告所描述的更广。Socket表示,部分依赖扫描工具可能会错误地将存在漏洞的部署标记为未受影响。Socket的测试发现,该漏洞影响所有3.10.5版本之前的vm2,涵盖所有暴露WebAssembly.JSTag接口的Node.js运行时,包括Node.js 24.x版本。Socket表示,尽管其并非vm2的维护方,仍将为暂时无法升级至最新修复版本的开发者提供补丁。
另一个严重漏洞是CVE-2026-44007,这是vm2 Node.js库中的访问控制不当漏洞,允许沙箱逃逸并在底层宿主上执行任意操作系统命令。公告指出,该漏洞存在于nesting:true选项与旧版模块解析器的交互方式中,已在vm2 3.11.1版本中修复。
Jiang表示:"对于首席安全官而言,这两个漏洞都值得高度关注。但第二个(NodeVM嵌套问题)可能是更多组织需要优先排查的。"
Socket研究人员指出,两个漏洞都能将沙箱中的JavaScript转变为对宿主系统的命令执行。区别在于受影响环境的范围:Node.js 25与WebAssembly的问题攻击面较窄,因为它依赖特定的vm2版本和特定的新版Node.js运行时行为;而NodeVM嵌套问题的影响范围可能更广,因为它涉及更多版本,且由部分开发者可能有意使用的配置模式触发。
Jiang补充说,这两个漏洞都揭示了一个更深层的问题:JavaScript沙箱本身难以做到绝对安全,运行时行为或配置上的细微差异可能导致重大安全后果。"第一个问题似乎与特定的Node.js 25/WebAssembly路径相关,第二个则是涉及NodeVM与nesting:true配置的逃逸问题。两种情况下,风险最高的都是那些运行不受信任JavaScript并认为vm2能有效隔离它的组织。相关应用开发团队应立即打补丁,并为沙箱工作负载增加更强的隔离措施。"
Sonatype高级安全研究员Adam Reynolds在邮件中表示,这些沙箱逃逸漏洞揭示了为何在受信任进程内对不受信任代码进行沙箱隔离是一种脆弱的安全模型。"一旦不受信任的代码在可访问凭据、密钥、底层文件系统、网络或具有部署权限的进程中运行,沙箱绕过很容易导致整个系统被攻陷。"
他还补充说,仅仅在依赖树中存在vm2并不足以使这些漏洞变得可利用。例如,攻击者通常需要具备在由存在漏洞的应用程序控制的vm2沙箱中执行特制JavaScript(以及CVE-2026-26956中特制WebAssembly)的能力。如果应用程序从未实例化vm2、仅将其用于内部可信脚本,或完全不允许攻击者控制代码执行,则即使存在该依赖,也可能没有实际可利用的攻击路径。
如果一个组织正在运行受vm2影响的应用程序,应立即进行升级。在升级完成前,可通过以下方式降低风险:避免使用Node.js 25运行时、在不受信任的沙箱中完全禁用或屏蔽WebAssembly,以及阻止用户控制的WASM编译与执行。
Reynolds还指出:"由于未来的运行时更新可能带来类似问题,vm2应被视为一种便捷的隔离层,而非硬性的安全边界。"
此外,Enderle Group的Robert Enderle建议,认真对待安全问题的IT领导者应停止依赖软件级沙箱来处理不受信任的代码,并着手将相关进程迁移至经过加固的Docker容器或V8 Isolate中。
Q&A
Q1:vm2沙箱逃逸漏洞CVE-2026-26956具体有哪些触发条件?
A:CVE-2026-26956目前已确认在Node.js 25.6.1版本上可被触发,且需要运行时支持WebAssembly异常处理和JSTag功能。最高风险场景是使用vm2 3.10.4版本运行在Node.js 25环境中,并允许攻击者控制的JavaScript代码传入VM.run()。Socket后续更新指出,该漏洞实际上影响3.10.5版本之前的所有vm2,范围涵盖所有暴露WebAssembly.JSTag接口的Node.js运行时,包括Node.js 24.x。
Q2:CVE-2026-44007和CVE-2026-26956两个漏洞有什么区别?
A:两个漏洞都能将沙箱中的JavaScript转变为对宿主系统的命令执行,但影响范围不同。CVE-2026-26956依赖特定vm2版本和Node.js 25/WebAssembly组合,攻击面相对较窄;CVE-2026-44007则是NodeVM嵌套配置问题(nesting:true选项与旧版模块解析器的交互),影响更多版本,触发条件是部分开发者可能有意使用的配置模式,因此受影响的组织范围更广,已在vm2 3.11.1版本中修复。
Q3:在vm2补丁未能立即安装时,有哪些临时缓解措施?
A:在完成升级前,可采取以下临时措施降低风险:避免使用Node.js 25运行时环境;在不受信任的沙箱中完全禁用或屏蔽WebAssembly;阻止用户控制的WASM编译与执行。此外,Socket也为暂时无法升级的开发者提供了独立补丁。从长远看,建议将不受信任代码的执行迁移至加固的Docker容器或V8 Isolate,不应将vm2视为硬性安全边界。
好文章,需要你的鼓励
机器人智能公司Inbolt将于2026年6月在芝加哥Automate展会上发布两项新能力:Inbolt机器人编程功能和扩展版机器人控制模块。新功能可让工程师直接基于CAD模型构建程序,结合视觉模型实时定位实体零件并自动调整运动路径,彻底消除传统调试中耗时数周的手动示教环节。此次更新还将原生支持安川机器人,使平台覆盖品牌扩展至六个。
浙江大学团队提出目标视角复现任务(TVR),测试AI主动导航至指定视角的能力,最强模型成功率仅12%,人类达93%,并验证了视觉示范学习与多轮强化学习的提升路径。
本文提供了一套完整的笔记本电脑深度清洁方案。硬件方面,介绍了如何用温和洗涤剂清洁机身、用微纤维布擦拭屏幕、用压缩空气清理键盘及清洁充电线的正确方法。软件方面,建议及时更新操作系统与驱动程序,删除冗余文件与临时下载内容,并通过开启Windows Storage Sense功能实现自动清理,同时将剩余文件整理归类,保持系统整洁高效运行。
这项研究提出"VLM即教师"框架,让视觉语言模型在视频生成推理时充当实时监考官,通过可微分奖励信号在线优化轻量LoRA模块,平均提升视频推理性能16.7分。