嘶吼RoarTalk 02-02
vm2 Node.js沙箱库曝高危漏洞 可突破沙箱执行任意代码
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

近日,Node.js 沙箱库 vm2 曝出一个高危漏洞(CVE-2026-22709),攻击者可利用该漏洞突破沙箱限制,在底层主机系统上执行任意代码。

这款开源的 vm2 库能够创建安全执行环境,支持用户运行不受信任的 JavaScript 代码,且限制其访问文件系统,是实现代码隔离执行的常用工具。

vm2 历来被广泛应用于支持用户脚本执行的 SaaS 平台、在线代码运行工具、聊天机器人及各类开源项目中,仅在 GitHub 平台上,使用该库的项目就超 20 万个。不过因沙箱逃逸漏洞频发,该项目曾在 2023 年停止维护,且被判定为不适用于运行不受信任的代码。 

去年 10 月,项目维护者决定重启 vm2 项目,并发布 3.10.0 版本,该版本修复了当时已知的所有漏洞,同时保持 " 向下兼容至 Node 6 版本 " 的特性。

目前该库在 npm 平台上依旧拥有极高的人气,过去一年间,其周下载量稳定在 100 万次左右。

漏洞根源:数据清理机制存在疏漏

此次曝出的最新漏洞,根源在于 vm2 库未能对处理异步操作的 Promise 组件实现完善的沙箱隔离,导致无法确保代码始终在独立的隔离环境中执行。 

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 沙箱中触发该漏洞、实现沙箱逃逸,并在主机系统上执行命令。

已发布的漏洞利用片段

鉴于在受影响的 vm2 版本中,CVE-2026-22709 漏洞的利用方式极为简易,官方建议所有用户尽快将库版本升级至最新版。 

历史漏洞:沙箱逃逸问题屡发

vm2 此前也曾多次曝出高危沙箱逃逸漏洞,其中包括被披露的 CVE-2022-36067,攻击者利用该漏洞可突破隔离环境,在主机系统上执行命令。 

2023 年 4 月,研究人员发现另一同类漏洞(CVE-2023-29017),且相关利用程序随即被公开;同月晚些时候,研究人员又发布了 CVE-2023-30547 漏洞的利用程序,这也是影响 vm2 的又一个高危沙箱逃逸漏洞。 

其开发者表示,目前 vm2 的最新版本为 3.10.3,所有已披露的漏洞均在该版本中得到妥善修复。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

开源 saas平台 聊天机器人 javascript
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论