CVE-2026-53666
Grafana vulnerability analysis and mitigation

Overview

CVE-2026-53666 is an arbitrary client-side constructor injection vulnerability in React Router's Server-Side Rendering (SSR) hydration process. It affects react-router versions 6.4.0 through 7.17.0 (inclusive) and was disclosed on July 23, 2026 via a GitHub Security Advisory. The vulnerability allows an attacker to trigger unexpected constructor execution on the client side, potentially causing outbound network requests, but only under very specific application-layer conditions. It carries a CVSS v3.1 base score of 6.1 (Medium) (GitHub Advisory).

Technical details

The root cause is classified under CWE-470 (Use of Externally-Controlled Input to Select Classes or Code / Unsafe Reflection) and CWE-502 (Deserialization of Untrusted Data). During SSR hydration, React Router's legacy error deserialization logic in Data Mode and Framework Mode allowed attacker-supplied input to overwrite the __subType field of serialized error objects embedded in the hydration data (e.g., window.__staticRouterHydrationData). The client-side deserializeErrors function would then look up the specified class name on the window object and invoke its constructor — effectively enabling unsafe reflection. The fix (PR #15175) replaced the manual error serialization approach with turbo-stream for Framework Mode hydration errors and restricted Data Mode deserialization to a hardcoded allowlist (SUPPORTED_ERROR_TYPES), preventing arbitrary class lookups (GitHub Advisory, Fix PR, Fix Commit).

Impact

Successful exploitation results in low confidentiality and low integrity impact with no availability impact, and the scope is changed (cross-boundary). An attacker can cause the victim's browser to execute an unintended constructor and trigger outbound network requests, potentially leaking information or performing limited unauthorized actions. The vulnerability does not affect applications using Declarative Mode and is limited to Framework Mode and Data Mode applications performing manual SSR/hydration with specific application-layer code patterns that allow attacker-controlled input to influence SSR error objects (GitHub Advisory).

Exploitability

No in-the-wild exploitation has been reported, and no public proof-of-concept exploit code is known. The NVD SSVC assessment confirms exploitation is currently "none" and the attack is not automatable, as it requires user interaction and very specific (and unlikely) application-layer code conditions. The EPSS score is approximately 0.0042 (0.42%), indicating a low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Advisory, Feedly).

Exploitation steps

  1. Identify a vulnerable target: Locate a web application using react-router in Framework Mode or Data Mode with manual SSR/hydration (versions 6.4.0–7.17.0) where attacker-controlled input can influence the SSR error serialization output embedded in the server-rendered HTML.
  2. Craft malicious input: Supply input that causes the server-side SSR error handler to serialize an error object with an attacker-controlled __subType field (e.g., __subType: "CustomError") into the hydration data (e.g., window.__staticRouterHydrationData).
  3. Trigger client-side hydration: Cause a victim user to load the affected page, initiating the React Router hydration process in the browser.
  4. Exploit unsafe reflection: The legacy deserializeErrors function reads the __subType value from the hydration data and looks up the corresponding constructor on the window object (e.g., window["CustomError"]), invoking it — executing unintended constructor logic.
  5. Achieve objective: If the invoked constructor triggers an outbound network request (e.g., via fetch, XMLHttpRequest, or Image src), the attacker can exfiltrate limited data or confirm exploitation (GitHub Advisory, Fix Commit).

Indicators of compromise

  • Network: Unexpected outbound HTTP/HTTPS requests originating from end-user browsers to attacker-controlled domains shortly after loading a React Router SSR-rendered page; unusual DNS lookups from client systems to unknown external hosts.
  • Logs: Server-side logs showing requests that result in error responses with attacker-influenced error payloads embedded in SSR HTML output; Content Security Policy (CSP) violation reports for unexpected connect-src or img-src destinations.
  • File System / Application: Presence of window.__staticRouterHydrationData in server-rendered HTML containing __type: "Error" and a __subType value referencing non-standard or unexpected class names (anything outside built-in JS error types like Error, TypeError, ReferenceError, etc.).

Mitigation and workarounds

The primary remediation is to upgrade react-router to version 7.18.0 or later, which replaces the vulnerable manual error serialization with turbo-stream for Framework Mode and restricts Data Mode deserialization to a safe allowlist of built-in error types (GitHub Advisory, v7.18.0 Release). Applications using Declarative Mode are not affected and do not require immediate action. As a temporary workaround for teams unable to upgrade immediately, ensure that no attacker-controlled input can influence the error objects serialized during the SSR process, and implement a strict Content Security Policy (CSP) to limit outbound network requests from the browser.

Community reactions

Netlify published a changelog entry on July 23, 2026 acknowledging the React Router security vulnerabilities, indicating awareness among major hosting providers (Netlify Changelog). The advisory was credited to reporter "yoyomiski" and was assessed as "Moderate" severity by the React Router maintainers, reflecting the narrow exploitation conditions required. Qualys and Tenable both published detection plugins for the vulnerability shortly after disclosure, indicating rapid uptake in the vulnerability management community (Qualys, Tenable).

Additional resources


SourceThis report was generated using AI

Related Grafana vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-56862HIGH7.5
  • cAdvisor logocAdvisor
  • kubernetes-csi-node-driver-registrar-fips-2.17
NoYesAug 13, 2026
CVE-2026-56859HIGH7.5
  • cAdvisor logocAdvisor
  • golang-bin
NoYesAug 13, 2026
CVE-2026-17183HIGH7.1
  • Grafana logoGrafana
  • cpe:2.3:a:grafana:grafana
NoYesAug 19, 2026
CVE-2026-56860MEDIUM5.9
  • cAdvisor logocAdvisor
  • mcp-grafana-fips
NoYesAug 13, 2026
CVE-2026-11817MEDIUM5.3
  • Grafana logoGrafana
  • cpe:2.3:a:grafana:grafana
NoYesAug 17, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management