Skip to main content

React Router EUVDEUVD-2026-49628

| CVE-2026-53666 MEDIUM
Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') (CWE-470)
2026-07-23 https://github.com/remix-run/react-router GHSA-337j-9hxr-rhxg
6.1
CVSS 3.1 · Vendor: https://github.com/remix-run/react-router
Share

Severity by source

Vendor (https://github.com/remix-run/react-router) PRIMARY
6.1 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
vuln.today AI
4.7 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
SUSE
MEDIUM
qualitative
Red Hat
6.1 MEDIUM
qualitative

Primary rating from Vendor (https://github.com/remix-run/react-router).

CVSS VectorVendor: https://github.com/remix-run/react-router

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 23, 2026 - 20:02 vuln.today
Analysis Generated
Jul 23, 2026 - 20:02 vuln.today
CVE Published
Jul 23, 2026 - 19:34 github-advisory
MEDIUM 6.1

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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.

Vendor 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

Share

EUVD-2026-49628 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy