最新消息:关注人工智能 AI赋能新媒体运营

停止维护两年后,vm2原作者重启项目,修复CVE-2026-22709等重大沙箱逃逸漏洞

科技资讯 admin 浏览

Node.js 生态系统中广泛使用的 JavaScript 沙箱库 vm2,近期被披露存在严重沙箱逃逸漏洞 CVE-2026-22709,该漏洞 CVSS 风险评分为 9.8,属于严重(Critical)级别。攻击者可通过特定 JavaScript 代码触发漏洞,绕过 vm2 的沙箱限制,在宿主环境中执行任意代码。vm2 维护团队于 2025 年 10 月重启了已停更近两年的项目,并建议用户升级至 vm2 3.10.3 或更高版本,以降低被利用的风险。

vm2 是一款用于 Node.js 环境的沙箱工具,旨在在同一 Node.js 进程中限制不可信 JavaScript 代码对系统资源的访问,常用于在线代码执行平台、插件机制和可自定义脚本等功能场景。根据 NPM 平台统计,过去一年间,vm2 每周下载量长期维持在约 100 万次,表明该库仍被大量项目广泛使用。

vm2 项目维护者兼原作者 Patrik Simek 在 GitHub 安全通报中指出,CVE-2026-22709 漏洞与 vm2 处理 Promise.prototype.then 和 Promise.prototype.catch 回调函数的净化机制有关。在 vm2 3.10.0 及更早版本中,相关回调函数的净化流程可被绕过,导致攻击者能够突破沙箱隔离,执行任意代码。

针对该漏洞,vm2 项目在后续版本中逐步修复。开发者说明,3.10.1 版本仅能部分缓解 CVE-2026-22709 的沙箱逃逸问题,而随后发布的 3.10.2 版本进一步收紧了修复逻辑,防止攻击者通过其他方式绕过防护机制。开发者还提供了演示代码,说明在未完整修复的情况下,漏洞如何被触发并在宿主系统上执行指令。

维护者确认,3.10.3 版本已完成所有已知安全漏洞的修复。

事实上,vm2 过去数年多次被发现存在沙箱逃逸漏洞,包括 CVE-2022-36067、CVE-2023-29017 和 CVE-2023-30547。vm2 作者 Patrik Simek 曾于 2023 年表示,vm2 在设计上难以作为可靠的安全边界,因此曾将项目标记为停止维护。但他在 2025 年 10 月宣布重启项目时指出,考虑到 vm2 仍被大量使用,且缺乏功能相似的替代方案,决定继续维护并修复已知漏洞,试图通过改进架构与开发流程,降低实际使用中的安全风险。Patrik Simek 于今年 2 月向媒体表示,上述所有漏洞均已通过 vm2 3.10.3 版本完成修复。

vm2 官方文档与 NIST 均提醒:应用层沙箱无法作为完整安全边界

vm2 官方文档明确指出,该库不应被视为能够提供完整安全隔离的机制,无法保证在所有场景下防御恶意行为。这一定位与 NIST 在安全实践指南中的观点一致。NIST 指出,应用层沙箱本身难以构成完整安全边界,对于需要执行不可信代码的服务,仍应谨慎评估使用场景,并根据需求采用容器、虚拟机等操作系统级隔离机制,或其他具备更严格安全边界的执行环境,以降低单一防护机制失效带来的整体风险。