vm2 Node.js 库曝沙箱逃逸漏洞,可致任意代码执行

流行的 vm2 Node.js 库中被披露存在一个高危沙箱逃逸漏洞,若被成功利用,可导致攻击者在宿主操作系统上执行任意代码

该漏洞编号为 CVE-2026-22709,在通用漏洞评分系统(CVSS)中获得了 9.8 分(满分 10.0)的严重评级。

“在 vm2 3.10.0 版本中,攻击者可绕过对 Promise.prototype.then 和 Promise.prototype.catch 回调函数的净化处理,” vm2 维护者 Patrik Simek 称。”这将允许攻击者逃离沙箱限制并执行任意代码。”

vm2 是一个用于在安全沙箱环境中运行不可信代码的 Node.js 库,其原理是通过拦截和代理 JavaScript 对象,来阻止沙箱内的代码访问主机环境。

新发现的漏洞根源于该库对 Promise 处理器的净化机制存在缺陷,从而产生了一个逃逸路径,使得代码能在沙箱外部执行。

“关键在于,JavaScript 中的异步函数返回的是 globalPromise 对象,而非 localPromise 对象。而 globalPromise.prototype.then 和 globalPromise.prototype.catch 并未像 localPromise 的相关方法那样得到妥善净化,”Endor Labs 的研究员 Peyton Kennedy 和 Cris Staicu 解释道。

尽管 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 等多个漏洞。

2023年7月 CVE-2023-37903 的发现,曾促使 Simek 宣布该项目将终止维护。但相关表述现已从其 GitHub 仓库的最新 README 文件中删除。截至 2025 年 10 月,其安全页面也已更新,声明 vm2 3.x 版本正在积极维护中。

然而,vm2 的维护者亦承认,未来很可能还会出现新的绕过方法,因此强烈建议用户确保及时更新库版本,并考虑采用其他能提供更强隔离保证的可靠替代方案,例如 isolated-vm。

“与依赖原有存在缺陷的 vm 模型不同,vm2 的后续项目 isolated-vm 基于 V8 引擎的原生 Isolate 接口,提供了更为稳固的隔离基础。但即便如此,vm2 的维护者仍强调隔离至关重要,并实际建议采用 Docker 容器并在组件间实施逻辑隔离,” Semgrep 表示。

鉴于该漏洞危害严重,建议用户立即升级至最新版本 (3.10.3),此版本亦修复了其他沙箱逃逸问题。


消息来源: thehackernews

本文由 HackerNews.cc 翻译整理,封面来源于网络;

© 版权声明
THE END
你的支持是我们在网空安全路上的驱动力!
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情快捷回复

    暂无评论内容