流行的 vm2 NodeJS 库中发现严重沙箱逃逸漏洞

2026-01-28 10:10:01 0 73

流行的 vm2 NodeJS 库中发现严重沙箱逃逸漏洞

vm2 Node.js 沙箱库中存在一个严重漏洞(编号为 CVE-2026-22709),允许攻击者逃逸沙箱并在底层主机系统上执行任意代码。

开源的 vm2 库创建了一个安全上下文,允许用户执行不受信任的 JavaScript 代码,该代码无法访问文件系统。

vm2 过去常用于支持用户脚本执行的 SaaS 平台、在线代码运行器、聊天机器人和开源项目,在 GitHub 上已有超过 20 万个项目使用过它。然而,由于反复出现沙箱逃逸漏洞,该项目已于 2023 年停止开发,并被认为不适合运行不受信任的代码。

去年十月,维护者 Patrik Šimek 决定重启 vm2 项目,并发布了 3.10.0 版本,该版本解决了当时已知的所有漏洞,并且“仍然兼容 Node 6”。

该库在 npm 平台上持续保持着很高的人气, 在过去一年中,每周的下载量都稳定在 100 万次左右。

消毒不当
最新的漏洞源于 vm2 未能正确沙箱化“Promises”(处理异步操作的组件),以确保代码执行仅限于隔离环境的上下文中。

虽然 vm2 会对附加到其自身内部 Promise 实现的回调进行清理,但异步函数返回的全局 Promise 的.then() 和.catch()回调并没有得到正确的清理。

项目维护者表示: “在 vm2 版本 3.10.0 中,Promise.prototype.then和 Promise.prototype.catch回调清理可以被绕过”,并补充说,“这使得攻击者能够逃逸沙箱并运行任意代码。”

据开发者称,vm2 版本 3.10.1 部分解决了 CVE-2026-22709 沙箱逃逸问题,而在随后的 3.10.2 更新中,开发者加强了修复,以避免潜在的绕过漏洞。

开发者还分享了代码,演示了如何在 vm2 沙箱中触发 CVE-2026-22709 以逃逸沙箱并在主机系统上执行命令。



鉴于CVE-2026-22709在易受攻击的 vm2 版本中很容易被利用,建议用户尽快升级到最新版本。

此前报道的 vm2 中存在的严重沙箱逃逸漏洞包括Oxeye 研究人员披露的CVE-2022-36067 。利用该漏洞可以逃逸隔离环境并在宿主机系统上运行命令。

2023年4月,一个类似的漏洞被发现,编号为CVE-2023-29017,并发布了相应的漏洞利用程序。同月晚些时候,研究员李承铉(SeungHyun Lee)发布了针对CVE-2023-30547的漏洞利用程序,这是另一个影响vm2的严重沙箱逃逸漏洞。

Šimek 告诉 BleepingComputer,“所有已披露的漏洞都在 vm2 版本 3.10.3(目前最新版本)中得到了妥善修复”。

关于作者

alanbit9篇文章6篇回复

评论0次

要评论?请先  登录  或  注册