Packages / vite-plus / Security
launch-editor: Editor CLI flag misinterpretation causing arbitrary command execution for some editors
Affected releases · vite-plus
- 1.x1.0.0Fixed in 1.1.0
- 0.3.x0.3.0 – 0.3.3No fix on this line yet
- 0.2.x0.2.0 – 0.2.9No fix on this line yet
- 0.1.x0.1.0 – 0.1.24No fix on this line yet
- 0.0.x0.0.1No fix on this line yet
On 1.x, the newest line:
npm install vite-plus@1.1.0Affected
1.0.0
1 release
Fixed
1.1.0 – 1.3.0
3 releases, latest
Affected
0.0.1 – 0.3.3
40 releases
Is your project affected?
Paste your package.json, or type the range you declare for vite-plus. It is read in your browser and sent nowhere.
What happens
Summary
launch-editor forwarded file paths directly to editors without sanitization. If a path resembles a CLI flag, editors like Vim may interpret it as a command, potentially causing unintended file overwrites or command execution.
Impact
Direct launch-editor users
Only apps that match all of the following conditions are affected:
The attacker is able to create a file system entry (e.g. a file or directory) starting with
+or-in the working directoryThe user uses or the app specifies any of the following editors:
Vim (including gVim)
MacVim
Emacs (including Emacsclient)
Notepad++ (only if using a plugin exposing dangerous operations via plugin messages)
The first argument of
launchEditorcan start with+or-or the user is using WSL
launch-editor-middleware users
Only apps that match the following conditions are affected:
The attacker is able to create a file system entry (e.g. a file or directory) starting with
+or-in the working directoryThe user uses or the app specifies any of the following editors:
Vim (including gVim)
MacVim
Emacs (including Emacsclient)
Notepad++ (only if using a plugin exposing dangerous operations via plugin messages)
launch-editor older than v2.2.0 is used, or the user is using WSL
Vite users
Only apps that match the following conditions are affected:
The attacker is able to create a file system entry (e.g. a file or directory) starting with
+or-in the working directoryThe user uses or the app specifies any of the following editors:
Vim (including gVim)
MacVim
Emacs (including Emacsclient)
Notepad++ (only if using a plugin exposing dangerous operations via plugin messages)
The user is using WSL
Details
launchEditor(file) function passes the file name as-is to the editor if the file with that file name exists. If the file name starts with - (also + for Vim), the editor treats them as flags rather than positional arguments. For example, Vim treats arguments starting with + as an Ex command. As a result, an existing relative directory such as:
+call writefile(["SAFE_MARKER"],"LAUNCH_EDITOR_MARKER")|qa!
is not treated as a filename when passed to Vim. Vim executes the embedded Ex command.
The following editor has a potentially destructive operation exposed to the CLI arguments:
Vim (including gVim)
MacVim
Emacs (including Emacsclient)
Notepad++ (only if using a plugin exposing dangerous operations via plugin messages)
launch-editor-middleware v2.2.0+ converts the passed file path to an absolute path so those are not affected as long as the user is not using WSL. For WSL, launch-editor converts the paths to relative paths internally, so those are still affected.
Vite 2.0.0+ uses launch-editor-middleware v2.2.0+ so the WSL users are only affected.