CVE-2026-2950Lodash 版本 4.17.23 及更早版本在 _.unset 和 _.omit 函数中存在原型污染漏洞。此前针对 CVE-2025-13465 的修复方案仅针对字符串形式的键名进行了防护,未能有效过滤数组形式的路径参数。攻击者可以利用此绕过缺陷,通过传递数组包裹的路径段,从 Object.prototype、Number.prototype 等内置原型中删除属性。虽然该漏洞不允许覆盖原有行为,但删除关键的原型属性仍可能导致应用程序逻辑异常或拒绝服务。官方已在 4.18.0 版本中修复此问题。
该漏洞属于 JavaScript 原型污染的变种,核心在于 Lodash 库对路径解析的防御机制不完善。原型污染通常允许攻击者修改 JavaScript 对象的原型,进而影响所有继承该原型的对象。此前针对 CVE-2025-13465 的补丁主要通过检查字符串路径中是否包含 '__proto__' 等敏感键来防御。然而,Lodash 支持使用数组来表示对象路径(例如 ['constructor', 'prototype', 'key'])。当攻击者使用这种数组格式构造 Payload 时,能够绕过针对字符串的过滤检查。_.unset 和 _.omit 函数在处理路径时会递归遍历对象属性,最终定位到 Object.prototype 并执行删除操作。虽然该漏洞限制了属性的“覆盖”,但删除原型中的基础方法(如 toString 或 hasOwnProperty)会导致依赖这些方法的代码执行失败,从而引发安全风险。