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.

@LeVuMinhHuy

Copy link
Copy Markdown

Hi team, please get this merged !

@miguelzapataj

Copy link
Copy Markdown

Hi @taladrane

I hope you are doing well. I just wanted to ask if you could take a look at this PR. We are currently blocked because the release with the patched version was completed, but the ranges need to be updated so the audit does not flag it as a high vulnerability.

@jhulance

jhulance commented Aug 3, 2026

Copy link
Copy Markdown

Is this the correct multiple range example: https://ossf.github.io/osv-schema/#multiple-range-example

@brookslybrand

Copy link
Copy Markdown
Author

Hey all, anything we can do to get this merged in? I'm a maintainer of React Router. The current range is causing a lot of frustration for current users since it's (erroneously) forcing them to upgrade to v8

@alinawww thanks for the approval, anything you need from me to get this merged in?

"introduced": "8.0.0"
},
{
"fixed": ">= 8.3.0"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggested change
"fixed": ">= 8.3.0"
"fixed": "8.3.0"

tung2744 added a commit to tung2744/authgear-site-admin-portal that referenced this pull request Aug 4, 2026
Fixes the open-redirect and SSR error-deserialization CVEs
(GHSA-wrjc-x8rr-h8h6, GHSA-337j-9hxr-rhxg). npm audit still flags
GHSA-qwww-vcr4-c8h2 (RSC Mode CSRF bypass) against this version, but
that's a stale advisory range: the react-router v7 changelog confirms
"Harden RSC CSRF codepaths" shipped in 7.18.2 itself
(github.com/remix-run/react-router/blob/v7/CHANGELOG.md#v7182). A
correction to the advisory's version range is pending upstream
(github.com/github/advisory-database/pull/8868).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Neevea8880

Copy link
Copy Markdown

Hi team,
Would it be possible to prioritise reviewing and merging this advisory update?
As the fix has already been backported to v7.18.2, but until this advisory is updated, tools like pnpm audit continue to report the old affected version range, causing our CI/CD pipelines to fail.

This is currently blocking our development and release process. We'd really appreciate it if this update could be reviewed and merged as soon as possible.
Thank you!

carmenlau pushed a commit to authgear/authgear-server that referenced this pull request Aug 4, 2026
- ip-address 10.2.0 -> 10.4.0: fixes GHSA-mwp4-54f8-5fhr (SSRF via
  leading-zero octet decoding), GHSA-4xrf-jv44-h6hh, GHSA-22jq-vg5j-6vgg.
- fast-uri 3.1.4 -> 3.1.5: fixes GHSA-7p8r-x3mc-p8w7 (host confusion
  via backslash authority introducer).
- brace-expansion: bumped the nested copies pulled in via minimatch
  3.1.5/9.0.9 (eslint, jest toolchains) to 1.1.18/2.1.4, within their
  parents' already-declared semver ranges. Bumped the scoped
  minimatch@10.2.5 override from ^5.0.8 to ^5.0.9 since 5.0.8 is itself
  vulnerable to GHSA-rgw5-rvv9-x895 (bypasses the prior DoS mitigation).
- react-router-dom 7.18.1 -> 7.18.2: fixes GHSA-qwww-vcr4-c8h2 (RSC
  mode CSRF bypass). npm's advisory database still flags this as
  requiring a major bump to react-router-dom@8.x
  (github/advisory-database#8868 not yet
  merged), but 7.18.2's changelog confirms the CSRF hardening fix
  ("Harden RSC CSRF codepaths", remix-run/react-router#15353), so no
  major upgrade is needed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@Dron007

Dron007 commented Aug 4, 2026

Copy link
Copy Markdown

Hi @brookslybrand, it looks like the current commit still contains a small OSV schema issue that is preventing this PR from being ready to merge.

As Copilot noted, the fixed event must contain an exact version, not a comparator range. The values should therefore be:

"fixed": "7.18.2"

and:

"fixed": "8.3.0"

rather than ">= 7.18.2" and ">= 8.3.0".

@brophdawg11 also suggested this correction for 8.3.0, but the same change is needed for 7.18.2. PR #8936 already contains the range split using the correct OSV syntax and may be useful as a reference: #8936

@brookslybrand

Copy link
Copy Markdown
Author

Hey @Dron007 I'm unable to make changes to this PR, so I'm just waiting on a maintainer to this repo to make the changes they want and merge it in

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.