概述
GitHub安全公告数据库中的CVE-2025-62410披露了Happy-DOM(一个用于服务器端测试的DOM实现)中的一个严重安全漏洞。该漏洞的核心在于,通过--disallow-code-generation-from-strings参数来禁用eval/Function以隔离不受信任代码的缓解措施并不充分。
漏洞详情
漏洞本质:不受信任的脚本与应用程序的其余部分仍在同一个Isolate/进程中运行,攻击者可以部署原型污染(Prototype Pollution)有效载荷,劫持重要引用(如下例中的"process"),或通过翻转未定义属性的检查来劫持控制流。
潜在攻击方式:可能还存在其他允许操纵require的有效载荷,例如通过(通用)小工具(gadgets)。相关技术可参考论文《Silent Spring: Prototype Pollution Leads to Remote Code Execution in Node.js》(USENIX Security 2023)。
概念验证(PoC)
攻击者可以污染内置对象(如Object.prototype.hasOwnProperty()),在运行时获取重要引用(例如"process")。通过这种方式,攻击者可能能够执行任意命令,如下例通过spawn()实现。
|
|
影响
通过破坏Node.js的vm隔离实现任意代码执行。
建议的立即行动
用户可以冻结全局作用域中的内置对象,以防御类似于上述PoC的攻击。然而,不受信任的代码可能仍然能够获取全局作用域中可用的各种信息,并通过fetch()将其外泄,即使没有原型污染能力。更不用说由共享进程/Isolate引起的侧信道攻击。因此,建议迁移到isolated-vm。
附加信息
此安全公告由Endor Labs安全研究团队的Cris提交,他在JavaScript沙箱化方面有广泛的工作经验。
参考链接
- GHSA-qpm2-6cq5-7pq5
- https://nvd.nist.gov/vuln/detail/CVE-2025-62410
- capricorn86/happy-dom@f4bd4eb
安全元数据
- CVE ID: CVE-2025-62410
- GHSA ID: GHSA-qpm2-6cq5-7pq5
- 漏洞包: npm上的happy-dom
- 受影响版本: >= 19.0.0, < 20.0.2
- 已修复版本: 20.0.2
- 严重等级: 严重(CVSS 4.0 评分 9.4)
- 弱点枚举: CWE-1321 - 对对象原型属性的控制不当修改(‘原型污染’)