Vulnerability DatabaseGHSA-pqxc-r4h5-jc95

GHSA-pqxc-r4h5-jc95: 
JavaScript vulnerability analysis and mitigation

Summary

A wildcard redirect route rule whose target is /** copies the rest of the request path into the Location header. The 2.13.4 fix for GHSA-9phm-9p8f-hw5m collapses only a leading //, and only when the rule has no strip base. A remainder that starts with a backslash (raw or %5C) or with a tab followed by a slash (%09/) is emitted unchanged. Browsers treat \ as / in special-scheme URLs and strip tab, LF and CR, so /\evil.example and /<TAB>/evil.example resolve to //evil.example, a cross-origin redirect.

Details

Affected code (nitropack v2):

  • src/runtime/internal/route-rules.ts, redirect branch:
    • With a strip base ('/old/**'): isPathInScope() passes, because WHATWG URL canonicalizes \ to / and the path stays under /old. Then withoutBase(event.path, base) returns /\evil.example unchanged, and joinURL("/", ...) keeps it.
    • Without a strip base ('/**'): only ^//+ is collapsed. /\, /%5C and /<TAB>/ pass through.
  • h3 v1 has already decoded %5C and %09 in event.path, so the Location contains the literal characters.

Proof of concept

export default defineNitroConfig({
  routeRules: { "/old/**": { redirect: "/**" } },
});
RequestLocation (≤ 2.13.5)Browser resolves toLocation after fix
/old/%5Cevil.example/\evil.examplehttps://evil.example/evil.example
/old/\evil.example/\evil.examplehttps://evil.example/evil.example
/old/%5c%5cevil.example/\\evil.examplehttps://evil.example/evil.example
/old/%5C/evil.example/\/evil.examplehttps://evil.example/evil.example
/old/%09/evil.example/<TAB>/evil.examplehttps://evil.example/evil.example
/%5Cevil.example (catch-all '/**')/\evil.examplehttps://evil.example/evil.example
/%09/evil.example (catch-all)/<TAB>/evil.examplehttps://evil.example/evil.example
/old/%0A/evil.example500 (Node rejects the header)not exploitable on Node; defence in depth/evil.example

Impact

An attacker sends a victim a link on the trusted site, such as https://victim.example/old/%5Cevil.example. The site redirects the victim's browser to an attacker-controlled origin. You are affected if all of these are true:

  • you use nitropack v2 (including Nuxt 3 and 4 on nitropack 2);
  • you have a redirect route rule whose target is exactly /**, with nothing before it;
  • the Nitro runtime handles the redirect, not a platform's generated config.

Patches

Fixed in nitropack 2.13.6. Any leading run of slashes, backslashes, control characters and their percent-encoded forms in the redirect remainder is collapsed to a single /, so the Location header is always a same-origin path.

Workarounds

If you cannot upgrade:

  • use a redirect target with a non-empty prefix (for example /new/** instead of /**);
  • or define the redirect in your platform's or reverse proxy's configuration instead of a Nitro route rule.

Source: NVD

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-rhhp-7488-3qwfMEDIUM6.5
  • JavaScript logoJavaScript
  • nitropack
NoYesNov 02, 2026
GHSA-pqxc-r4h5-jc95MEDIUM6.1
  • JavaScript logoJavaScript
  • nitropack
NoYesNov 02, 2026
GHSA-39r7-wfcx-99xgMEDIUM4.8
  • JavaScript logoJavaScript
  • nitropack
NoYesNov 02, 2026
GHSA-xrjv-fc7j-8f77HIGHN/A
  • JavaScript logoJavaScript
  • @graphql-tools/batch-execute
NoNoNov 02, 2026
GHSA-7p5p-67m9-5c8jHIGHN/A
  • JavaScript logoJavaScript
  • @graphql-tools/executor-http
NoNoNov 02, 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

Additional Wiz resources

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