Description
Nuxt is an open-source web development framework for Vue.js. Prior to 3.3.1, Nuxt DevTools (development mode only) exposes a bidirectional RPC channel over the Vite HMR WebSocket via the nuxt:devtools:rpc plugin. On affected versions the channel has no authentication: any client that can reach the Vite HMR endpoint (ws://<host>:<port>/, subprotocol vite-hmr) can call RPC methods, with no token, handshake, or origin check before the channel is established. The updateOptions(), clearOptions(), and openInEditor() methods do not enforce the ensureDevAuthToken check that the other mutating methods use. openInEditor() reads the persisted behavior.openInEditor value and passes it to the launch-editor package, which spawns it as a child process. That value is settable through the equally unauthenticated updateOptions(). An attacker who can reach the HMR port can therefore chain updateOptions('behavior', { openInEditor: '<command>' }) then openInEditor('<any-existing-file>') to execute an arbitrary program on the developer's machine. This issue is fixed in 3.3.1.
Published: 2026-08-05
Score: 9.6 Critical
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Nuxt DevTools, a development-only component of the Nuxt Vue.js framework, exposes a WebSocket‑based RPC channel without authentication. The RPC methods updateOptions, clearOptions, and openInEditor do not enforce an authentication check. An attacker who can reach the Vite hot‑module replacement endpoint can set the openInEditor configuration to an arbitrary command via updateOptions and then trigger openInEditor on any existing file. This causes the launch‑editor package to spawn a child process, allowing the attacker to execute arbitrary code on the developer’s host. The flaw is a classic code injection (CWE‑94) combined with missing authentication (CWE‑306).

Affected Systems

The vulnerability affects Nuxt DevTools bundled with Nuxt versions prior to 3.3.1. Any deployment of the devtools package that has not been patched to version 3.3.1 or later is vulnerable. The issue is confined to development environments where the devtools WebSocket endpoint is reachable.

Risk and Exploitability

The CVSS score of 9.6 classifies the flaw as critical. Although no EPSS score is published, the lack of authentication and open network exposure make exploitation highly feasible in a development context. The vulnerability is not yet listed in CISA’s KEV catalog, but its impact remains severe if a developer’s machine is compromised. Attackers require network access to the development server’s WebSocket port and the ability to send RPC payloads, which is typically possible from any machine that can reach the developer’s local network or the exposed devserver.

Generated by OpenCVE AI on August 5, 2026 at 22:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Nuxt DevTools to version 3.3.1 or later, which removes the unauthenticated RPC path and enforces authentication checks on all mutating methods.
  • Limit exposure of the Vite HMR WebSocket by binding the development server to localhost or restricting the port with a firewall or reverse proxy so that only trusted local developers can connect.
  • Disable Nuxt DevTools entirely in production or staging environments, ensuring that the RPC interface is never exposed outside the developer’s local machine.

Generated by OpenCVE AI on August 5, 2026 at 22:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-279x-mwfv-vcqv Unauthenticated Nuxt DevTools RPC allows arbitrary command execution on the developer's host
History

Wed, 05 Aug 2026 22:45:00 +0000

Type Values Removed Values Added
First Time appeared Nuxt
Nuxt devtools
Vendors & Products Nuxt
Nuxt devtools

Wed, 05 Aug 2026 21:45:00 +0000

Type Values Removed Values Added
Description Nuxt is an open-source web development framework for Vue.js. Prior to 3.3.1, Nuxt DevTools (development mode only) exposes a bidirectional RPC channel over the Vite HMR WebSocket via the nuxt:devtools:rpc plugin. On affected versions the channel has no authentication: any client that can reach the Vite HMR endpoint (ws://<host>:<port>/, subprotocol vite-hmr) can call RPC methods, with no token, handshake, or origin check before the channel is established. The updateOptions(), clearOptions(), and openInEditor() methods do not enforce the ensureDevAuthToken check that the other mutating methods use. openInEditor() reads the persisted behavior.openInEditor value and passes it to the launch-editor package, which spawns it as a child process. That value is settable through the equally unauthenticated updateOptions(). An attacker who can reach the HMR port can therefore chain updateOptions('behavior', { openInEditor: '<command>' }) then openInEditor('<any-existing-file>') to execute an arbitrary program on the developer's machine. This issue is fixed in 3.3.1.
Title Nuxt.js Unauthenticated WebSocket RPC Call Leading to Remote Code Execution
Weaknesses CWE-306
CWE-94
References
Metrics cvssV3_1

{'score': 9.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-05T21:26:59.028Z

Reserved: 2026-08-05T18:14:42.065Z

Link: CVE-2026-71319

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-05T22:30:05Z

Weaknesses
  • CWE-306

    Missing Authentication for Critical Function

  • CWE-94

    Improper Control of Generation of Code ('Code Injection')