CVE-2026-4800Lodash是一个广泛使用的JavaScript实用工具库。CVE-2026-4800是该库中_.template函数的安全绕过漏洞。尽管之前修复了变量选项的验证,但options.imports键名未经验证直接传递给Function()构造函数。此外,assignInWith合并imports时会枚举继承属性,导致原型污染对象被传入Function。攻击者可利用此漏洞在模板编译阶段注入并执行任意代码。
该漏洞的核心在于Lodash的_.template函数对options.imports键名的验证缺失。虽然针对CVE-2021-23337的修复增加了对variable选项的验证,但并未对options.imports的键名应用相同的逻辑,导致这些键名直接流向危险的Function()构造函数。攻击者若能控制imports的键名,即可注入带有默认参数的恶意表达式,在模板编译时被执行。此外,_.template内部使用assignInWith方法合并imports对象,该方法通过for..in循环枚举属性,这会将Object.prototype上的属性也一并拷贝。若攻击者能通过其他污染源攻击Object.prototype,这些被污染的键值将通过imports传递给Function(),进而导致代码执行。这种双重利用方式使得该漏洞在特定环境下极易被利用。