CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-71319

CVE-2026-71319: Remote Code Execution via Unauthenticated RPC in Nuxt DevTools

Alon Barad
Alon Barad
Software Engineer

Aug 6, 2026·4 min read·36 visits

Executive Summary (TL;DR)

Nuxt DevTools before 3.3.1 allows unauthenticated remote attackers to execute arbitrary shell commands via exposed WebSocket RPC endpoints.

An unauthenticated remote code execution (RCE) vulnerability exists in Nuxt DevTools prior to version 3.3.1. The vulnerability arises from an unauthenticated RPC channel exposed over the Vite Hot Module Replacement (HMR) WebSocket server, allowing an attacker to modify file editor configurations and execute arbitrary commands under the server context.

Vulnerability Overview

Nuxt DevTools exposes a bidirectional RPC (Remote Procedure Call) channel designed to assist developers in inspecting and debugging Nuxt applications directly from their browsers.\n\nThis communication channel is established automatically during development and runs on top of the Vite Hot Module Replacement (HMR) WebSocket server using the vite-hmr subprotocol.\n\nIn vulnerable versions of @nuxt/devtools (prior to 3.3.1), the RPC interface is exposed without authorization controls, origin checks, or authentication handshake protocols, presenting an unauthenticated entry point to the host system.

Root Cause Analysis

The core of the vulnerability lies in the lack of privilege verification on sensitive RPC methods.\n\nWhile some actions that modify the server state require a developer authentication token (devAuthToken), several administrative functions were left entirely unguarded.\n\nSpecifically, the updateOptions() and openInEditor() methods did not require any authentication token. This oversight allows an unauthenticated client connecting to the Vite HMR WebSocket to invoke updateOptions() to alter the configuration mapping for the file editor to a malicious shell command.\n\nWhen the client subsequently calls openInEditor(), the backend utilizes the launch-editor Node.js library to execute the modified editor command as a child process via child_process.spawn or child_process.exec, resulting in command injection and execution under the context of the running Node.js development server.

Code Analysis

To understand the flaw, we examine the differences in the RPC service definition and execution flow. The following diff illustrates how the server handlers were refactored to enforce authentication.\n\ntypescript\n// In packages/devtools-kit/src/_types/rpc.ts\nexport interface ServerFunctions {\n- updateOptions: <T extends keyof NuxtDevToolsOptions>(tab: T, settings: Partial<NuxtDevToolsOptions[T]>) => Promise<void>\n- clearOptions: () => Promise<void>\n+ updateOptions: <T extends keyof NuxtDevToolsOptions>(token: string, tab: T, settings: Partial<NuxtDevToolsOptions[T]>) => Promise<void>\n+ clearOptions: (token: string) => Promise<void>\n\n- openInEditor: (filepath: string) => Promise<boolean>\n+ openInEditor: (token: string, filepath: string) => Promise<boolean>\n}\n\n\nIn the patched version, the backend explicitly verifies the user-provided token against the generated devAuthToken before proceeding with the operation.\n\ntypescript\n// In packages/devtools/src/server-rpc/general.ts\n- async openInEditor(input: string): Promise<boolean> {\n+ async openInEditor(token: string, input: string): Promise<boolean> {\n+ await ensureDevAuthToken(token)\n if (input.startsWith('./') || !ABSOLUTE_PATH_RE.test(input))\n input = resolve(process.cwd(), input)\n\n\nWithout this token validation, any local or external entity capable of establishing a WebSocket connection could modify settings and execute arbitrary commands.

Exploitation Methodology

An attacker can exploit this vulnerability through two main pathways: local network exposure or Cross-Site WebSocket Hijacking (CSWSH).\n\nIf a developer starts their server binding to all interfaces (e.g., 0.0.0.0), an attacker on the same local network can establish a WebSocket connection directly. Alternatively, if the server is bound to localhost, a malicious website visited by the developer can perform a CSWSH attack, exploiting the fact that browsers do not restrict cross-origin WebSocket connections.\n\nmermaid\ngraph LR\n Attacker[\"Attacker Client\"] -->|\"1. Connects with subprotocol 'vite-hmr'\"| WS[\"Vite HMR WebSocket Port\"]\n Attacker -->|\"2. Send updateOptions RPC to change editor to malicious cmd\"| WS\n Attacker -->|\"3. Send openInEditor RPC\"| WS\n WS -->|\"4. launch-editor runs command\"| OS[\"Host Operating System Command Execution\"]\n\n\nTo trigger the execution, the attacker sends two distinct JSON-RPC frames over the WebSocket protocol. The first payload registers a malicious payload in the openInEditor setting. The second payload triggers the execution of that editor command by requesting a standard project file to be opened.

Impact Assessment

Successful exploitation allows an unauthenticated remote attacker to achieve arbitrary code execution on the developer's workstation under the context of the user running the Node.js application.\n\nBecause developers often operate with elevated privileges or hold sensitive credentials (such as API keys, SSH keys, and cloud environment variables) on their workstations, a compromise of the development host has high severity.\n\nThis vulnerability is tracked as CVE-2026-71319 with a CVSS v3.1 score of 9.6, indicating critical severity due to the potential for complete host takeover.

Mitigation and Remediation

The primary remediation strategy is upgrading @nuxt/devtools to version 3.3.1 or newer, which enforces devAuthToken validation on all sensitive endpoints.\n\nIf an immediate upgrade is not feasible, developers should disable Nuxt DevTools in their configuration file.\n\ntypescript\n// In nuxt.config.ts\nexport default defineNuxtConfig({\n devtools: {\n enabled: false\n }\n})\n\n\nAdditionally, developers should ensure that the development server binds only to loopback interfaces (such as 127.0.0.1) rather than 0.0.0.0 to minimize exposure to local network actors.

Fix Analysis (1)

Technical Appendix

CVSS Score
9.6/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H

Affected Systems

Nuxt DevTools

Affected Versions Detail

Product
Affected Versions
Fixed Version
Nuxt DevTools (@nuxt/devtools)
Nuxt
< 3.3.13.3.1
AttributeDetail
CWE IDCWE-94 / CWE-306
Attack VectorNetwork
CVSS Score9.6
Exploit StatusProof of Concept (PoC)
CISA KEV StatusNot Listed
Ransomware AssociationNo

MITRE ATT&CK Mapping

T1059Command and Scripting Interpreter
Execution
T1203Exploitation for Client Execution
Execution
T1190Exploit Public-Facing Application
Initial Access
CWE-94
Improper Control of Generation of Code ('Code Injection')

The application constructs code or command sequences using externally-influenced input, allowing unauthorized execution of arbitrary commands.

Vulnerability Timeline

Official fix committed to Nuxt DevTools repository
2026-07-24
Nuxt DevTools release v3.3.1 published
2026-07-24
Advisory GHSA-279x-mwfv-vcqv published
2026-08-05
CVE-2026-71319 published in NVD
2026-08-05

References & Sources

  • [1]GitHub Security Advisory GHSA-279x-mwfv-vcqv
  • [2]Fix Commit in Nuxt DevTools Repository
  • [3]Nuxt DevTools v3.3.1 Release Notes
  • [4]CVE-2026-71319 on CVE.org

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 17 hours ago•CVE-2026-12243
7.5

CVE-2026-12243: Incomplete Path Traversal Validation and Percent-Encoding Bypass in NLTK

CVE-2026-12243 is a path traversal vulnerability in the Natural Language Toolkit (NLTK) version 3.9.4. The flaw exists because the input validation routine fails to account for percent-encoded directory traversal sequences like '..%2f' before passing them to urllib.request.url2pathname(), which decodes them into active traversal sequences.

Amit Schendel
Amit Schendel
3 views•8 min read
•about 18 hours ago•CVE-2026-73654
8.5

CVE-2026-73654: Prototype Pollution in Trigger.dev leading to Cascading Denial of Service

CVE-2026-73654 is a high-severity prototype pollution vulnerability in Trigger.dev. The flaw occurs during the handling of run-metadata updates through the PUT /api/v1/runs/:runId/metadata endpoint. Because user-supplied keys are parsed directly by the @jsonhero/path library without sanitization, an authenticated attacker with low privileges can pollute the global Object.prototype. This causes database queries via Prisma ORM to fail validation and induces unhandled exceptions in the Prometheus metrics client, resulting in a process-wide denial of service.

Alon Barad
Alon Barad
9 views•6 min read
•about 20 hours ago•CVE-2026-73559
6.5

CVE-2026-73559: Uncontrolled Resource Consumption in vLLM API completions

CVE-2026-73559 is an uncontrolled resource consumption vulnerability in the vLLM engine, specifically within the /v1/completions API endpoint, allowing authenticated attackers to cause application-level denial of service via unbounded prompt arrays.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 22 hours ago•CVE-2026-54526
9.9

CVE-2026-54526: Strict Template Referencing Bypass and Privilege Escalation in Argo Workflows

A critical security bypass vulnerability in Argo Workflows allows authenticated attackers with workflow submission privileges to bypass 'Strict' or 'Secure' template referencing restrictions. By injecting unvalidated fields into the nested ArtifactGC configuration, attackers can execute arbitrary pod patches, leading to host namespace escape and cluster-wide privilege escalation.

Alon Barad
Alon Barad
15 views•6 min read
•about 23 hours ago•CVE-2026-54249
6.8

CVE-2026-54249: Server-Side Request Forgery via Confused Deputy in Pydantic AI UI Adapters

A Server-Side Request Forgery (SSRF) / Confused Deputy vulnerability has been identified in Pydantic AI UI Adapters (such as VercelAIAdapter). Under certain conditions, a malicious client can supply manipulated message history with provider metadata that forces the server to resolve files within privileged cloud environments (AWS S3, Google Cloud Storage) or model providers. This occurs because the adapters deserialize client-provided metadata structures directly into UploadedFile instances without validation, which are subsequently fetched using high-privilege server credentials.

Alon Barad
Alon Barad
7 views•7 min read
•1 day ago•GHSA-RM43-82J9-R4MJ
8.2

GHSA-RM43-82J9-R4MJ: Path Traversal (Arbitrary File Read) in atomic-agents-stack Dashboard

A path traversal vulnerability in the optional dashboard server of atomic-agents-stack before version 1.1.0 allows unauthenticated remote attackers to read arbitrary files from the host filesystem.

Amit Schendel
Amit Schendel
6 views•6 min read