CVE-2026-35209defu是一款用于递归分配默认属性的软件。在6.1.5版本之前,该软件存在原型污染漏洞。若应用程序将未经净化的用户输入(如解析的JSON请求体、数据库记录或不受信任源的配置文件)作为`defu()`的第一个参数,攻击者可构造包含`__proto__`键的恶意负载。由于内部函数使用`Object.assign`,会触发setter替换对象原型,导致绕过安全防护并篡改合并结果,影响应用程序完整性。
该漏洞源于defu库内部`_defu`函数的实现机制。在受影响版本中,函数使用`Object.assign({}, defaults)`来复制默认对象。`Object.assign`方法在处理属性复制时,会调用属性的setter。当攻击者传入一个包含`__proto__`键的恶意对象时,`Object.assign`会将该键视为对象原型的setter,从而将结果对象的`[[Prototype]]`替换为攻击者控制的值。这导致从被污染原型继承的属性会绕过现有代码中针对`__proto__`键的`for...in`循环安全防护,最终注入到合并结果中。修复版本6.1.5通过引入对象展开语法`{ ...defaults }`替代`Object.assign`,利用`[[DefineOwnProperty]]`语义操作,避免了触发`__proto__` setter,从而有效阻断了原型污染攻击路径。