{"id":"EUVD-2026-113370","revision":null,"records":[{"revision":"58d69e09d30a480198f5ecff8ebeba3e","observedAt":"2026-10-29T21:48:56.968+00:00","statement":{"source":"cve-program","id":"CVE-2026-119199","aliases":[],"title":"Nuxt dev server exposes private runtime config through the Nitro dev bundle","description":"Nuxt is an open-source web development framework for Vue.js. From 3.0.0 until 4.6.3, the Nuxt development server can expose the Nitro 2 development bundle at <buildDir>/dev/index.mjs through Vite file serving when the server is reachable over HTTP. Nitro inlines private runtimeConfig values resolved at build time into that bundle, including secrets configured in nuxt.config, and Nuxt 4.6.0 and later also inline the generated development appSecret. The default localhost binding limits remote exposure, production builds and Nitro 3 are not affected, and runtime configuration supplied only through NUXT_* environment variables at server startup is not inlined. This issue is fixed in version 4.6.3.","state":0,"publishedAt":"2026-10-29T20:14:07.854+00:00","modifiedAt":"2026-10-29T20:27:59.121+00:00","affected":[{"ecosystem":"Vendor product","name":"nuxt","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"nuxt\",\n                    \"product\": \"nuxt\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 3.0.0, < 4.6.3\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","score":5.9,"severity":"MEDIUM"}],"references":["https://github.com/nuxt/nuxt/security/advisories/GHSA-648h-gw55-m2g7","https://github.com/nuxt/nuxt/commit/12b58f9d8768682611c3ad4ea4d403875129dbca","https://github.com/nuxt/nuxt/releases/tag/v4.6.3"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-119199","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-119199","identifiers":["CVE-2026-119199"]},"retained":false,"historicalAffected":[]},{"revision":"f8ca63f43ab6495db6a89a7a1e21bbf7","observedAt":"2026-11-06T01:44:45.069+00:00","statement":{"source":"euvd","id":"EUVD-2026-113370","aliases":["CVE-2026-119199","GHSA-648h-gw55-m2g7"],"title":"Nuxt is an open-source web development framework for Vue.js. From 3.0.0 until 4.6.3, the Nuxt development server can expose the Nitro 2 development bundle at <buildDir>/dev/index.mjs through Vite file serving when the server is reachable ov…","description":"Nuxt is an open-source web development framework for Vue.js. From 3.0.0 until 4.6.3, the Nuxt development server can expose the Nitro 2 development bundle at <buildDir>/dev/index.mjs through Vite file serving when the server is reachable over HTTP. Nitro inlines private runtimeConfig values resolved at build time into that bundle, including secrets configured in nuxt.config, and Nuxt 4.6.0 and later also inline the generated development appSecret. The default localhost binding limits remote exposure, production builds and Nitro 3 are not affected, and runtime configuration supplied only through NUXT_* environment variables at server startup is not inlined. This issue is fixed in version 4.6.3.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","score":5.9,"severity":null}],"references":["https://github.com/nuxt/nuxt/security/advisories/GHSA-648h-gw55-m2g7","https://github.com/nuxt/nuxt/commit/12b58f9d8768682611c3ad4ea4d403875129dbca","https://github.com/nuxt/nuxt/releases/tag/v4.6.3"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-113370","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 29, 2026, 8:14:07 PM","dateUpdated":"Oct 29, 2026, 8:27:59 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-113370","identifiers":["EUVD-2026-113370","CVE-2026-119199","GHSA-648h-gw55-m2g7"]},"retained":false,"historicalAffected":[]},{"revision":"80dcd4ce18fc4bd6aa2e49845ff7a73d","observedAt":"2026-10-30T23:47:40.018+00:00","statement":{"source":"nvd","id":"CVE-2026-119199","aliases":[],"title":"Nuxt is an open-source web development framework for Vue.js. From 3.0.0 until 4.6.3, the Nuxt development server can expose the Nitro 2 development bundle at <buildDir>/dev/index.mjs through Vite file serving when the server is reachable ov…","description":"Nuxt is an open-source web development framework for Vue.js. From 3.0.0 until 4.6.3, the Nuxt development server can expose the Nitro 2 development bundle at <buildDir>/dev/index.mjs through Vite file serving when the server is reachable over HTTP. Nitro inlines private runtimeConfig values resolved at build time into that bundle, including secrets configured in nuxt.config, and Nuxt 4.6.0 and later also inline the generated development appSecret. The default localhost binding limits remote exposure, production builds and Nitro 3 are not affected, and runtime configuration supplied only through NUXT_* environment variables at server startup is not inlined. This issue is fixed in version 4.6.3.","state":0,"publishedAt":"2026-10-29T21:17:18.797+00:00","modifiedAt":"2026-10-30T17:18:03.88+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","score":5.9,"severity":"MEDIUM"}],"references":["https://github.com/nuxt/nuxt/commit/12b58f9d8768682611c3ad4ea4d403875129dbca","https://github.com/nuxt/nuxt/releases/tag/v4.6.3","https://github.com/nuxt/nuxt/security/advisories/GHSA-648h-gw55-m2g7"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-119199","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Awaiting Analysis","weaknesses":["CWE-200","CWE-538"],"productCriteria":[],"sourceDates":{"published":"2026-10-29T21:17:18.797","lastModified":"2026-10-30T17:18:03.880"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-119199","identifiers":["CVE-2026-119199"]},"retained":false,"historicalAffected":[]},{"revision":"23dc962be80a4703b57db331d99551f0","observedAt":"2026-10-30T23:45:44.41+00:00","statement":{"source":"osv","id":"GHSA-648h-gw55-m2g7","aliases":["CVE-2026-119199"],"title":"Nuxt dev server exposes private runtime config through the Nitro dev bundle","description":"### Summary\n\nWith 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.\n\n### Impact\n\n`nuxt dev` writes the Nitro development server bundle to `<buildDir>/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:\n\n```bash\ncurl http://<dev-server>/_nuxt/@fs/<absolute-path-to-project>/.nuxt/dev/index.mjs\n```\n\nThe 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`:\n\n```ts\nexport default defineNuxtConfig({\n  runtimeConfig: {\n    apiSecret: process.env.API_SECRET,\n  },\n})\n```\n\nFrom 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.\n\nExploitation requires direct HTTP access to the dev server. `nuxt dev` listens on localhost by default, so this mainly affects dev servers that are exposed to a network (for example with `--host`, a published container port or a tunnel). As far as we can tell, a malicious website cannot read the file through a developer's browser: Vite's CORS and host checks prevent pages on other origins from reading the response.\n\nProduction builds are not affected, because the Vite dev server is not used and the server bundle is not served. Nuxt projects using Nitro 3 do not write the server bundle to disk in development and are not affected. Private runtime config values that are left empty in `nuxt.config` and supplied through `NUXT_*` environment variables are applied when the server starts, are not inlined into the bundle, and are not exposed.\n\n### Patches\n\nFixed in `@nuxt/vite-builder` 4.6.3, which `nuxt` 4.6.3 depends on. The dev server now adds Nitro's development output directory to Vite's `server.fs.deny`, keeping Vite's default deny list.\n\nNuxt 3 has reached end of life and will not receive a fix.\n\n### Workarounds\n\nAvoid exposing the dev server to untrusted networks. Alternatively, set private runtime config keys to an empty default in `nuxt.config` and provide their values with the matching `NUXT_*` environment variables (for example `runtimeConfig: { apiSecret: '' }` with `NUXT_API_SECRET` in `.env`).\n\nIf a dev server has been reachable by untrusted clients, rotate any credentials that were set through `runtimeConfig` in `nuxt.config`.","state":0,"publishedAt":"2026-10-30T23:00:43+00:00","modifiedAt":"2026-10-30T23:15:08.2306932+00:00","affected":[{"ecosystem":"npm","name":"@nuxt/vite-builder","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.0.0"},{"kind":"fixed","version":"4.6.3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/nuxt/nuxt/security/advisories/GHSA-648h-gw55-m2g7","https://nvd.nist.gov/vuln/detail/CVE-2026-119199","https://github.com/nuxt/nuxt/commit/12b58f9d8768682611c3ad4ea4d403875129dbca","https://github.com/nuxt/nuxt","https://github.com/nuxt/nuxt/releases/tag/v4.6.3"],"sourceUrl":"https://github.com/advisories/GHSA-648h-gw55-m2g7","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-648h-gw55-m2g7","identifiers":["GHSA-648h-gw55-m2g7","CVE-2026-119199"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-07T02:34:43.7661215+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-07T02:34:43.7661215+00:00","lastSuccessAt":"2026-11-07T02:34:43.9387828+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:43.9387838+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-bb5c9d5a08063ef076042e33dd72a7d0ffa4c4487efdcf3106e29ba55ec2ad57-5aac302c22044f92cc2d766b3e31e7dc718ccd14d0209c666b12bbe38c20772f","complete":true,"records":420475,"lastAttemptAt":"2026-11-07T02:34:42.7079446+00:00","lastSuccessAt":"2026-11-07T02:34:42.70025+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:42.7079446+00:00","snapshotPublishedAt":"2026-11-07T01:31:15+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-b8d16fbf74464bc88a41c5137fa81682","complete":false,"records":13623,"lastAttemptAt":"2026-11-07T02:46:32.0890109+00:00","lastSuccessAt":"2026-11-07T02:46:32.084+00:00","error":"11 identifier lookups failed; latest failures include HTTP 403. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-07T02:46:32.084+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13674,"expectedIdentifiers":13685,"failedIdentifiers":11},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-07T02:34:43.7661215+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-07T02:34:43.7661215+00:00","lastSuccessAt":"2026-11-07T02:34:43.9397262+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:43.9397266+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-34343b4ea57e47c5a482c8fcf20a381e","complete":true,"records":13645,"lastAttemptAt":"2026-11-07T02:34:44.5754579+00:00","lastSuccessAt":"2026-11-07T01:26:55.938+00:00","error":null,"lastVerifiedAt":"2026-11-07T01:26:55.938+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13685,"expectedIdentifiers":13685,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-0eb4d6dde62dffacd040ad992d4fd5a65cd7d0dc5f5f4cfa8b41967fc6f9ca5f","complete":true,"records":9914,"lastAttemptAt":"2026-11-07T02:34:43.3341619+00:00","lastSuccessAt":"2026-11-06T20:10:36.6450506+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:43.3341619+00:00","snapshotPublishedAt":"2026-11-06T20:02:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-07T02:34:42.8444254+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:42.8444254+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-335633e78a15c9cde10a6025895b5617717087fb945489ae7e15d377bacf34a9","complete":true,"records":3055,"lastAttemptAt":"2026-11-07T02:34:43.7181027+00:00","lastSuccessAt":"2026-11-06T16:03:00.7615789+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:43.7181027+00:00","snapshotPublishedAt":"2026-11-06T16:02:48+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-a0b728bc1c5526b5429930c00621636eba8655069c176697c3080f8377619ad7","complete":true,"records":231291,"lastAttemptAt":"2026-11-07T02:34:43.2326712+00:00","lastSuccessAt":"2026-11-07T00:28:51.1983528+00:00","error":null,"lastVerifiedAt":"2026-11-07T02:34:43.2326712+00:00","snapshotPublishedAt":"2026-11-06T23:33:08+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}