Nuxt dev server exposes private runtime config through the Nitro dev bundle
CVE-2026-119199
Summary With Nitro 2 (the default server engine in Nuxt 3 and Nuxt 4), the Nitro development server bundle written by nuxt dev can be fetched through the Vite dev server. Nitro inlines the resolved runtimeConfig into that bundle, so private runtime config values that were resolved at build time can be read by anyone with HTTP access to the dev server. Impact nuxt dev writes the Nitro development server bundle to /dev/index.mjs (by default .nuxt/dev/index.mjs). The build directory is inside the directories Nuxt passes to Vite's server.fs.allow, so the bundle is served by the dev server: bash curl http:// /nuxt/@fs/ /.nuxt/dev/index.mjs The response contains every private (non-public) runtime config value that was resolved at build time. That includes values set in nuxt.config, such as a secret read from .env: ts export default defineNuxtConfig({ runtimeConfig: { apiSecret: process.env.APISECRET, }, }) From Nuxt 4.6.0, it also includes the generated development appSecret. Vite's default deny list blocks .env itself, but not the bundle containing values read from it. Exploitation requires direct HTTP access to the dev server. nuxt dev listens on localhost by default, so this mainly…
Assessment
- CVSS
- 5.9 (v3.1)
- Severity
- Medium
- EPSS
- 0.0035% chance of exploitation in the next 30 days
- Known exploited
- Not listed in CISA KEV
- Exploit availability
- Nothing found in Exploit-DB, Metasploit, Nuclei or public PoC repositories
- Published
- 30 October 2026
- Last updated
- 30 October 2026
- Affected
- npm · @nuxt/vite-builder
- Weakness
- CWE-200, CWE-538, CWE-552
CVSS vectorCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
At the source
References
Query this programmatically
Agents can read this through the MCP endpoint, or over HTTP:
curl https://cve.zerocrew.in/api/cve/CVE-2026-119199