Skip to content

[GHSA-qwww-vcr4-c8h2] React Router: RSC Mode CSRF Bypass Allows Action Execution Before 400 Response - #8868

Open
brookslybrand wants to merge 1 commit into
brookslybrand/advisory-improvement-8868from
brookslybrand-GHSA-qwww-vcr4-c8h2
Open

[GHSA-qwww-vcr4-c8h2] React Router: RSC Mode CSRF Bypass Allows Action Execution Before 400 Response#8868
brookslybrand wants to merge 1 commit into
brookslybrand/advisory-improvement-8868from
brookslybrand-GHSA-qwww-vcr4-c8h2

Conversation

@brookslybrand

Copy link
Copy Markdown

Updates

  • Affected products

Comments
We backported the fix to React Router v7, so the ranges need to be updated:

Copilot AI review requested due to automatic review settings July 29, 2026 15:21
@github

github commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Hi there @brophdawg11! A community member has suggested an improvement to your security advisory. If approved, this change will affect the global advisory listed at github.com/advisories. It will not affect the version listed in your project repository.

This change will be reviewed by our Security Curation Team. If you have thoughts or feedback, please share them in a comment here! If this PR has already been closed, you can start a new community contribution for this advisory

@github-actions
github-actions Bot changed the base branch from main to brookslybrand/advisory-improvement-8868 July 29, 2026 15:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates React Router advisory ranges for patched v7 and v8 releases.

Changes:

  • Adds separate affected ranges for v7 and v8.
  • Records fixed versions and last-known affected ranges.
Comments suppressed due to low confidence (1)

advisories/github-reviewed/2026/07/GHSA-qwww-vcr4-c8h2/GHSA-qwww-vcr4-c8h2.json:51

  • As with the v7 range, an OSV fixed event must contain the exact boundary version rather than a comparator expression. ">= 8.3.0" is not a valid package version and may prevent consumers from closing this affected interval correctly.
              "fixed": ">= 8.3.0"

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

},
{
"fixed": "8.3.0"
"fixed": ">= 7.18.2"
@raulariton

Copy link
Copy Markdown

Hi, until this version update goes through, we are blocked for a project release as it causes the audit step in our pipeline to fail. Would be great to have this merged ASAP.

Thank you.

@j-hannes

j-hannes commented Jul 30, 2026

Copy link
Copy Markdown

Independent confirmation that the proposed < 7.18.2 boundary is correct, from diffing the published tarballs rather than reading the changelog.

Comparing react-router@7.18.1 and 7.18.2 dist output — normalising the chunk-hash renames, which account for most of the raw diff — leaves one substantive logic change. The RSC action path now catches the CSRF error and rewrites the request to GET before continuing, so the action no longer executes ahead of the 400:

} catch (error) {
  onError?.(error);
  potentialCSRFAttackError = error;
  request = new Request(request.url, {
    method: "GET",
    headers: request.headers,
    signal: request.signal
  });
}
if (!potentialCSRFAttackError) {

That matches remix-run/react-router#15311 ("harden RSC CSRF codepaths") as backported by remix-run/react-router#15353 ("Backport RSC CSRF hardening to v7"), and the 7.18.2 changelog entry ("Harden RSC CSRF codepaths"). So 7.18.2 is patched, and the current single < 8.3.0 range reports it as a false positive.

The two-range split in this PR also looks preferable to the "fixed": "7.18.2, 8.3.0" shape used in some sibling PRs, since it keeps the v7 and v8 lines independently expressible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants