GHSA-7c4v-fwgw-9rf7Medium▾ SunlitNuxt dev server discloses project root and workspace UUID via the Chrome DevTools workspace endpoint
▾ Sunlit zone — Low / medium · no exploitation signal
impact 27.5 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
When a Nuxt dev server is bound to a network-reachable interface (for example nuxt dev --host for on-device testing), the default-enabled Chrome DevTools workspace endpoint GET /.well-known/appspecific/com.chrome.devtools.json returns the absolute project root (workspace.root, i.e. rootDir) and a persistent per-project workspace UUID.
GHSA-rq7w-g337-39qq added a gate (isLocalDevRequest) intended to restrict this endpoint to local requests, but that gate is header-based: it trusts request metadata rather than the connected peer address. A request with no Sec-Fetch-Site, Origin, and Referer headers (normal for a non-browser client such as curl) is treated as local, and the Host allow-list is compared against the attacker-supplied Host header. As a result, any unauthenticated host that can reach the dev server on the LAN can retrieve the project's absolute filesystem path and workspace UUID, for example with curl -H 'Host: localhost' http://<dev-host-lan-ip>:3000/.well-known/appspecific/com.chrome.devtools.json.
This is information disclosure only: there is no file read, file write, or code execution reachable from the endpoint. It requires the dev server to be reachable beyond loopback and experimental.chromeDevtoolsProjectSettings to be enabled (it defaults to true). Production builds are unaffected, because the endpoint is registered only as a development handler.
Fixed in [email protected] and [email protected]. The endpoint now additionally requires the connected TCP peer to be a loopback address, verified from the socket rather than from request headers, so a non-loopback LAN client is rejected regardless of the Host, Origin, Referer, or Sec-Fetch-* headers it sends. The shared header-based check is left unchanged, so the CSRF / same-origin behaviour that other dev handlers rely on is preserved. After this fix, Chrome DevTools workspace auto-mapping only works when the browser reaches the dev server over loopback (localhost / 127.0.0.1 / ::1), which matches the feature's intent (the browser and dev server sharing a filesystem).
experimental.chromeDevtoolsProjectSettings: false in nuxt.config.nuxt >= 4.4.7, < 4.5.1nuxt >= 3.21.7, < 3.21.10Upgrade to a patched release:
nuxt 4.5.1nuxt 3.21.10Connected by shared product, vendor, weakness, or advisory.
GHSA-4jjw-pwvw-q6w3Medium· 6.2Duplicate Advisory: Nuxt dev server discloses project root and workspace UUID via the Chrome DevTools workspace endpoint
CVE-2026-71314High· 7.5Nuxt is an open-source web development framework for Vue.js
CVE-2026-71315High· 8.2Nuxt is an open-source web development framework for Vue.js
CVE-2026-71318Medium· 4.8Nuxt is an open-source web development framework for Vue.js
CVE-2026-71320High· 8.1Nuxt is an open-source web development framework for Vue.js
CVE-2026-71321High· 7.5Nuxt is an open-source web development framework for Vue.js