CVE-2026-34077: Denial of Service and Unsafe Deserialization in React Router Single Fetch
Vulnerability ID: CVE-2026-34077
CVSS Score: 7.5
Published: 2026-06-04
React Router and the underlying turbo-stream vendor library contain a vulnerability allowing remote unauthenticated attackers to trigger a Denial of Service (DoS) or potentially client-side Cross-Site Scripting (XSS) due to unsafe dynamic deserialization of streaming error payloads.
TL;DR
A dynamic object instantiation flaw in turbo-stream allows unauthenticated remote attackers to crash React Router or Remix applications via crafted payloads that instantiate non-constructor objects or cause out-of-memory errors.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-770
- Attack Vector: Network
- CVSS Score: 7.5
- EPSS Score: 0.0004 (12.33 percentile)
- Impact: Denial of Service (DoS) / Process Crash
- Exploit Status: Proof-of-Concept / Theoretical
- CISA KEV Status: Not Listed
Affected Systems
- react-router
- turbo-stream
- Remix
-
react-router: >= 7.0.0, < 7.14.0 (Fixed in:
7.14.0) -
react-router (RSC context): >= 7.7.0, < 7.13.2 (Fixed in:
7.13.2) -
turbo-stream: < 3.0.0 (Fixed in:
3.0.0)
Code Analysis
Commit: 5981192
Fix dynamic error serialization in turbo-stream by strictly instantiating standard Error objects and stripping the error constructor dynamic lookup
case TYPE_ERROR:
- const [, message, errorType] = value;
- let error =
- errorType && globalObj && globalObj[errorType]
- ? new globalObj[errorType](message)
- : new Error(message);
+ const [, message] = value;
+ let error = new Error(message);
Mitigation Strategies
- Upgrade react-router to version 7.14.0 or above
- Ensure nested dependency turbo-stream is resolved to 3.0.0 or above
- Employ rate limiting on single-fetch and RSC streaming routes
- Filter incoming HTTP streams for suspicious or unverified error names
Remediation Steps:
- Open your application's package.json file
- Update the 'react-router' dependency to '^7.14.0' or the respective patched version
- Execute your package manager's update command (e.g., 'npm update react-router' or 'yarn upgrade react-router')
- Verify the resolution of 'turbo-stream' to version '^3.0.0' or higher within your package lockfile
- Deploy the updated application to staging, validating that streaming endpoints resolve correctly without exceptions
- Roll out the patched build to production environments
References
- GHSA-rxv8-25v2-qmq8
- NVD - CVE-2026-34077
- Vulnerable Source Code - Flatten
- Vulnerable Source Code - Unflatten
Read the full report for CVE-2026-34077 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)