LOW 3.1

CVE-2026-53663: React Router CSRF Bypass in PUT/PATCH/DELETE (Low Severity)

React Router versions 7.12.0 through 7.15.0 had incomplete cross-site request forgery (CSRF) protections in Framework Mode. The framework checked for CSRF tokens on POST requests but skipped this validation entirely for PUT, PATCH, and DELETE requests. However, the practical risk is limited because modern browsers already enforce CORS preflight checks and SameSite cookie policies that prevent most cross-origin attacks. The issue is resolved in React Router 7.15.1.

Source data · NVD / CISA · public domain

CVSS
3.1 · 3.1 LOW · CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N
Weaknesses (CWE)
CWE-352
Affected products
0 configuration(s)
Published / Modified
2026-06-22 / 2026-06-23

NVD description (verbatim)

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.

1 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

React Router Framework Mode implements CSRF token validation as a security control against unauthorized state-changing operations. Between versions 7.12.0 and 7.15.0, the CSRF middleware inconsistently applied this check—validating POST requests but bypassing validation for PUT, PATCH, and DELETE operations. An attacker could theoretically craft a cross-origin request using one of these HTTP methods to perform unauthorized actions on behalf of an authenticated user, but only if the target application neither enforces CORS preflight validation nor sets appropriate SameSite cookie attributes. Since modern browsers enforce these defenses by default, the vulnerability requires an unusual security configuration to exploit. The fix in 7.15.1 ensures consistent CSRF token validation across all state-modifying HTTP methods.

Business impact

Applications using React Router Framework Mode between 7.12.0 and 7.15.0 have a CSRF control gap that is largely mitigated by browser defaults. The practical business risk is low unless an application explicitly disables CORS enforcement or sets permissive SameSite cookie policies. Organizations should prioritize upgrading, but this is not an emergency-level patch. The low CVSS score (3.1) reflects the presence of compensating controls in modern browsers. Any application with non-standard security configurations (permissive CORS, legacy SameSite handling) should treat this with higher urgency.

Affected systems

React Router versions 7.12.0, 7.12.1, 7.13.0, 7.14.0, and 7.15.0 are affected. Any application built on these versions and deployed in production requires a patch. Older major versions (6.x and below) and the patched 7.15.1 release are not vulnerable. The exact scope depends on your inventory of React Router usage across your application portfolio.

Exploitability

Exploitation requires a user to be authenticated to the vulnerable React Router application and to visit a malicious cross-origin site while maintaining an active session. The attacker would need to craft a PUT, PATCH, or DELETE request to the target application. However, this attack is blocked in practice by CORS preflight checks (which require the target to explicitly allow cross-origin requests) and SameSite cookie defaults (which prevent cookies from being sent cross-origin in modern browsers). An application would need unusual security settings—such as very permissive CORS policies or legacy SameSite=None without Secure flag—for the vulnerability to be exploitable. No public exploit code or in-the-wild attacks have been reported.

Remediation

Upgrade React Router to version 7.15.1 or later as soon as feasible. This is a straightforward dependency update in most projects using npm, yarn, or pnpm. Test the upgrade in a staging environment to verify compatibility with your routing configuration and middleware stack. No code changes should be necessary; the patch applies consistent CSRF validation across all HTTP methods transparently.

Patch guidance

Update React Router to 7.15.1 or any subsequent release. In npm-based projects, run `npm update react-router@latest` or `npm install [email protected]`. Verify the version change in package-lock.json or package.json. Rebuild and redeploy your application. If you use monorepo tooling or custom dependency resolution, ensure all internal references to React Router are updated to the patched version. No rollback is necessary; the patch is backward-compatible at the API level.

Detection guidance

Check your application's dependencies using `npm list react-router` or equivalent tool to identify which versions are installed. During code review or CI/CD scanning, ensure that package.json or equivalent does not pin React Router to 7.12.0–7.15.0. If you use software composition analysis (SCA) tools or SBOM generation, those systems should flag this CVE automatically once metadata is updated. Application-level detection is unnecessary; the vulnerability exists in the framework, not in custom code.

Why prioritize this

Although the CVSS score is low (3.1), this vulnerability should still be addressed in your normal patch cadence because (1) it is a direct framework control bypass, (2) an upgrade path is available and low-risk, and (3) delayed patching increases the window for a security researcher or attacker to develop working exploits that circumvent browser mitigations. However, this is not an emergency patch; organizations can batch it with other routine updates and test it in standard staging workflows. Critical or production-facing applications should prioritize it over less-critical dependencies.

Risk score, explained

The CVSS 3.1 score of 3.1 (LOW severity) reflects a low impact scope: no confidentiality or availability risk, minimal integrity risk (only if other security controls are also weakened). The attack complexity is high (AC:H) because modern browsers block the attack by default. User interaction is required (a victim must visit the malicious site). The attack vector is network-based but practically very constrained by browser policy. The low score is justified by the presence of compensating controls (CORS, SameSite) that must fail in unison for exploitation to succeed.

Frequently asked questions

Do I need to patch immediately?

No. This is a low-severity issue that should be handled in your standard patch cycle, typically within 30–90 days depending on your release schedule. There are no public exploits, and browser protections already mitigate the vulnerability. If your application runs on an older version of React Router for other reasons, prioritize a general upgrade plan; this CVE is one of many reasons to stay current.

What if my app already sets strict CORS policies and SameSite=Strict cookies?

Your application is not exploitable by this specific vulnerability. You should still upgrade to 7.15.1 to eliminate the control gap and reduce your security debt, but there is no immediate business risk. During your next planned dependency update cycle, apply the patch.

Can I work around this without upgrading?

In theory, you could add a WAF rule or reverse-proxy middleware to enforce CSRF token validation on PUT/PATCH/DELETE requests yourself, but this is not recommended. The proper fix is to upgrade React Router. A workaround adds complexity, potential bugs, and ongoing maintenance burden for minimal benefit when the official patch is available and low-risk.

Is this vulnerability in the CISA Known Exploited Vulnerabilities list?

No. This CVE is not on the KEV catalog, meaning there are no confirmed public exploits or active exploitation campaigns. This further supports a standard (not emergency) patching timeline.

This analysis is based on the official CVE record and React Router vendor advisory as of June 2026. CVSS scores and severity ratings reflect the vulnerability in isolation; your organization's risk may differ based on application configuration, deployment context, and compensating controls. Always consult the official React Router security advisory and release notes before patching. No liability is assumed for decisions made based on this intelligence. For the latest patching status and vendor guidance, refer to https://github.com/remix-run/react-router/security or the official React Router documentation. Source: NVD (public-domain), retrieved 2026-07-28. Analysis generated by SEC.co (claude-haiku-4-5).