IPBUF安全漏洞报告
English
CVE-2026-44000 CVSS 6.5 中危

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

披露日期: 2026-05-13

漏洞信息

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

相关标签

沙箱逃逸Node.jsvm2CVE-2026-44000

漏洞概述

vm2是Node.js的一个开源沙箱库。在3.11.0版本之前,该组件存在沙箱边界违规漏洞。攻击者可以通过主机Promise的解析机制,将主机对象的身份引入沙箱环境。这使得沙箱内的恶意代码能够直接与主机对象交互,包括利用主机端的WeakMap进行身份检查或从沙箱内部变更主机对象状态,从而破坏了沙箱的隔离性,导致潜在的安全风险。

技术细节

该漏洞源于vm2在处理Promise解析时的逻辑缺陷。当主机端的Promise解析为一个主机对象并暴露给沙箱时,Promise的fulfillment wrapper内部使用了`ensureThis()`方法。如果未找到对应的原型映射,`ensureThis()`会直接返回原始的主机对象,而不是通过更严格的跨域转换路径(如`from()`或proxy包装)进行隔离处理。因此,攻击者可以利用这一机制,构造特定的Promise传递给沙箱,使得沙箱代码能够获取并操作主机对象的引用,进而绕过沙箱的安全限制,实现读取主机内存数据或修改主机状态的效果。

攻击链分析

STEP 1
Reconnaissance
识别目标应用是否使用了存在漏洞的vm2版本(< 3.11.0)。
STEP 2
Payload Preparation
构造恶意脚本,利用Promise解析机制,尝试将主机对象引用泄漏至沙箱。
STEP 3
Execution
将恶意脚本输入到vm2沙箱环境中执行。
STEP 4
Sandbox Escape
触发Promise解析,通过.then()回调获取主机对象的直接引用,绕过隔离边界。
STEP 5
Impact
利用泄漏的主机对象引用读取敏感信息或修改主机环境状态。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const {VM} = require('vm2'); const vm = new VM(); // Create a sensitive host object const sensitiveHostObj = { secret: 'This_is_host_secret' }; // Create a host Promise that resolves to the host object const hostPromise = Promise.resolve(sensitiveHostObj); // Expose the promise to the sandbox vm.run(` // The sandbox receives the promise hostPromise.then(leakedObj => { // Sandbox can now access the host object directly console.log('[+] Escaped Sandbox! Leaked Data:', leakedObj.secret); // Sandbox can mutate host object state leakedObj.secret = 'PWNED_BY_SANDBOX'; }); `);

影响范围

vm2 < 3.11.0

防御指南

临时缓解措施
在未升级前,建议严格限制传入沙箱的代码权限,避免将主机端的Promise对象直接传递给沙箱上下文。考虑使用其他更安全的安全隔离方案(如isolated-vm)作为替代。

参考链接

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