Skip to content

Back to the catalog

Socket: Free Certified Patches for Nuxt Security Vulnerabilities
socket.devadvisory

Socket: Free Certified Patches for Nuxt Security Vulnerabilities

Nuxt 4.5.1/3.21.10 and @nuxt/devtools 3.3.1 patch eight GitHub Security Advisories, the most severe being GHSA-9473-5f9j-94wq, a server-side RCE via server island props reaching Vue's dynamic component resolution when vue.runtimeCompiler is enabled, plus a related unauthorized component instantiation bug (GHSA-48hr-524c-v5w3), a route-rule authz bypass, DoS issues, cross-user payload cache disclosure, and a critical dev-only RCE in Nuxt DevTools. Socket released free Certified Patches for the two highest-severity issues (installable via `socket patch add`) as an interim fix for teams that can't immediately upgrade, and is preparing patches for the rest.

TL;DR Nuxt patches eight security advisories including a server island props RCE; Socket ships free Certified Patches for the two worst ones.
Document

What it is

Socket's post on the coordinated Nuxt security release: Nuxt 4.5.1 and 3.21.10 and @nuxt/devtools 3.3.1, covering eight GitHub Security Advisories. Socket has published free Certified Patches for the two most severe production issues (GHSA-9473-5f9j-94wq and GHSA-48hr-524c-v5w3) and says patches for the remaining advisories are in progress, to be later merged into a single consolidated patch.

Preconditions / Affected

  • The server-side RCE (GHSA-9473-5f9j-94wq) requires vue.runtimeCompiler enabled (off by default) and an app pattern where attacker-controlled server-island props reach Vue's dynamic component resolution.
  • The DevTools RCE affects development environments only, not production. Reachable by another process on the host, by users on the local network when the dev server runs with --host, or by a malicious site visited while the dev server is running.
  • The cross-user cached payload disclosure affects Nuxt 4.x authenticated pages using cache, swr, or isr route rules.
  • The route-rule authorization bypass triggers when appMiddleware is used with route rules whose keys contain uppercase characters.

What to do

Primary fix — upgrade, and refresh the lockfile so it resolves @nuxt/devtools@3.3.1 or later:

npx nuxt upgrade --dedupe

Where an immediate upgrade isn't practical, apply the free Certified Patches:

socket patch add GHSA-9473-5f9j-94wq
socket patch add GHSA-48hr-524c-v5w3

The page also flags an operational step the summary omits: teams with authenticated pages using cache, swr, or isr route rules must purge CDN and edge caches after upgrading — previously cached _payload.json responses remain served until explicitly evicted, so the upgrade alone does not close the disclosure. Additionally, check transitive dependencies for affected versions, and audit server-island components that pass untrusted props into dynamic/polymorphic Vue components.

Caveats

  • Certified Patches apply a minimal reviewed change to the vulnerable version while preserving other behavior — a stopgap, not equivalent to the full upgrade. As of this post only two of the eight advisories have patches published; the rest are pending.
  • GHSA-48hr-524c-v5w3 does not enable code execution — it allows unauthorized instantiation of HTML elements or globally registered components, relevant mainly to apps using polymorphic component patterns or Vue attribute fallthrough.
  • The RCE's non-default precondition (vue.runtimeCompiler) means many deployments are not exploitable via that path, but the cache-purge and route-rule issues do not carry the same gating.

Organisations named here

  • GHSA-48hr-524c-v5w3
  • GHSA-9473-5f9j-94wq

Technologies named here

  • Socket
  • Nuxt
  • Socket Certified Patch
  • @nuxt/devtools
  • socket patch add
  • npx nuxt upgrade --dedupe
  • Vue.js

Techniques named here

  • Server-side remote code execution via server island props
  • Unauthorized component instantiation via server island props
  • Route-rule authorization bypass
  • Denial of service
  • Cross-user payload disclosure
  • Development-server path disclosure
  • Remote code execution in Nuxt DevTools