CVE-2026-23830
SandboxJS 存在通过未受保护的 AsyncFunction 构造函数实现的沙箱逃逸漏洞
- 已发布
- 2026年1月27日
- 已更新
- 2026年1月28日
- 分配 CNA
- GitHub_M
- 观察到的证据
- 2026年8月25日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 68.5%
- 型号日期
- 2026年10月15日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
SandboxJS 是一个 JavaScript 沙箱库。0.8.26 之前的版本存在沙箱逃逸漏洞,原因是 `AsyncFunction` 未在 `SandboxFunction` 中被隔离。该库试图通过将全局 `Function` 构造函数替换为安全的沙箱化版本(`SandboxFunction`)来对代码执行进行沙箱化。这在 `utils.ts` 中通过在一个用于查找的映射中将 `Function` 映射到 `sandboxFunction` 来处理。然而,在 0.8.26 版本之前,该库未包含 `AsyncFunction`、`GeneratorFunction` 和 `AsyncGeneratorFunction` 的映射。这些构造函数不是全局属性,但可以通过实例的 `.constructor` 属性访问(例如,`(async () => {}).constructor`)。在 `executor.ts` 中,属性访问得到处理。当沙箱内运行的代码访问异步函数上的 `.constructor`(沙箱允许创建该函数)时,`executor` 会检索该属性值。由于 `AsyncFunction` 不在安全替换映射中,`executor` 会返回实际的宿主原生 `AsyncFunction` 构造函数。JavaScript 中的函数构造函数(如 `Function`、`AsyncFunction`)会创建在全局作用域中执行的函数。通过获取宿主的 `AsyncFunction` 构造函数,攻击者可以创建一个完全在沙箱上下文之外执行的新的异步函数,从而绕过所有限制并获得对宿主环境的完全访问权限(远程代码执行)。0.8.26 版本修复了此漏洞。
来源
生成并投递针对 CVE-2026-23830(一个 SandboxJS 逃逸漏洞)的漏洞利用载荷,支持盲注带外(OOB)数据外泄模式和本地 calc 概念验证(PoC)模式。支持 HTTP/HTTPS 监听器,并生成压缩后的 JavaScript 载荷。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。