CVE-2026-32723SandboxJS是一个JavaScript沙箱隔离库,广泛用于在多租户环境中隔离和执行不受信任的JavaScript代码。该漏洞存在于0.8.35之前的版本中,攻击者可以利用定时器机制绕过沙箱的执行配额限制。在多租户或并发沙箱场景下,恶意沙箱可以通过覆盖全局tick状态(currentTicks.current)来劫持其他沙箱的定时器回调执行,使其在自己的tick预算下运行。这将导致原始沙箱的执行配额监控(看门狗)失效,允许攻击者执行超出预期的代码量,可能造成资源耗尽或其他安全后果。
漏洞的根本原因在于SandboxJS使用了一个全局共享的tick状态对象currentTicks.current。当一个沙箱通过setTimeout或setInterval调度定时器时,定时器的回调函数在执行时引用的是这个全局状态,而不是创建该定时器的沙箱所关联的独立tick对象。在并发场景下,恶意沙箱可以在目标沙箱调度定时器之后、回调执行之前,覆盖currentTicks.current指向自己的tick对象。这样当定时器回调执行时,虽然代码逻辑属于目标沙箱,但执行配额检查是基于攻击者沙箱的tick对象进行的,从而绕过了目标沙箱设定的执行限制。攻击者可以利用此漏洞在共享环境中突破资源配额限制,导致拒绝服务或执行超出允许范围的计算。