CVE-2026-33994Locutus是一个旨在为JavaScript提供其他编程语言标准库的npm包。在2.0.39至3.0.25之前的版本中,其`parse_str`函数存在严重的原型污染漏洞。攻击者可以通过覆盖`RegExp.prototype.test`并传递特制的查询字符串来绕过原型污染保护机制,进而污染`Object.prototype`。该漏洞源于对CVE-2026-25521的不完整修复,将原本基于`String.prototype.includes`的守卫替换为`RegExp.prototype.test`,但后者同样可被劫持。建议用户尽快升级至安全版本以防止潜在攻击。
该漏洞发生在Locutus库的`parse_str`函数中,属于典型的JavaScript原型污染漏洞。开发者在修复CVE-2026-25521时,试图通过引入安全守卫来防止恶意参数污染`Object.prototype`。原修复方案使用`String.prototype.includes`进行检查,但因其可被劫持而存在缺陷。新的补丁尝试使用`RegExp.prototype.test`作为替代方案。然而,JavaScript中的`RegExp.prototype.test`本身是一个可写的原型方法。攻击者可以先劫持`RegExp.prototype.test`函数,使其返回预期的假阳性结果(例如始终返回false),从而绕过新建立的安全检查。随后,当攻击者向`parse_str`函数传入精心构造的查询字符串(如`__proto__[payload]=value`)时,由于守卫机制失效,恶意属性将被成功添加到`Object.prototype`上。这种原型污染可能导致应用程序逻辑被篡改,甚至引发远程代码执行等严重后果。