CVE-2025-13204CVE-2025-13204是针对npm包expr-eval的一个高危原型污染(Prototype Pollution)漏洞。该漏洞允许攻击者通过JavaScript原型继承机制污染全局Object.prototype对象,从而可能在服务器端实现任意代码执行。expr-eval是一个用于在Node.js环境中进行数学表达式解析和求值的库,广泛应用于需要动态计算表达式的Web应用程序中。当该库与Express等Web框架的eval接口结合使用时,攻击者可以通过构造特殊的输入参数,利用原型链污染技术覆盖或修改JavaScript内置对象的原型属性,最终实现远程代码执行(RCE)攻击。此漏洞影响所有使用expr-eval库且允许用户输入表达式求值的应用场景,包括Web服务、API接口和在线计算器等。CVSS评分7.3属于高危级别,攻击复杂度低且无需认证即可利用。
原型污染是一种针对JavaScript对象原型链的攻击技术。在expr-eval库中,攻击者可以通过构造特殊的表达式输入来修改Object.prototype对象。例如,使用__proto__、constructor或prototype等特殊属性名,攻击者能够在表达式求值过程中向全局原型对象注入恶意属性。当应用程序的其他代码访问这些被污染的属性时,会触发预期之外的行为。在Web应用场景中,如果expr-eval被用于处理用户提交的数学表达式,攻击者可以构造类似{}.__proto__.shell='ls'的表达式来污染原型链。更进一步,通过污染toString方法或重写Object的某些核心方法,攻击者可以实现任意代码执行。该漏洞的利用前提是应用程序直接使用用户输入调用expr-eval的Parser或Expression.eval()方法,且未对输入进行充分的过滤和验证。修复方案为使用expr-eval-fork分支,该分支增加了对危险属性的过滤机制。