CVE-2026-71321: Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
Impact
The internal island renderer endpoint (/nuxtisland/...) decodes and hashes attacker-controlled request input before it validates the URL-resident hash. An unauthenticated POST /nuxtisland/<name><anything>.json with a large JSON body (for example ~4.6 MB / 150k keys) is fully read, destr-parsed, and run through ohash before the request is rejected with a 400. Because Nitro runs on a single event loop, this both wastes CPU on the doomed request and delays every concurrent request. A low request rate is enough to degrade or stall the server. No valid hash and no authentication are required.
Patches
Fixed in nuxt@4.5.1 and nuxt@3.21.10. The island handler now enforces a raw body-size cap (413) and a JSON nesting-depth cap (400) before parsing or hashing, so oversized or deeply nested input is rejected cheaply.
Workarounds
Put a small request-body limit in front of /nuxtisland/ at your reverse proxy / edge (islands legitimately send only a compact props payload), or disable server components if unused.
Other sources
Nuxt is an open-source web development framework for Vue.js. From 3.1.0 until 3.21.10 and 4.5.1, the internal island renderer endpoint /nuxtisland/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /nuxtisland/.json with a large JSON body is fully read, parsed, hashed, and then rejected, which wastes CPU on Nitro single event loop and delays concurrent requests. No valid hash and no authentication are required. This issue is fixed in 3.21.10 and 4.5.1.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/nuxtto a version that resolves this vulnerability.Fixed in 3.21.10 - Upgrade
Upgrade
npm/nuxtto a version that resolves this vulnerability.Fixed in 4.5.1 - Upgrade
Upgrade
nuxtto a version that resolves this vulnerability.Fixed in 4.5.1 - Upgrade
Upgrade
nuxtto a version that resolves this vulnerability.Fixed in 3.21.10 - Configuration
If server components are not used, disable server components to avoid the vulnerable internal island renderer endpoint from being active.
Nuxt server components server components = disable (if unused) - Compensating control
At the reverse proxy/edge, put a small request-body limit in front of the internal island renderer endpoint path `/__nuxt_island/` (islands legitimately send only a compact props payload) to prevent large unauthenticated JSON bodies from reaching the server.
Event History
Frequently Asked Questions
What is the severity of CVE-2026-71321?
The severity of CVE-2026-71321 is high, rated at 7.5.
What is the impact of CVE-2026-71321?
CVE-2026-71321 allows unauthenticated users to exploit the internal island renderer endpoint with large JSON payloads, leading to potential denial of service.
How do I fix CVE-2026-71321?
To fix CVE-2026-71321, update to the latest version of Nuxt that addresses this vulnerability.
What are the affected software versions for CVE-2026-71321?
CVE-2026-71321 affects certain versions of the Nuxt framework.
Who is affected by CVE-2026-71321?
Developers and users of applications that utilize the Nuxt framework may be affected by CVE-2026-71321.