CVE-2026-119201: Nuxt dev server exposes generated appSecret through Vite file serving
When no appSecret is configured (via NUXT_APP_SECRET, NITRO_APP_SECRET or runtimeConfig.appSecret), nuxt dev generates a development secret and stores it in <buildDir>/app-secret (by default .nuxt/app-secret). The build directory is inside the directories that Nuxt passes to Vite’s server.fs.allow, so the file can be fetched from the dev server:
curl http://<dev-server>/_nuxt/@fs/<absolute-path-to-project>/.nuxt/app-secret
Anyone who can read it can compute every secret derived from it with deriveSecret(), including the default password used by useSession, and so can forge session cookies accepted by that dev server.
Exploitation 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). 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.
Production builds never generate an appSecret and are not affected. Dev servers with an explicitly configured appSecret do not use the generated file.
References
- github.com/advisories/GHSA-3xf4-9g3c-4h4w
- github.com/nuxt/nuxt/commit/2981290f36d9c5412c022758f3d89ba21a845308
- github.com/nuxt/nuxt/commit/545004cc350be7003dea4116ce6206d6f980b1fd
- github.com/nuxt/nuxt/releases/tag/v4.6.3
- github.com/nuxt/nuxt/security/advisories/GHSA-3xf4-9g3c-4h4w
- nvd.nist.gov/vuln/detail/CVE-2026-119201
Code Behaviors & Features
Detect and mitigate CVE-2026-119201 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →