## 漏洞关键信息总结 ### 漏洞概述 | 项目 | 内容 | |:---|:---| | **漏洞名称** | Denial of Service (CPU Exhaustion) via crafted array-like objects | | **CVE编号** | CVE-2024-34064 | | **严重程度** | Moderate (5.9/10) | | **漏洞类型** | 拒绝服务(DoS)- CPU耗尽 | | **发现者** | Tomer Aberbach (@TomerAberbach) | **漏洞原理**:当序列化一个特殊构造的"类数组"对象(继承自 `Array.prototype` 但具有非常大的 `length` 属性)时,进程会进入密集循环,导致100% CPU占用并无限挂起。 ### 影响范围 | 项目 | 内容 | |:---|:---| | **受影响包** | `serialize-javascript` (npm) | | **受影响版本** | < 7.0.5 | | **安全版本** | 7.0.5 及更高版本 | **高危场景**: - 使用 `serialize-javascript` 序列化不受信任或用户控制的对象 - 同时存在 **原型链污染(Prototype Pollution)** 漏洞的应用 - 通过 YAML 反序列化处理不受信任数据的应用(可能被用于注入恶意对象) ### 修复方案 #### 官方修复 - **升级至 v7.0.5 或更高版本** 修复方式:将 `instanceof Array` 检查替换为 `Array.isArray()`,并使用 `Object.keys()` 进行稀疏数组检测。 #### 临时缓解措施(无法立即升级时) 1. 对传入 `serialize()` 函数的所有输入进行验证和清理 2. 确保环境已防护原型链污染攻击 3. 尽快升级至 v7.0.5 --- *注:页面中未包含POC代码或利用代码。*