Skip to main content
VulnerabilityPublished Updated

CVE-2026-72744: Nuxt dev server discloses project root and workspace UUID via the Chrome DevTools workspace endpoint

Affects nuxtSource GCVE Database

0

Mentioned vulnerabilities

CVSS 5.3 Medium : upgrade to 4.5.1 when convenient.

Data as of 13 Aug 2026, 17:47 UTC

CVSS 4.0 base score
5.3Medium
How severe the flaw is on the 0–10 CVSS scale.
Patch
Available – fixed in 4.5.1, 3.21.10
CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

What to do

Upgrade nuxt to 4.5.1; nuxt to 3.21.10.

Affected software

ProductAffectedFixed in
npmnuxtAffected
  • >=4.4.7 <4.5.1
Fixed in
  • 4.5.1
npmnuxtAffected
  • >=3.21.7 <3.21.10
Fixed in
  • 3.21.10

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

A fix is available in Nuxt versions 4.5.1 and 3.21.10, which restricts access to the Chrome DevTools workspace endpoint to loopback TCP connections only, preventing LAN attackers from accessing it regardless of spoofed headers. Users should upgrade to these versions to remediate the issue. Until patched, mitigations include not binding the dev server to network interfaces reachable by untrusted hosts or restricting access to the dev server port via firewall rules. Alternatively, disabling the feature by setting experimental.chromeDevtoolsProjectSettings to false in nuxt.config prevents the endpoint from being exposed.

Description

### 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`.

References

Community reviews

Loading reviews…