Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlant file named with +/- prefix in working dir
-
Deliverylaunch-editor invoked with relative/WSL path
-
ExploitFilename parsed as editor CLI flag
-
ExecutionVim/Emacs/Notepad++ executes flag as command
-
ImpactFile overwrite or arbitrary command execution
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
|
| Exploitation Conditions | Exploitation requires ALL of: (1) an attacker-controlled filesystem entry whose name begins with '+' or '-' existing in the working directory; (2) the selected editor being one that treats such arguments as flags - Vim, gVim, MacVim, Emacs, Emacsclient, or Notepad++ with a plugin exposing dangerous operations (editors like VS Code/'code' are not listed as affected); and (3) the path remaining relative or being converted to a relative WSL path (e.g., files on a Windows drive under WSL via /mnt/c), which is what keeps Vite and newer middleware callers exposed. Limiting factors: the malicious filename must already be present on disk, the vulnerable editor must be the one actually configured/selected, and VS Code and absolute-path invocations are not vulnerable - these preconditions (reflected as AT:P) substantially narrow real-world exploitability despite the unauthenticated network reachability of a dev server endpoint. |
| Impact | This is an argument/command injection flaw (CWE-88) in launch-editor, the dev-time 'open in editor' helper bundled with Vite and vite-plus. The provided CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L) scores 6.3 (Medium), and critically includes AT:P - attack requirements are present, meaning exploitation is NOT unconditional: the attacker must first place a filesystem entry whose name begins with '+' or '-' in the working directory, an affected editor (Vim/gVim, MacVim, Emacs/Emacsclient, or Notepad++ with a dangerous plugin) must be the one selected, and the path must stay relative or be converted to a relative WSL path. No EPSS score, KEV listing, or public POC was supplied in the intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The combination of PR:N/UI:N with AT:P is the key signal: although technically network-reachable and unauthenticated (via a dev server's open-in-editor endpoint), the precondition chain (malicious filename already on disk + specific editor + relative/WSL path) makes this an opportunistic, environment-dependent issue rather than a mass-exploitable one. Impacts are rated Low across C/I/A despite the description mentioning arbitrary command execution, because execution is constrained to the capabilities of the selected editor and the narrow preconditions. Net: a legitimate supply-chain/dev-tooling hardening priority for Vite users, but not a drop-everything emergency absent exploitation signals. |
| Exploit ScenarioDerived | In a project using Vite's dev server, an attacker gets a file named like '+call system("...")' written into the working directory (e.g., via a repo checkout, dependency, or upload). When the developer or an automatic middleware caller triggers launch-editor with that path and Vim/gVim/Emacs/MacVim/Notepad++ is the configured editor, the leading '+'/'-' name is parsed as an editor command-line flag instead of a filename, causing unintended file overwrite or command execution. No public exploit was provided, but the fix commit and advisory describe the mechanism precisely; WSL path conversion keeps Vite and newer middleware callers exposed. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Argument injection in launch-editor (prior to 2.14.2), the Node.js 'open file in editor' helper shipped with Vite and vite-plus, allows an unauthenticated attacker who can place a file whose name begins with '+' or '-' into the project working directory to have that name interpreted as a command-line flag by the selected editor. When the reachable editor is Vim/gVim, MacVim, Emacs/Emacsclient, or Notepad++ with a plugin exposing dangerous operations, and the path stays relative (or is converted to a relative WSL path), this can lead to unintended file overwrite or arbitrary command execution in the developer's context. Exploitation is heavily preconditioned - the malicious filesystem entry must already exist, a vulnerable editor must be the configured one, and VS Code or absolute-path invocations are unaffected - so per the independent assessment it is rated AC:H with limited (low) confidentiality, integrity, and availability impact rather than a straightforward RCE; no public exploit code has been identified at time of analysis.
RemediationAI
Upgrade the launch-editor dependency to 2.14.2 or later - the fixed release at https://github.com/vitejs/launch-editor/releases/tag/v2.14.2, delivered via PR 156 (https://github.com/vitejs/launch-editor/pull/156) and commit f6e6701bb1f16f2dd242b321374f1b6cca6eb6d4, which resolves every file name to an absolute path and prefixes relative/WSL-converted paths with './'. Vite and vite-plus users should bump their transitive launch-editor resolution (lockfile override or framework upgrade) rather than relying on the editor behaving safely. Until patched, compensating controls: bind dev servers to loopback only (vite --host 127.0.0.1) and keep them off untrusted or public networks, since the trigger is dev-server endpoint reachability - trade-off is losing LAN/device testing; configure LAUNCH_EDITOR (or the editor env var) to VS Code/'code', which the advisory does not list as affected - trade-off is losing your preferred editor integration; avoid creating or accepting files whose names start with '+' or '-', including in imported archives/branches; and ensure any file-picker/middleware code supplies fully absolute, pre-resolved paths. Note that upstream commit-level fixes are shipped in a tagged release here (2.14.2), so no PR-only caveat applies.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
launch-editor is a small npm package whose get-args.js module builds the argv array passed to the developer's editor executable when a file is opened from a Vite (or vite-plus) dev-server middleware, typically triggered by a browser click on a stack trace or source reference. The fix commit adds a path.resolve() call so file names are normalized to absolute paths before argument construction, and changes path.relative('', fileName) to ./${path.relative('', fileName)} so that even relative results are anchored as an explicit path rather than a bare token. This is CWE-88 (Improper Neutralization of Argument Delimiters in a Command), the classic argument-injection class: the filename is appended as an argv element without a positional delimiter, so downstream option parsers in the editor treat a leading '+' or '-' as an option. Vim-family editors interpret '+cmd' as an Ex command to execute at startup, Emacs/Emacsclient accept options such as --eval or -l, and Notepad++ becomes dangerous when a plugin exposes operations that can be driven from the command line - hence the arbitrary command execution and file overwrite potential. The WSL branch matters because converted Windows-drive paths can remain relative (e.g. './../../../mnt/c/project/file.js' or the pre-fix '../../../mnt/c/project/file.js'), preserving the leading-token problem; CPE entries map the exposure to vitejs:launch-editor, vitejs:vite and vitejs:vite-plus since the library is consumed transitively by those frameworks.
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
AC:H reflects the multiple preconditions (malicious +/- filename on disk, specific affected editor, relative/WSL path); PR:N/UI:N as a dev-server endpoint can trigger it; impacts Low and editor-bounded.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
launch-editor allows users to open files with line numbers in editor from Node.js. Prior to 2.14.2, when an attacker can create a filesystem entry beginning with plus or minus in the working directory, an affected editor is selected, and the path can remain relative or is converted to a relative WSL path, launchEditor forwards the path without forcing it to be interpreted as a positional filename. Editor option parsing then treats the attacker-controlled filename as a command-line flag, which can cause unintended file overwrite or arbitrary command execution by the selected editor. The affected editors are Vim and gVim, MacVim, Emacs and Emacsclient, and Notepad++ when a plugin exposes dangerous operations; WSL path conversion keeps Vite and newer middleware callers exposed. This issue is fixed in version 2.14.2.
Blast Radius
ecosystem impact- 46,995 npm packages depend on launch-editor (561 direct, 46,457 indirect)
- 99 npm packages depend on vite (33 direct, 68 indirect)
- 2 npm packages depend on vite-plus (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 2.14.2 and other introduced versions.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
EUVD-2026-105045
GHSA-r825-w8mm-5pxw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB