CVE-2025-13465CVE-2025-13465是Lodash库中的一个原型污染漏洞,影响版本从4.0.0到4.17.22。Lodash是一个广泛使用的JavaScript实用工具库,提供了大量的函数式编程工具函数。该漏洞存在于_.unset和_.omit函数中,攻击者可以通过构造恶意的路径参数,利用这些函数删除JavaScript全局对象(如Object.prototype)上的关键方法或属性。原型污染攻击是一种针对JavaScript运行时的攻击方式,当应用程序处理不可信的JSON输入并将其合并到对象中时,攻击者可以通过修改原型链来影响所有对象的行为。虽然该漏洞不允许攻击者直接覆盖原型方法的原始行为,但它允许删除关键属性,这可能导致应用程序出现异常行为,如拒绝服务或绕过安全检查。由于Lodash被广泛应用于各种Web应用、Node.js服务器端项目以及前端框架中,此漏洞可能影响大量线上系统。
该漏洞的根本原因在于Lodash的_.unset和_.omit函数在处理路径参数时缺乏足够的验证。攻击者可以传递包含__proto__或constructor属性的路径字符串,如['__proto__','toString']或['constructor','prototype','toString'],这些路径会被解析并执行删除操作。具体来说,_.unset函数使用路径分隔符(如点号或方括号)来遍历对象属性,当路径包含原型链相关的特殊属性名时,函数会直接修改全局Object.prototype对象。由于JavaScript的原型继承机制,修改Object.prototype会影响所有对象实例。攻击者可以利用此漏洞删除Object.prototype上的重要方法(如toString、valueOf、hasOwnProperty等),导致依赖这些方法的代码出现运行时错误。例如,当代码尝试调用obj.toString()时会抛出TypeError异常,从而实现拒绝服务攻击。此外,删除某些安全检查方法可能帮助攻击者绕过输入验证逻辑。