Executive brief
Nuxt DevTools is a debugging interface for Vue.js web application development. An unauthenticated attacker who can reach the development server's HMR port can execute arbitrary commands on a developer's machine by chaining unprotected RPC method calls. This vulnerability only affects development environments, but could allow malware installation or data theft on a developer's workstation during active development.
Technical details
The vulnerability is a missing authentication control (CWE-306) combined with improper code generation (CWE-94) in Nuxt DevTools. The RPC channel over the Vite HMR WebSocket lacks authentication; any client reaching the ws://<host>:<port>/ endpoint with subprotocol vite-hmr can invoke RPC methods without tokens, handshakes, or origin checks. Specifically, updateOptions() and clearOptions() methods do not enforce the ensureDevAuthToken check used by other mutating methods. An attacker chains updateOptions('behavior', {openInEditor: '<command>'}) followed by openInEditor('<any-existing-file>') to execute an arbitrary program via the launch-editor package. Attack vectors include local processes on the same host, LAN peers when the dev server is bound with --host, and malicious websites visited by the developer (browsers can open HMR WebSocket cross-origin). The vulnerability is fixed in @nuxt/devtools version 3.3.1 and does not require a nuxt release since it only depends on the devtools package.
Affected products
- Nuxt @nuxt/devtools < 3.3.1
Timeline
- 2026-07-27: disclosed: Published on GitHub security advisory
- 2026-08-05: patched: Fixed in @nuxt/devtools@3.3.1