All vulnerabilities

Servers and applications

CVE-2026-128071

Incomplete fix for GHSA-6gq8-jgmh-3ffp: an encoded slash (`%2F`) in the request path bypasses route rules on catch-all page routes

Severity
Medium 6.5
Published
2 Nov 2026
Last changed
13 Nov 2026
Added to UpHeron
13 Nov 2026
Fixed in
4.0.0, 4.6.4
Weakness
CWE-436Incorrect authorization (CWE-863)
Attack
Over the network · No login needed · No user action needed
Attacker can
Read some data · Change some data
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Also known as
GHSA-f3x9-2chm-73c8
Sources
CVE Program, Project advisories (GitHub)

Description

Nuxt matches route rules against the request path with encoded slashes (%2F) left encoded, while the page router decodes them into route params. A request that spells a slash as %2F can therefore render a page through a catch-all route without the route rules configured for the path it resolves to. The fix for GHSA-6gq8-jgmh-3ffp deliberately left reserved escapes such as %2F encoded, so it did not cover this form.

An unauthenticated attacker can bypass route rules that protect paths served by a catch-all page route, or by a custom route whose param can span several segments.

With app/pages/docs/[...slug].vue, /docs/internal/guide runs auth, but /docs/internal%2Fguide renders the same page without running auth and without the header. With a root app/pages/[...slug].vue, /admin%2Fsecret is rendered instead of redirected.

The rules skipped include server-side redirect, headers, proxy, ssr and noScripts, and appMiddleware, appLayout and redirect as matched in the app during server…

From nuxt/nuxt's security advisory. Shortened; the full text is there.

Workarounds

Reject page requests whose path contains an encoded slash in a server middleware:

This also rejects legitimate uses, such as an API route that takes a scoped package name (@scope%2Fname) as a param; narrow the check to the path prefixes your route rules protect if you need those.

A reverse proxy or CDN that rejects or decodes encoded slashes before forwarding the request also removes the mismatch.

Workarounds as given by nuxt/nuxt's security advisory.

Affected software

SoftwareAffected versions
NuxtServers and applications · cna:nuxt|nuxt
  • From 3.0.0 before 4.6.4
NuxtServers and applications · github:nuxt/nuxt
  • From 3.0.0 before 4.0.0
  • From 4.0.0 before 4.6.4

References