CVE-2026-44372
Nitro: Open Redirect via Protocol-Relative URL Bypass in Wildcard Route Rules
Nitro is a next generation server toolkit. Prior to 3.0.260429-beta, an attacker could turn a redirect route rule using wildcards rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. This vulnerability is fixed in 3.0.260429-beta.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.3
Nitro: Open Redirect via Protocol-Relative URL Bypass in Wildcard Route Rules
Nitro is a next generation server toolkit. Prior to 3.0.260429-beta, an attacker could turn a redirect route rule using wildcards rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. This vulnerability is fixed in 3.0.260429-beta.
- Record
CVE-2026-44372- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-601
- Updated
- 2026-11-02
EUVDEUVD-2026-30162
5.3
Nitro is a next generation server toolkit. Prior to 3.0.260429-beta, an attacker could turn a redirect route rule using wildcards rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. This vulnerability is fixed in 3.0.260429-beta.
- Record
EUVD-2026-30162- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-9phm-9p8f-hw5m
5.3
Nitro has an Open Redirect via Protocol-Relative URL Bypass in Wildcard Route Rules
A redirect route rule like:
routeRules: {
"/legacy/**": { redirect: "/**" }
}
is intended to rewrite paths within the same host. Before the patch, an attacker could turn the rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. Example exploit:
GET /legacy//evil.com
Nitro stripped /legacy from the matched pathname and joined the remainder against the rule's target. The remainder was //evil.com, which the join preserved verbatim, so Nitro responded with Location: //evil.com. Browsers resolve //evil.com as a protocol-relative URL against the current scheme, sending the user to https://evil.com.
Are you affected?
Users may be affected if all of the following are true:
- Their project uses Nitro's
routeRuleswith aredirectentry. - The target uses a
/**wildcard suffix to forward sub-paths (e.g.redirect: "/**",redirect: "/new/**",proxy: { to: "http://upstream/**" }). - The
redirectrule is not handled natively at the CDN layer. Thevercel,netlify,cloudflare-pages, andedgeonepresets translaterouteRules.redirectinto platform config (vercel.json,_redirects, EdgeOne v3 config) and serve the redirect at the edge — those deployments bypass the Nitro runtime entirely and are not affected. Every other preset executes the redirect through the Nitro runtime and can be vulnerable.
Impact
Open redirect from any host serving Nitro with a wildcard redirect rule. The redirect target is fully attacker-controlled, the URL looks legitimate (it starts with the victim's domain), and the browser silently follows it.
Patched versions
Upgrade to one of:
- 2.13.4 or later (or upgrade lockfile with latest ufo 1.6.4+)
- 3.0.260429-beta or later (https://github.com/nitrojs/nitro/pull/4236)
The fix has two parts:
ufois bumped to^1.6.4(unjs/ufo@5cd9e67), which collapses any run of leading slashes to a single/insidewithoutBase. This covers the typical"/scope/**"rule.- The Nitro runtime additionally collapses leading
//before joining when the rule path itself is/**(in rare case which casewithoutBaseis never called and the raw pathname flows straight intojoinURL("", …)).
- Record
GHSA-9phm-9p8f-hw5m- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-rq7w-g337-39qq
2.3
Nuxt: Dev server discloses project absolute path and persistent workspace UUID via `/.well-known/appspecific/com.chrome.devtools.json`
Summary
When running nuxt dev, Nuxt registers an unauthenticated route at /.well-known/appspecific/com.chrome.devtools.json that returns the absolute filesystem path of the project root and a per-project UUID persisted to node_modules/.cache/nuxt/chrome-workspace.json. The route is enabled by default via experimental.chromeDevtoolsProjectSettings: true.
The endpoint exists to let Chrome DevTools' Workspace integration map sources to the developer's local checkout. The handler is registered directly on nitro.options.devHandlers and does not pass through the CORS / origin wrapper that the rest of the dev pipeline uses, so it has no host / origin / Sec-Fetch-Site check of its own.
Impact
Dev-server only. Production builds do not register the route.
Two values are disclosed:
workspace.root: the absolute filesystem path of the project (commonly reveals the OS username and the on-disk project name).workspace.uuid: a v4 UUID persisted tonode_modules/.cache/nuxt/chrome-workspace.json, stable across dev-server restarts and re-clones.
Threat model
The response carries no Access-Control-Allow-Origin header. A cross-origin fetch() from an arbitrary malicious page is therefore blocked by the browser's same-origin policy and cannot read the body. The two realistic recovery paths are:
- LAN-adjacent attacker when the developer runs
nuxt dev --host(or otherwise binds to a non-loopback interface). A plaincurl http://<dev-lan-ip>:3000/.well-known/appspecific/com.chrome.devtools.jsonreturns the JSON; no browser, no CORS. - DNS rebinding against the default loopback dev server. A page the developer visits resolves to the attacker, then re-resolves to
127.0.0.1after the TTL; the browser believes the request is same-origin and reads the response.
Affected versions
[email protected] (PR #32084) through [email protected]. 3.x is not affected.
Reproduction
npx nuxt dev
curl -s http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
# {"workspace":{"uuid":"...","root":"/Users/<name>/..."}}
Workaround
Set experimental: { chromeDevtoolsProjectSettings: false } in nuxt.config.ts. Chrome DevTools' Workspace auto-integration will stop working; the dev server is otherwise unaffected.
Patches
Fixed in [email protected] by #35201 (commit 55c75b78). The handler is now routed through the same host / origin gate the rest of the dev server uses, so the endpoint only responds to requests that look local.
- Record
GHSA-rq7w-g337-39qq- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-200
- Updated
- 2026-11-02
NVD
5.3
Nitro is a next generation server toolkit. Prior to 3.0.260429-beta, an attacker could turn a redirect route rule using wildcards rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. This vulnerability is fixed in 3.0.260429-beta.
- Record
CVE-2026-44372- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
OSV
5.3
Nitro: Open Redirect via Protocol-Relative URL Bypass in Wildcard Route Rules
Nitro is a next generation server toolkit. Prior to 3.0.260429-beta, an attacker could turn a redirect route rule using wildcards rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. This vulnerability is fixed in 3.0.260429-beta.
- Record
CVE-2026-44372- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-601
- Updated
- 2026-11-02
Show 7 moreShow less
OSVGHSA-9phm-9p8f-hw5m
5.3
Nitro has an Open Redirect via Protocol-Relative URL Bypass in Wildcard Route Rules
A redirect route rule like:
routeRules: {
"/legacy/**": { redirect: "/**" }
}
is intended to rewrite paths within the same host. Before the patch, an attacker could turn the rewrite into a cross-host redirect by sliding an extra slash in after the rule prefix. Example exploit:
GET /legacy//evil.com
Nitro stripped /legacy from the matched pathname and joined the remainder against the rule's target. The remainder was //evil.com, which the join preserved verbatim, so Nitro responded with Location: //evil.com. Browsers resolve //evil.com as a protocol-relative URL against the current scheme, sending the user to https://evil.com.
Are you affected?
Users may be affected if all of the following are true:
- Their project uses Nitro's
routeRuleswith aredirectentry. - The target uses a
/**wildcard suffix to forward sub-paths (e.g.redirect: "/**",redirect: "/new/**",proxy: { to: "http://upstream/**" }). - The
redirectrule is not handled natively at the CDN layer. Thevercel,netlify,cloudflare-pages, andedgeonepresets translaterouteRules.redirectinto platform config (vercel.json,_redirects, EdgeOne v3 config) and serve the redirect at the edge — those deployments bypass the Nitro runtime entirely and are not affected. Every other preset executes the redirect through the Nitro runtime and can be vulnerable.
Impact
Open redirect from any host serving Nitro with a wildcard redirect rule. The redirect target is fully attacker-controlled, the URL looks legitimate (it starts with the victim's domain), and the browser silently follows it.
Patched versions
Upgrade to one of:
- 2.13.4 or later (or upgrade lockfile with latest ufo 1.6.4+)
- 3.0.260429-beta or later (https://github.com/nitrojs/nitro/pull/4236)
The fix has two parts:
ufois bumped to^1.6.4(unjs/ufo@5cd9e67), which collapses any run of leading slashes to a single/insidewithoutBase. This covers the typical"/scope/**"rule.- The Nitro runtime additionally collapses leading
//before joining when the rule path itself is/**(in rare case which casewithoutBaseis never called and the raw pathname flows straight intojoinURL("", …)).
- Record
GHSA-9phm-9p8f-hw5m- CVSS 4.0
- 5.3 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-601
- Updated
- 2026-11-02
OSVGHSA-rq7w-g337-39qq
2.3
Nuxt: Dev server discloses project absolute path and persistent workspace UUID via `/.well-known/appspecific/com.chrome.devtools.json`
Summary
When running nuxt dev, Nuxt registers an unauthenticated route at /.well-known/appspecific/com.chrome.devtools.json that returns the absolute filesystem path of the project root and a per-project UUID persisted to node_modules/.cache/nuxt/chrome-workspace.json. The route is enabled by default via experimental.chromeDevtoolsProjectSettings: true.
The endpoint exists to let Chrome DevTools' Workspace integration map sources to the developer's local checkout. The handler is registered directly on nitro.options.devHandlers and does not pass through the CORS / origin wrapper that the rest of the dev pipeline uses, so it has no host / origin / Sec-Fetch-Site check of its own.
Impact
Dev-server only. Production builds do not register the route.
Two values are disclosed:
workspace.root: the absolute filesystem path of the project (commonly reveals the OS username and the on-disk project name).workspace.uuid: a v4 UUID persisted tonode_modules/.cache/nuxt/chrome-workspace.json, stable across dev-server restarts and re-clones.
Threat model
The response carries no Access-Control-Allow-Origin header. A cross-origin fetch() from an arbitrary malicious page is therefore blocked by the browser's same-origin policy and cannot read the body. The two realistic recovery paths are:
- LAN-adjacent attacker when the developer runs
nuxt dev --host(or otherwise binds to a non-loopback interface). A plaincurl http://<dev-lan-ip>:3000/.well-known/appspecific/com.chrome.devtools.jsonreturns the JSON; no browser, no CORS. - DNS rebinding against the default loopback dev server. A page the developer visits resolves to the attacker, then re-resolves to
127.0.0.1after the TTL; the browser believes the request is same-origin and reads the response.
Affected versions
[email protected] (PR #32084) through [email protected]. 3.x is not affected.
Reproduction
npx nuxt dev
curl -s http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
# {"workspace":{"uuid":"...","root":"/Users/<name>/..."}}
Workaround
Set experimental: { chromeDevtoolsProjectSettings: false } in nuxt.config.ts. Chrome DevTools' Workspace auto-integration will stop working; the dev server is otherwise unaffected.
Patches
Fixed in [email protected] by #35201 (commit 55c75b78). The handler is now routed through the same host / origin gate the rest of the dev server uses, so the endpoint only responds to requests that look local.
- Record
GHSA-rq7w-g337-39qq- CVSS 4.0
- 2.3 Low
CVSS:4.0/AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-200
- Updated
- 2026-11-02
OSVCLSA-2026-1792160954 No score
TuxCare security update for @nuxt/vite-builder (10 CVEs)
TuxCare rebuilt @nuxt/vite-builder to address 10 CVEs. Fixed in 4.0.3-tuxcare.4.
- Record
CLSA-2026-1792160954- Updated
- 2026-11-02
OSVCLSA-2026-1792161448 No score
TuxCare security update for @nuxt/kit (10 CVEs)
TuxCare rebuilt @nuxt/kit to address 10 CVEs. Fixed in 4.0.3-tuxcare.4.
- Record
CLSA-2026-1792161448- Updated
- 2026-11-02
OSVCLSA-2026-1792161483 No score
TuxCare security update for @nuxt/rspack-builder (10 CVEs)
TuxCare rebuilt @nuxt/rspack-builder to address 10 CVEs. Fixed in 4.0.3-tuxcare.4.
- Record
CLSA-2026-1792161483- Updated
- 2026-11-02
OSVCLSA-2026-1792161588 No score
TuxCare security update for @nuxt/schema (10 CVEs)
TuxCare rebuilt @nuxt/schema to address 10 CVEs. Fixed in 4.0.3-tuxcare.4.
- Record
CLSA-2026-1792161588- Updated
- 2026-11-02
OSVCLSA-2026-1792161924 No score
TuxCare security update for @nuxt/webpack-builder (10 CVEs)
TuxCare rebuilt @nuxt/webpack-builder to address 10 CVEs. Fixed in 4.0.3-tuxcare.4.
- Record
CLSA-2026-1792161924- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
nitronpm |
before 3.0.260429-beta | 3.0.260429-beta |
nitropacknpm |
before 2.13.4 | 2.13.4 |
nuxtnpm |
4.0.0-alpha.1 up to 4.4.7 | 4.4.7 |
@nuxt/vite-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.4, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.3 |
4.0.3-tuxcare.4 |
@nuxt/kitTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.4, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.3 |
4.0.3-tuxcare.4 |
@nuxt/rspack-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.4, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.3 |
4.0.3-tuxcare.4 |
@nuxt/schemaTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.4, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.3 |
4.0.3-tuxcare.4 |
@nuxt/webpack-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.4, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.3 |
4.0.3-tuxcare.4 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-44372 is a medium vulnerability (CVSS 5.3) in Nitro, published May 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.28%, the 20th percentile. Fixed in nitro 3.0.260429-beta.
References
github.com/nitrojs/nitro/security/advisories/GHSA-9phm-9p8f-hw5m
github.com/nitrojs/nitro/pull/4236
github.com/nitrojs/nitro/releases/tag/v2.13.4
github.com/nitrojs/nitro/releases/tag/v3.0.260429-beta
github.com/unjs/ufo/commit/5cd9e676711af3f4e4b5398ddf6ca8d52c1c7e1f
nvd.nist.gov/vuln/detail/CVE-2026-44372
Show 8 moreShow less
github.com/advisories/GHSA-9phm-9p8f-hw5m
github.com/nuxt/nuxt/security/advisories/GHSA-rq7w-g337-39qq
github.com/nuxt/nuxt/pull/35201
github.com/nuxt/nuxt/commit/55c75b78c989b8bd210837b0e5faaebbf2b87b15
github.com/advisories/GHSA-rq7w-g337-39qq
github.com/CVEProject/cvelistV5/tree/main/cves/2026/44xxx/CVE-2026-44372.json
github.com/nitrojs/nitro
github.com/nuxt/nuxt