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