流行的vm2 Node.js库中发现严重的沙箱逃逸漏洞,如被成功利用,可能允许攻击者在底层操作系统上运行任意代码。
这个被追踪为CVE-2026-22709的漏洞在CVSS评分系统中得分高达9.8分(满分10.0分)。
vm2维护者Patrik Simek表示:"在vm2的3.10.0版本中,Promise.prototype.then和Promise.prototype.catch回调函数的清理机制可以被绕过。这使得攻击者能够逃逸沙箱并运行任意代码。"
vm2是一个Node.js库,用于在安全的沙箱环境中运行不可信代码,通过拦截和代理JavaScript对象来防止沙箱代码访问主机环境。
新发现的缺陷源于该库对Promise处理程序的不当清理,这创造了一个逃逸向量,导致在沙箱边界之外执行任意代码。
Endor Labs研究员Peyton Kennedy和Cris Staicu解释说:"关键发现是JavaScript中的异步函数返回的是globalPromise对象,而不是localPromise对象。由于globalPromise.prototype.then和globalPromise.prototype.catch没有得到适当的清理(不像localPromise那样)。"
虽然CVE-2026-22709已在vm2版本3.10.2中得到修复,但这是近年来困扰该库的一系列沙箱逃逸漏洞中的最新一个。这包括CVE-2022-36067、CVE-2023-29017、CVE-2023-29199、CVE-2023-30547、CVE-2023-32314、CVE-2023-37466和CVE-2023-37903。
CVE-2023-37903在2023年7月的发现也促使Simek宣布该项目将被停止。然而,这些引用已从GitHub存储库上最新的README文件中删除。安全页面也在2025年10月更新,提到vm2 3.x版本正在积极维护中。
不过,vm2的维护者也承认未来可能会发现新的绕过方法,敦促用户确保保持库的更新,并考虑其他强大的替代方案,如isolated-vm,以获得更强的隔离保证。
Semgrep表示:"vm2的继任者isolated-vm不依赖有问题的vm模型,而是依赖V8的原生Isolate接口,这提供了更坚实的基础。但即便如此,vm2的维护者仍强调隔离的重要性,实际上建议使用Docker并在组件之间进行逻辑分离。"
鉴于该漏洞的严重性,建议用户更新到最新版本(3.10.3),该版本修复了额外的沙箱逃逸问题。
Q&A
Q1:vm2是什么?有什么作用?
A:vm2是一个Node.js库,用于在安全的沙箱环境中运行不可信代码。它通过拦截和代理JavaScript对象来防止沙箱代码访问主机环境,为开发者提供安全的代码执行环境。
Q2:CVE-2026-22709漏洞有多严重?
A:CVE-2026-22709是一个严重的沙箱逃逸漏洞,CVSS评分高达9.8分(满分10.0分)。该漏洞源于对Promise处理程序的不当清理,攻击者可利用它逃逸沙箱并在底层操作系统上运行任意代码。
Q3:如何防护vm2库的安全风险?
A:建议用户立即更新到最新版本3.10.3,该版本修复了沙箱逃逸问题。考虑到vm2历史上存在多个类似漏洞,维护者建议考虑使用isolated-vm等更安全的替代方案,或使用Docker进行组件间逻辑分离。
好文章,需要你的鼓励
FORTIS是专门测量AI代理"越权行为"的基准测试,研究发现十款顶尖模型普遍选择远超任务需要的高权限技能,端到端成功率最高仅14.3%。
谷歌在Android Show发布会上宣布,将Gemini更深度整合至Android系统,推出名为"Gemini Intelligence"的升级功能。该功能可跨应用处理日常任务,包括自动填写表单、安排日程、生成购物清单及自定义小组件等,无需用户频繁切换应用。此外,Gboard新增"Rambler"功能,可自动过滤语音输入中的口误和填充词。Gemini Intelligence将率先登陆三星Galaxy和谷歌Pixel手机,并支持Android Auto、Wear OS及智能眼镜。
荷兰Nebius团队提出SlimSpec,通过低秩分解压缩草稿模型LM-Head的内部表示而非裁剪词汇,在保留完整词汇表的同时将LM-Head计算时间压缩至原来的五分之一,端到端推理速度超越现有方法最高达9%。