Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
AC:H reflects the advisory's explicit 'very specific and unlikely application layer code' prerequisite; all other metrics are consistent with the provided NVD vector.
Primary rating from Vendor (https://github.com/remix-run/react-router).
CVSS VectorVendor: https://github.com/remix-run/react-router
Lifecycle Timeline
3Blast Radius
ecosystem impact- 15 npm packages depend on react-router (5 direct, 10 indirect)
Ecosystem-wide dependent count for version 6.4.0.
DescriptionCVE.org
If application code allows attacker supplied input to overwrite certain aspects of errors caught by the SSR process, then it was possible for attacker to trigger unexpected constructor execution on the client which would trigger outbound network traffic. This is only possible with very specific (and unlikely) application layer code.
> [!NOTE] > This does not impact your application if you are using Declarative Mode. This only impacts Framework Mode and Data Mode applications doing manual SSR/hydration
AnalysisAI
Arbitrary constructor injection in React Router's SSR hydration deserializer (deserializeErrors()) affects npm/react-router versions 6.4.0 through 7.17.x when used in Framework Mode or Data Mode with manual SSR/hydration. When application code permits attacker-supplied input to overwrite the __type or __subType fields embedded in server-side serialized error objects, the client-side hydration process can be manipulated into instantiating arbitrary constructors available on the global window object, triggering unintended outbound network requests from the victim's browser. No public exploit code or CISA KEV listing exists at time of analysis; a vendor-released patch is available in version 7.18.0.
Technical ContextAI
React Router's SSR hydration pipeline serializes server-side errors into the window.__staticRouterHydrationData payload, which the client-side runtime then deserializes during hydration. Prior to the fix, the undocumented deserializeErrors() function used __type and __subType string fields from this payload to look up and invoke constructor functions present on the global window object - a classic unsafe reflection pattern (CWE-470: Use of Externally-Controlled Input to Select Classes or Code). If attacker-controlled input could reach and overwrite these fields in the server-rendered error object, the client would instantiate an arbitrary class (such as XMLHttpRequest or a custom constructor on window), producing unintended outbound network traffic. The PR diff confirms two distinct remediation paths: Framework Mode now uses turbo-stream for safe error serialization, while Data Mode removes the undocumented custom serialization entirely. The affected package is pkg:npm/react-router, versions >= 6.4.0 and < 7.18.0.
RemediationAI
Upgrade react-router to version 7.18.0 or later, which is the vendor-confirmed patched release. The fix is delivered via commit 9d22943fd46c8ae4b08236425fa3549e10e9ad1a and PR #15175 (https://github.com/remix-run/react-router/pull/15175). For teams that cannot upgrade immediately, audit whether any application-layer code allows attacker-controlled request data (URL parameters, form fields, headers) to flow into the properties of server-side error objects before SSR serialization; removing or sanitizing that pathway eliminates the precondition for exploitation. Migrating from Framework Mode or Data Mode to Declarative Mode also removes the vulnerable code path entirely, but this is a significant architectural refactor and should be treated as a long-term option rather than an emergency workaround. There are no known side effects to upgrading to 7.18.0 beyond the removal of the previously exported but undocumented UNSAFE_deserializeErrors symbol.
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.0 | Not-Affected |
| SUSE Linux Enterprise Server 16.1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Not-Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Not-Affected |
| SUSE Manager Client Tools 15 | Affected |
| SUSE Manager Client Tools for SLE 15 | Affected |
| SUSE Multi-Linux Manager Client Tools for SLE 15 | Affected |
| openSUSE Leap 16.0 | Affected |
| openSUSE Leap 16.0 | Affected |
| openSUSE Leap 16.0 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Proxy Module 4.3 | Affected |
| SUSE Enterprise Storage 6 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Module for SAP Applications 15 SP6 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Manager Proxy Module 4.1 | Affected |
| SUSE Manager Proxy Module 4.2 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
| SUSE Multi Linux Manager Tools SLE-15 | Affected |
| ses/7.1/ceph/prometheus-server ses/7/ceph/prometheus-server suse/multi-linux-manager/5.2/x86_64/monitoring-prometheus | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-49628
GHSA-337j-9hxr-rhxg