CVE-2026-71321
Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
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 /__nuxt_island/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /__nuxt_island/_.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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
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 /__nuxt_island/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /__nuxt_island/_.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.
- Record
CVE-2026-71321- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2026-53658
7.5
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 /__nuxt_island/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /__nuxt_island/_.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.
- Record
EUVD-2026-53658- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-9pgf-384g-p7mv
7.5
Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
Impact
The internal island renderer endpoint (/__nuxt_island/...) decodes and hashes attacker-controlled request input before it validates the URL-resident hash. An unauthenticated POST /__nuxt_island/<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 [email protected] and [email protected]. 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 /__nuxt_island/ at your reverse proxy / edge (islands legitimately send only a compact props payload), or disable server components if unused.
- Record
GHSA-9pgf-384g-p7mv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
NVD
7.5
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 /__nuxt_island/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /__nuxt_island/_.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.
- Record
CVE-2026-71321- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
OSV
7.5
Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
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 /__nuxt_island/... decodes and hashes attacker-controlled JSON body input with destr and ohash before validating the URL-resident hash. An unauthenticated POST /__nuxt_island/_.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.
- Record
CVE-2026-71321- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
OSVGHSA-9pgf-384g-p7mv
7.5
Nuxt: Unauthenticated CPU exhaustion parsing and hashing the Nuxt island endpoint body before hash validation
Impact
The internal island renderer endpoint (/__nuxt_island/...) decodes and hashes attacker-controlled request input before it validates the URL-resident hash. An unauthenticated POST /__nuxt_island/<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 [email protected] and [email protected]. 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 /__nuxt_island/ at your reverse proxy / edge (islands legitimately send only a compact props payload), or disable server components if unused.
- Record
GHSA-9pgf-384g-p7mv- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-407, CWE-770
- Updated
- 2026-11-02
Show 12 moreShow less
OSVCLSA-2026-1788450984 No score
TuxCare security update for nuxt (11 CVEs)
TuxCare rebuilt nuxt to address 11 CVEs. Fixed in 3.12.4-tuxcare.12.
- Record
CLSA-2026-1788450984- Updated
- 2026-11-02
OSVCLSA-2026-1789598338 No score
TuxCare security update for nuxt (7 CVEs)
TuxCare rebuilt nuxt to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1789598338- Updated
- 2026-11-02
OSVCLSA-2026-1792161460 No score
TuxCare security update for @nuxt/kit (11 CVEs)
TuxCare rebuilt @nuxt/kit to address 11 CVEs. Fixed in 3.12.4-tuxcare.12.
- Record
CLSA-2026-1792161460- Updated
- 2026-11-02
OSVCLSA-2026-1792161463 No score
TuxCare security update for @nuxt/kit (7 CVEs)
TuxCare rebuilt @nuxt/kit to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1792161463- Updated
- 2026-11-02
OSVCLSA-2026-1792161485 No score
TuxCare security update for @nuxt/rspack-builder (7 CVEs)
TuxCare rebuilt @nuxt/rspack-builder to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1792161485- Updated
- 2026-11-02
OSVCLSA-2026-1792161601 No score
TuxCare security update for @nuxt/schema (11 CVEs)
TuxCare rebuilt @nuxt/schema to address 11 CVEs. Fixed in 3.12.4-tuxcare.12.
- Record
CLSA-2026-1792161601- Updated
- 2026-11-02
OSVCLSA-2026-1792161604 No score
TuxCare security update for @nuxt/schema (7 CVEs)
TuxCare rebuilt @nuxt/schema to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1792161604- Updated
- 2026-11-02
OSVCLSA-2026-1792161823 No score
TuxCare security update for @nuxt/vite-builder (11 CVEs)
TuxCare rebuilt @nuxt/vite-builder to address 11 CVEs. Fixed in 3.12.4-tuxcare.12.
- Record
CLSA-2026-1792161823- Updated
- 2026-11-02
OSVCLSA-2026-1792161826 No score
TuxCare security update for @nuxt/vite-builder (7 CVEs)
TuxCare rebuilt @nuxt/vite-builder to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1792161826- Updated
- 2026-11-02
OSVCLSA-2026-1792161936 No score
TuxCare security update for @nuxt/webpack-builder (11 CVEs)
TuxCare rebuilt @nuxt/webpack-builder to address 11 CVEs. Fixed in 3.12.4-tuxcare.12.
- Record
CLSA-2026-1792161936- Updated
- 2026-11-02
OSVCLSA-2026-1792161939 No score
TuxCare security update for @nuxt/webpack-builder (7 CVEs)
TuxCare rebuilt @nuxt/webpack-builder to address 7 CVEs. Fixed in 4.0.3-tuxcare.7.
- Record
CLSA-2026-1792161939- Updated
- 2026-11-02
OSVCLSA-2026-1793661073 No score
TuxCare security update for nuxi (2 CVEs)
TuxCare rebuilt nuxi to address 2 CVEs. Fixed in 3.2.0-tuxcare.6.
- Record
CLSA-2026-1793661073- Updated
- 2026-11-03
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
nuxtnpm |
4.0.0 up to 4.5.1 | 4.5.1 |
nuxtnpm |
3.1.0 up to 3.21.10 | 3.21.10 |
nuxtTuxCare:npm From an advisory covering 11 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.12, plus listed versions 3.12.43.12.4-tuxcare.103.12.4-tuxcare.113.12.4-tuxcare.23.12.4-tuxcare.3 Show 6 moreShow less3.12.4-tuxcare.43.12.4-tuxcare.53.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.12 |
nuxtTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.24.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.54.0.3-tuxcare.6 |
4.0.3-tuxcare.7 |
@nuxt/kitTuxCare:npm From an advisory covering 11 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.12, plus listed versions 3.12.43.12.4-tuxcare.113.12.4-tuxcare.23.12.4-tuxcare.33.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.12 |
@nuxt/kitTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.5 |
4.0.3-tuxcare.7 |
@nuxt/rspack-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.5 |
4.0.3-tuxcare.7 |
@nuxt/schemaTuxCare:npm From an advisory covering 11 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.12, plus listed versions 3.12.43.12.4-tuxcare.103.12.4-tuxcare.113.12.4-tuxcare.23.12.4-tuxcare.3 Show 4 moreShow less3.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.12 |
@nuxt/schemaTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.54.0.3-tuxcare.6 |
4.0.3-tuxcare.7 |
@nuxt/vite-builderTuxCare:npm From an advisory covering 11 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.12, plus listed versions 3.12.43.12.4-tuxcare.103.12.4-tuxcare.113.12.4-tuxcare.23.12.4-tuxcare.3 Show 4 moreShow less3.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.12 |
Show 4 moreShow less
| Package | Affected | Fixed |
|---|---|---|
@nuxt/vite-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.54.0.3-tuxcare.6 |
4.0.3-tuxcare.7 |
@nuxt/webpack-builderTuxCare:npm From an advisory covering 11 CVEs |
3.12.4-tuxcare.0 up to 3.12.4-tuxcare.12, plus listed versions 3.12.43.12.4-tuxcare.113.12.4-tuxcare.23.12.4-tuxcare.33.12.4-tuxcare.4 Show 5 moreShow less3.12.4-tuxcare.53.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9 |
3.12.4-tuxcare.12 |
@nuxt/webpack-builderTuxCare:npm From an advisory covering 7 CVEs |
4.0.3-tuxcare.0 up to 4.0.3-tuxcare.7, plus listed versions 4.0.34.0.3-tuxcare.14.0.3-tuxcare.34.0.3-tuxcare.44.0.3-tuxcare.5 |
4.0.3-tuxcare.7 |
nuxiTuxCare:npm From an advisory covering 2 CVEs |
3.2.0-tuxcare.0 up to 3.2.0-tuxcare.6, plus listed versions 3.2.03.2.0-tuxcare.23.2.0-tuxcare.43.2.0-tuxcare.5 |
3.2.0-tuxcare.6 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases | OSV | |
| 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-71321 is a high vulnerability (CVSS 7.5) in @clerk Nuxt, published August 5, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.74%, the 54th percentile. Fixed in nuxt 4.5.1.
References
github.com/nuxt/nuxt/security/advisories/GHSA-9pgf-384g-p7mv
github.com/nuxt/nuxt/commit/4e35ae9babd94be53246e31200232d48438bb34e
github.com/nuxt/nuxt/commit/668cdfdfda41849ed11c1ee5e2067a11fc103b22
github.com/nuxt/nuxt/releases/tag/v3.21.10
github.com/nuxt/nuxt/releases/tag/v4.5.1
github.com/advisories/GHSA-9pgf-384g-p7mv
github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71321.json
nvd.nist.gov/vuln/detail/CVE-2026-71321
github.com/nuxt/nuxt