CVE-2026-53663
Low · 3.1CVSS
3.1
EPSS
0.1%
Published
Jun 22, 2026
CISA due date
—
Cloudanix analysis
Some web applications using affected React Router versions may let a malicious website trick a logged-in user’s browser into making unintended changes, although common browser protections usually prevent this.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- High
- Impact
- Data Tampering
- Component
- Web Framework
- Class
- CSRF
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
React Router v7 Framework Mode versions 7.12.0 through versions before 7.15.1 applied CSRF validation to POST requests but did not apply equivalent checks to PUT, PATCH, or DELETE requests. If an application exposes state-changing framework actions over those HTTP methods and relies on React Router’s built-in CSRF protection as the primary guard, a cross-site request could potentially modify server-side state without the user intentionally performing the action. The practical exploitability is limited because browsers commonly block the relevant cross-origin paths through CORS preflight behavior and SameSite cookie defaults, which is reflected in the low CVSS score, low EPSS score, absence from KEV, and no known mature public exploitation.
Why it matters to the business
The main business risk is unauthorized modification or deletion of user-accessible data in applications using affected React Router Framework Mode versions, especially where applications allow credentialed cross-origin requests or use permissive cookie/CORS settings. Operational impact is generally low, but affected internet-facing applications should still be updated because the flaw sits in a widely used web framework component and may be easier to exploit in applications with weakened browser-side protections.
How an attack unfolds
An attacker would first identify an application using React Router v7 Framework Mode in an affected version range and locate state-changing routes that accept PUT, PATCH, or DELETE. The attacker would then craft a malicious web page or link that attempts to cause a victim’s browser to send one of those requests while the victim is authenticated to the target application. If the application’s cookies are sent cross-site and the browser is allowed to make the request despite CORS preflight requirements, the missing CSRF check may allow the request to reach the application as if it were an intentional user action. Successful exploitation would typically result in low-integrity impact such as changing a setting, updating a record, or deleting user-accessible data, rather than code execution or data disclosure.
How to fix it
Upgrade React Router to version 7.15.1 or later. Treat affected versions as 7.12.0 through versions before 7.15.1 when used in v7 Framework Mode. If immediate upgrade is not possible, add explicit server-side CSRF validation for all state-changing methods, including POST, PUT, PATCH, and DELETE; require unpredictable CSRF tokens or equivalent origin-bound validation; reject unexpected Origin and Referer headers for state-changing requests; avoid credentialed wildcard CORS; and ensure cookies use appropriate SameSite settings, preferably Lax or Strict where application flows allow it.
How to confirm the fix worked
Confirm dependency manifests and lockfiles resolve React Router to 7.15.1 or later. Verify the application is not bundling or deploying an older transitive copy. Review routes/actions to ensure state-changing endpoints using PUT, PATCH, and DELETE require CSRF validation or equivalent origin checks. Test by sending cross-origin simulated PUT, PATCH, and DELETE requests without a valid CSRF token and confirm they are rejected. Also confirm CORS responses do not allow arbitrary origins with credentials and that authentication cookies are configured with appropriate SameSite attributes.
Typical attack path
- Identify a React Router v7 Framework Mode application running version 7.12.0 or later but before 7.15.1.
- Map application routes that perform state-changing actions using PUT, PATCH, or DELETE.
- Create a malicious web page that triggers one of those HTTP methods against the target application.
- Convince an authenticated user to visit the malicious page or interact with attacker-controlled content.
- Rely on permissive CORS settings, cross-site cookies, or other weakened browser protections so the request is sent with the user’s credentials.
- Cause the vulnerable route to process the request without the intended CSRF validation.
- Modify or delete data within the permissions of the victim user.
How to detect it
Look for evidence of authenticated state-changing requests over PUT, PATCH, or DELETE that appear to originate from outside the application’s normal user interface. Useful sources include web server access logs, application request logs, WAF logs, reverse proxy logs, CDN logs, identity/session logs, and audit logs for changes or deletions. Prioritize events where the request method is PUT, PATCH, or DELETE; the Origin header is absent, null, or an untrusted domain; the Referer is external or missing; Fetch Metadata headers show cross-site context, such as Sec-Fetch-Site: cross-site; and the action resulted in a successful 2xx or 3xx response. Correlate these requests with user complaints, unexpected record updates, deletes, setting changes, or audit events occurring shortly after the user visited an external site. There are no known public exploit payloads or actor-specific indicators for this vulnerability, so detection should be behavior-based rather than signature-only.
What your security team should do
- Inventory applications using React Router v7 Framework Mode and identify versions 7.12.0 through before 7.15.1.
- Upgrade affected applications to React Router 7.15.1 or later during the next normal patch cycle, with higher priority for internet-facing applications handling sensitive or destructive user actions.
- Review CORS policies and remove credentialed access for untrusted origins, especially wildcard or origin-reflection configurations.
- Require CSRF protections consistently across POST, PUT, PATCH, and DELETE routes, not only POST.
- Harden authentication cookies with SameSite=Lax or SameSite=Strict where feasible and Secure/HttpOnly attributes.
- Search recent access logs for unusual authenticated PUT, PATCH, or DELETE requests with cross-site Origin, missing Referer, or unexpected browser Fetch Metadata headers.
- Because this is not KEV-listed, not associated with ransomware use, and has very low EPSS, prioritize remediation based on application exposure and business criticality rather than emergency response.
The record
React Router is a router for React. From 7.12.0 until 7.15.1, certain CSRF checks in React Router v7 Framework Mode were insufficient and run on POST requests, but were bypassed on PUT/PATCH/DELETE requests. This is a low severity vulnerability because modern browser protections (CORS preflight, SameSite cookies) already block the cross-origin attack vectors that this missing CSRF check would otherwise gate. This vulnerability is fixed in 7.15.1.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | @remix-run/server-runtime | 2.17.3 | 2.17.5 |
| npm | react-router | 7.12.0 | 7.15.1 |
Related vulnerabilities
- GHSA-84g9-w2xq-vcv6 React Router: Potential CSRF via PUT/PATCH/DELETE document requests Same vulnerability
- GHSA-8x6r-g9mw-2r78 React Router vulnerable to DoS via unbounded path expansion in __manifest endpoint Also affects @remix-run/server-runtime
- CVE-2026-42342 React Router is a router for React. Also affects @remix-run/server-runtime
- CVE-2026-22030 React Router is a router for React. Also affects @remix-run/server-runtime
- GHSA-h5cw-625j-3rxh React Router has CSRF issue in Action/Server Action Request Processing Also affects @remix-run/server-runtime
- GHSA-rxv8-25v2-qmq8 React Router vulnerable to Denial of Service via reflected user input in single-fetch Also affects react-router
- GHSA-49rj-9fvp-4h2h React Router's vendored turbo-stream v2 allows arbitrary constructor invocation via… Also affects react-router
- GHSA-2j2x-hqr9-3h42 React Router's same-origin redirect with path starting // causes open redirect via… Also affects react-router