漏洞详情
包管理器 npm
受影响包
happy-dom (npm)
受影响版本
>= 19.0.0, < 20.0.2
已修复版本
20.0.2
描述
摘要
针对 GHSA-37j7-fg3j-429f 提出的、用于在 happy-dom 中执行不可信代码时禁用 eval/Function 的缓解措施并不充分,因为它仍然允许原型污染有效载荷。
详细信息
不可信脚本和应用程序的其余部分仍在同一个 Isolate/进程中运行,因此攻击者可以部署原型污染有效载荷来劫持重要引用,如下例中的 process,或者通过翻转对未定义属性的检查来劫持控制流。可能还有其他有效载荷允许通过(通用)小工具来操纵 require(参见:https://www.usenix.org/system/files/usenixsecurity23-shcherbakov.pdf)。
概念验证 (PoC)
攻击者可以污染内置对象,如 Object.prototype.hasOwnProperty(),以在运行时获取重要引用,例如 process。通过这种方式,攻击者可能能够通过 spawn() 执行任意命令,如下例所示。
|
|
影响 通过突破 Node.js 的 vm 隔离实现任意代码执行。
建议的紧急措施
用户可以通过冻结全局作用域中的内置对象来防御与上述 PoC 类似的攻击。但是,即使没有原型污染的能力,不可信代码可能仍然能够检索全局作用域中可用的各种信息并通过 fetch() 将其外泄。更不用说共享进程/隔离区引起的侧信道了。建议迁移到 isolated-vm。
致谢 Endor Labs 安全研究团队的 Cris(他在 JavaScript 沙箱方面有丰富的工作经验)提交了此公告。
引用
- GHSA-qpm2-6cq5-7pq5
- https://nvd.nist.gov/vuln/detail/CVE-2025-62410
- capricorn86/happy-dom@f4bd4eb
严重性
CVSS 总体评分:9.4(严重)
CVSS v4 基础指标 CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
缺陷
弱点
- CWE-1321 - 对对象原型属性修改控制不当(原型污染)
- 产品从上游组件接收指定要初始化或更新对象属性的输入,但没有适当控制对象原型属性的修改。