CVE-2025-64718CVE-2025-64718是js-yaml库中的一个高危安全漏洞,属于原型污染(Prototype Pollution)类型。该漏洞影响js-yaml 4.1.1之前和3.14.2之前的所有版本。js-yaml是一款广泛应用于Node.js和浏览器的JavaScript YAML解析器和序列化工具,被众多开源项目和商业应用依赖。漏洞根源在于解析YAML文档时,攻击者可以通过在YAML数据中注入__proto__属性来修改JavaScript对象的原型链。当应用程序将解析后的YAML对象合并到其他对象或进行属性拷贝操作时,原型污染会导致意想不到的安全问题,可能造成应用程序逻辑被篡改、拒绝服务或敏感数据泄露。所有使用js-yaml解析不可信YAML文档的应用程序都可能受到此漏洞影响。CVSS 3.1评分5.3(中等严重程度),攻击复杂度低,无需认证和用户交互即可利用,但影响范围仅限于数据完整性的低程度损害。
js-yaml在解析YAML文档时存在原型污染漏洞。漏洞产生的根本原因是库在处理包含特殊属性名(如__proto__、constructor、prototype)的YAML键时没有进行充分的安全校验。攻击者构造恶意YAML输入,利用YAML规范中允许使用特殊键的特性,当js-yaml解析这类文档时,会将这些特殊键直接赋值到解析结果对象中。在JavaScript中,__proto__属性指向对象的原型,通过修改该属性可以动态改变对象继承的属性和方法。当应用程序后续对解析结果进行对象合并、深拷贝或属性迭代等操作时,被污染的原型属性会传播到其他对象,导致原型链被篡改。攻击者可以利用此漏洞注入或覆盖应用程序原型对象上的关键属性和方法,从而执行任意代码、绕过安全检查或造成应用程序异常行为。漏洞影响所有主流JavaScript运行时环境,包括Node.js和浏览器环境。