Every CVE Search/ Get API key

CVE-2026-71320

Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props

8.1 HighFix available

Nuxt is an open-source web development framework for Vue.js. From 3.4.0 until 3.21.10 and 4.5.1, an attacker can inject a template key through /__nuxt_island/ props into a dynamic component when vue.runtimeCompiler: true is enabled, causing template execution in the Nitro process. This issue is fixed in 3.21.10 and 4.5.1.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.71%Up 0.3 points since Aug 6, 2026
90%50%10%1%

What each source reports

CVE List Score used 8.1

Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props

Nuxt is an open-source web development framework for Vue.js. From 3.4.0 until 3.21.10 and 4.5.1, an attacker can inject a template key through /__nuxt_island/ props into a dynamic component when vue.runtimeCompiler: true is enabled, causing template execution in the Nitro process. This issue is fixed in 3.21.10 and 4.5.1.

Record
CVE-2026-71320
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-74, CWE-94
Updated
2026-11-02
EUVDEUVD-2026-53649 8.1

Nuxt is an open-source web development framework for Vue.js. From 3.4.0 until 3.21.10 and 4.5.1, an attacker can inject a template key through /__nuxt_island/ props into a dynamic component when vue.runtimeCompiler: true is enabled, causing template execution in the Nitro process. This issue is fixed in 3.21.10 and 4.5.1.

Record
EUVD-2026-53649
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-9473-5f9j-94wq 8.1

Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props

Impact

Nuxt server islands accept props via the /__nuxt_island/ endpoint. When vue.runtimeCompiler: true is enabled (off by default) and the application has a server island component that forwards props into Vue's dynamic component resolution (<component :is>, resolveDynamicComponent, or h()), an attacker can inject a template key into the island props to achieve server-side remote code execution in the Nitro process.

{ "as": { "template": "<attacker-controlled>" } }

Vue's runtime template compiler compiles and executes the attacker-controlled template in the server process. The same primitive also works on the client side when the runtime compiler is active there, though the server-side path is the primary concern.

Some component libraries expose a polymorphic as / asChild prop that forwards its value into <component :is>; @nuxt/ui (via reka-ui) is a widely used example. An application is affected if such a component receives the attacker-controlled value, provided vue.runtimeCompiler is also enabled. Note this does not require the island author to explicitly forward a prop: island props that the island component does not declare fall through as attributes onto its single root element (standard Vue attribute inheritance), so an island whose root is a polymorphic component receives the attacker's as value implicitly. These libraries are not themselves vulnerable; they are noted only because they commonly provide the dynamic-component sink.

Common configurations that satisfy the preconditions

The flaw is in Nuxt core. The library below is not itself vulnerable; it is noted because it commonly provides the dynamic-component sink an application might inadvertently expose.

  • @nuxt/ui (via its underlying reka-ui primitives) exposes a polymorphic as / asChild prop that is forwarded into Vue's dynamic-component resolution. Installing @nuxt/ui does not by itself register any component as a server island. Exploitation requires the application to define an island component (a .server.vue file) whose rendered output puts the attacker-controlled value on such a component's as / asChild prop; with vue.runtimeCompiler: true, the attacker-controlled template is then compiled and executed. Because undeclared island props fall through as attributes to the single root, this can happen without any explicit binding: an island whose root is a reka-ui / @nuxt/ui component is enough. An example vulnerable island (the as value falls through to UButton, no explicit forwarding needed):

    <!-- components/MyWidget.server.vue -->
    <template>
      <UButton>Save</UButton>
    </template>
    

The island URL hash (/__nuxt_island/<Name>_<hash>.json) is a deterministic (unsalted) content hash, not an authentication token. It provides integrity relative to the URL but is not a security boundary: an attacker who knows the component name and desired props can compute a valid hash.

Mitigating factors

  • vue.runtimeCompiler is off by default in Nuxt. The vast majority of Nuxt applications are not affected.
  • Exploitation requires a second precondition: the application must have a server island component that puts an attacker-controlled value onto a dynamic-component path (<component :is>, resolveDynamicComponent, h(), or a polymorphic as / asChild prop). This can occur explicitly or via attribute fallthrough when the island's root is such a component.
  • SSG / static deployments are largely unreachable via this vector (no server process to exploit).
  • Island component names are constrained to the build-time component registry; an attacker cannot resolve arbitrary components.

Affected versions

Nuxt >=3.4.0 <3.21.10 and >=4.0.0 <4.5.1, and only when vue.runtimeCompiler: true and component islands are active. Earlier versions did not allow the Vue compiler to be enabled in the server bundle (the compiler dependencies have been…

Record
GHSA-9473-5f9j-94wq
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-74, CWE-94
Updated
2026-11-02
NVD 8.1

Nuxt is an open-source web development framework for Vue.js. From 3.4.0 until 3.21.10 and 4.5.1, an attacker can inject a template key through /__nuxt_island/ props into a dynamic component when vue.runtimeCompiler: true is enabled, causing template execution in the Nitro process. This issue is fixed in 3.21.10 and 4.5.1.

Record
CVE-2026-71320
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-74, CWE-94
Updated
2026-11-02
OSV 8.1

Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props

Nuxt is an open-source web development framework for Vue.js. From 3.4.0 until 3.21.10 and 4.5.1, an attacker can inject a template key through /__nuxt_island/ props into a dynamic component when vue.runtimeCompiler: true is enabled, causing template execution in the Nitro process. This issue is fixed in 3.21.10 and 4.5.1.

Record
CVE-2026-71320
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-74, CWE-94
Updated
2026-11-02
OSVGHSA-9473-5f9j-94wq 8.1

Nuxt: Server-Side Remote Code Execution via Runtime Template Injection in Nuxt Server Island Props

Impact

Nuxt server islands accept props via the /__nuxt_island/ endpoint. When vue.runtimeCompiler: true is enabled (off by default) and the application has a server island component that forwards props into Vue's dynamic component resolution (<component :is>, resolveDynamicComponent, or h()), an attacker can inject a template key into the island props to achieve server-side remote code execution in the Nitro process.

{ "as": { "template": "<attacker-controlled>" } }

Vue's runtime template compiler compiles and executes the attacker-controlled template in the server process. The same primitive also works on the client side when the runtime compiler is active there, though the server-side path is the primary concern.

Some component libraries expose a polymorphic as / asChild prop that forwards its value into <component :is>; @nuxt/ui (via reka-ui) is a widely used example. An application is affected if such a component receives the attacker-controlled value, provided vue.runtimeCompiler is also enabled. Note this does not require the island author to explicitly forward a prop: island props that the island component does not declare fall through as attributes onto its single root element (standard Vue attribute inheritance), so an island whose root is a polymorphic component receives the attacker's as value implicitly. These libraries are not themselves vulnerable; they are noted only because they commonly provide the dynamic-component sink.

Common configurations that satisfy the preconditions

The flaw is in Nuxt core. The library below is not itself vulnerable; it is noted because it commonly provides the dynamic-component sink an application might inadvertently expose.

  • @nuxt/ui (via its underlying reka-ui primitives) exposes a polymorphic as / asChild prop that is forwarded into Vue's dynamic-component resolution. Installing @nuxt/ui does not by itself register any component as a server island. Exploitation requires the application to define an island component (a .server.vue file) whose rendered output puts the attacker-controlled value on such a component's as / asChild prop; with vue.runtimeCompiler: true, the attacker-controlled template is then compiled and executed. Because undeclared island props fall through as attributes to the single root, this can happen without any explicit binding: an island whose root is a reka-ui / @nuxt/ui component is enough. An example vulnerable island (the as value falls through to UButton, no explicit forwarding needed):

    <!-- components/MyWidget.server.vue -->
    <template>
      <UButton>Save</UButton>
    </template>
    

The island URL hash (/__nuxt_island/<Name>_<hash>.json) is a deterministic (unsalted) content hash, not an authentication token. It provides integrity relative to the URL but is not a security boundary: an attacker who knows the component name and desired props can compute a valid hash.

Mitigating factors

  • vue.runtimeCompiler is off by default in Nuxt. The vast majority of Nuxt applications are not affected.
  • Exploitation requires a second precondition: the application must have a server island component that puts an attacker-controlled value onto a dynamic-component path (<component :is>, resolveDynamicComponent, h(), or a polymorphic as / asChild prop). This can occur explicitly or via attribute fallthrough when the island's root is such a component.
  • SSG / static deployments are largely unreachable via this vector (no server process to exploit).
  • Island component names are constrained to the build-time component registry; an attacker cannot resolve arbitrary components.

Affected versions

Nuxt >=3.4.0 <3.21.10 and >=4.0.0 <4.5.1, and only when vue.runtimeCompiler: true and component islands are active. Earlier versions did not allow the Vue compiler to be enabled in the server bundle (the compiler dependencies have been…

Record
GHSA-9473-5f9j-94wq
CVSS 3.1
8.1 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-74, CWE-94
Updated
2026-11-02
Show 11 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

Affected products

Affected packages

Affected packages
PackageAffectedFixed
nuxt
npm
4.0.0 up to 4.5.1
4.5.1
nuxt
npm
3.4.0 up to 3.21.10
3.21.10
nuxt
TuxCare: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 less
3.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
nuxt
TuxCare: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/kit
TuxCare: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/kit
TuxCare: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-builder
TuxCare: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/schema
TuxCare: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 less
3.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9
3.12.4-tuxcare.12
@nuxt/schema
TuxCare: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-builder
TuxCare: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 less
3.12.4-tuxcare.63.12.4-tuxcare.73.12.4-tuxcare.83.12.4-tuxcare.9
3.12.4-tuxcare.12
@nuxt/vite-builder
TuxCare: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-builder
TuxCare: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 less
3.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-builder
TuxCare: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

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-71320 is a high vulnerability (CVSS 8.1) 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.71%, the 53rd percentile. Fixed in nuxt 4.5.1.

References

This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open