最新消息:关注人工智能 AI赋能新媒体运营

JavaScript沙箱库SandboxJS曝出沙箱逃逸漏洞,在特定情况下可触发远程代码执行

科技资讯 admin 浏览

开源JavaScript沙箱库SandboxJS披露重大漏洞CVE-2026-25881,攻击者若能在受害系统中执行沙箱内的不可信代码,可能通过沙箱逃逸篡改宿主程序的内置原型(Prototype),造成持久性的原型污染。当宿主应用程序后续将被污染的属性用于敏感调用点时,风险可能进一步升级为远程代码执行(RCE)。GitHub安全通报指出,受影响的包为NPM上的@nyariv/sandboxjs,0.8.31版本之前的所有版本均受此漏洞影响。

CVE-2026-25881被评定为严重等级,CVSS v3.1评分为9.1。漏洞根源在于SandboxJS使用了一个名为isGlobal的保护标志,试图阻止沙箱内代码修改全局对象或其原型。然而,当全局原型引用在数组字面量或对象字面量的创建过程中被传递和返回时,该保护标志可能在转换流程中丢失,导致原本应被拦截的原型写入操作得以绕过。也就是说,沙箱本应隔离宿主的内置原型,但在特定数据流路径下存在可被绕过的漏洞。

一旦攻击者能在沙箱内篡改宿主的内置原型,影响将不仅限于单次运算结果,而可能在同一个宿主进程中形成持续的状态污染。官方以Map.prototype和Set.prototype为例指出,不可信的沙箱代码可通过写入这些内置原型破坏隔离机制,进而影响同一宿主进程中后续执行的其他逻辑。该漏洞对采用沙箱执行用户脚本或外部规则的系统尤为危险,因为其安全假设通常建立在沙箱能完全阻断宿主状态被任意修改的基础之上。

宿主端原型污染本身可能影响同一进程中的后续逻辑。官方还提到,当宿主应用将被污染的属性值传入可执行系统命令等敏感调用点时,例如Node.js的child_process.execSync,风险可能进一步升级为RCE。

SandboxJS维护者已在0.8.31版本中修复该漏洞,用户应优先升级至0.8.31或更高版本。若短期内因依赖限制无法升级,官方也提供了纵深防御建议,例如在宿主程序执行不可信代码前冻结内置原型,以降低被篡改的风险。但该措施可能导致兼容性问题,实施前需在测试环境中评估对现有行为的影响。