GHSA-7c4v-fwgw-9rf7: Infoleak
Impact
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.
Patches
Fixed in nuxt@4.5.1 and nuxt@3.21.10. 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).
Workarounds
- Do not bind the dev server to a non-loopback interface on an untrusted network, or restrict access to the dev port with a firewall. - Disable the feature by setting experimental.chromeDevtoolsProjectSettings: false in nuxt.config.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/nuxtto a version that resolves this vulnerability.Fixed in 3.21.10 - Upgrade
Upgrade
npm/nuxtto a version that resolves this vulnerability.Fixed in 4.5.1 - Upgrade
Upgrade
nuxtto a version that resolves this vulnerability.Fixed in 4.5.1 - Upgrade
Upgrade
nuxtto a version that resolves this vulnerability.Fixed in 3.21.10 - Configuration
In nuxt.config, disable Chrome DevTools project settings by setting experimental.chromeDevtoolsProjectSettings: false.
Nuxt (Chrome DevTools workspace endpoint) experimental.chromeDevtoolsProjectSettings = false - Compensating control
Ensure the Nuxt dev server is not reachable beyond loopback on an untrusted network. Do not bind the dev server to a non-loopback interface; alternatively restrict access to the dev port (e.g., port 3000) with a firewall so only trusted clients can reach it.
Event History
Frequently Asked Questions
What is the severity of GHSA-7c4v-fwgw-9rf7?
The severity level of GHSA-7c4v-fwgw-9rf7 is rated as 18, indicating a significant risk.
How do I fix GHSA-7c4v-fwgw-9rf7?
To fix GHSA-7c4v-fwgw-9rf7, ensure that the Nuxt dev server is not bound to a network-reachable interface.
What is the impact of GHSA-7c4v-fwgw-9rf7?
The impact of GHSA-7c4v-fwgw-9rf7 is the exposure of the absolute project root via the Chrome DevTools workspace endpoint.
What types of vulnerabilities are associated with GHSA-7c4v-fwgw-9rf7?
GHSA-7c4v-fwgw-9rf7 is associated with information leakage and cross-site request forgery (CSRF) vulnerabilities.
When was GHSA-7c4v-fwgw-9rf7 published?
GHSA-7c4v-fwgw-9rf7 was published on August 7, 2026.