All vulnerabilities

Servers and applications

CVE-2026-128074

Nuxt payload URL generation has quadratic cost for repeated slashes in the request path

Severity
Medium 6.9
Published
2 Nov 2026
Last changed
13 Nov 2026
Added to UpHeron
13 Nov 2026
Fixed in
4.6.4
Weakness
Regular expression denial of service (ReDoS) (CWE-1333)
Attack
Over the network · No login needed · No user action needed
Attacker can
Slow it down
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Also known as
GHSA-r9jc-w898-3fv6
Sources
CVE Program, Project advisories (GitHub)

Description

Nuxt strips trailing slashes from the request path with a regular expression whose cost grows quadratically with the length of a run of consecutive slashes. A single unauthenticated request with a long run of slashes can occupy the server's event loop for a noticeable time, delaying every other request handled by the same process.

When a page is rendered with payload extraction (any route covered by an isr, swr or cache route rule), Nuxt builds the _payload.json URL from the raw request path. A path such as /blog/a followed by 16,000 slashes and x, which fits within Node's default header size limit, takes roughly 0.1 to 0.4 seconds of synchronous CPU time per request, depending on hardware. Concurrent requests to the same process wait for it to finish, so a modest request rate can keep a process saturated.

An app is affected if it uses Nuxt 4.6.0 or later with server-side rendering and has a route rule like:

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

Workarounds

Reject request paths containing repeated slashes before they reach the renderer, for example at the reverse proxy or with a server middleware:

If you use experimental.early404, you can also disable it until you upgrade.

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

Affected software

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

References