PT-2026-52658 · Npm · Nuxt
Published
2026-06-15
·
Updated
2026-06-15
CVSS v4.0
2.3
Low
| Vector | AV:A/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N |
Summary
When running
nuxt dev, Nuxt registers an unauthenticated route at /.well-known/appspecific/com.chrome.devtools.json that returns the absolute filesystem path of the project root and a per-project UUID persisted to node modules/.cache/nuxt/chrome-workspace.json. The route is enabled by default via experimental.chromeDevtoolsProjectSettings: true.The endpoint exists to let Chrome DevTools' Workspace integration map sources to the developer's local checkout. The handler is registered directly on
nitro.options.devHandlers and does not pass through the CORS / origin wrapper that the rest of the dev pipeline uses, so it has no host / origin / Sec-Fetch-Site check of its own.Impact
Dev-server only. Production builds do not register the route.
Two values are disclosed:
workspace.root: the absolute filesystem path of the project (commonly reveals the OS username and the on-disk project name).workspace.uuid: a v4 UUID persisted tonode modules/.cache/nuxt/chrome-workspace.json, stable across dev-server restarts and re-clones.
Threat model
The response carries no
Access-Control-Allow-Origin header. A cross-origin fetch() from an arbitrary malicious page is therefore blocked by the browser's same-origin policy and cannot read the body. The two realistic recovery paths are:- LAN-adjacent attacker when the developer runs
nuxt dev --host(or otherwise binds to a non-loopback interface). A plaincurl http://<dev-lan-ip>:3000/.well-known/appspecific/com.chrome.devtools.jsonreturns the JSON; no browser, no CORS. - DNS rebinding against the default loopback dev server. A page the developer visits resolves to the attacker, then re-resolves to
127.0.0.1after the TTL; the browser believes the request is same-origin and reads the response.
Affected versions
nuxt@4.0.0-alpha.1 (PR #32084) through nuxt@4.4.6. 3.x is not affected.Reproduction
bash
npx nuxt dev
curl -s http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
# {"workspace":{"uuid":"...","root":"/Users/<name>/..."}}Workaround
Set
experimental: { chromeDevtoolsProjectSettings: false } in nuxt.config.ts. Chrome DevTools' Workspace auto-integration will stop working; the dev server is otherwise unaffected.Patches
Fix
Information Disclosure
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Nuxt