[Security] MacVim affected by GHSA-85ch-p2qr-m5gx — netrw OS command injection via sftp:/file: URL tempfile suffix (vim < 9.2.0383)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia da runtime/pack/dist/opt/netrw/autoload/netrw.vim alla riga 1822 e confrontalo con il fix di Vim 405e2fb6 della versione 9.2.0383. Verifica il percorso URL sftp:// e file: interessato usando il comando grep mostrato nell’issue; l’attività è completata quando tmpfile è escaped e il fix upstream è presente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
MacVim bundles the netrw plugin (runtime/pack/dist/opt/netrw/autoload/netrw.vim) which passes an unescaped tmpfile variable to a shell command when fetching remote files via sftp:// or file: URLs. A crafted URL with a shell metacharacter in the filename suffix causes arbitrary command execution. The fix from vim 9.2.0383 (405e2fb6) has not been applied to macvim r183.
Vulnerability Details
- GHSA: GHSA-85ch-p2qr-m5gx
- CVE: CVE-2026-42307
- Upstream fix (vim): 9.2.0383 (commit
405e2fb6c2e35e09cb64e0f92c1efdafd6b3978a, 2026-04-21) - Affected code:
runtime/pack/dist/opt/netrw/autoload/netrw.vimline 1822 - Vulnerability type: CWE-78 — OS Command Injection
Root Cause
In the sftp reading path, tmpfile (derived from the remote URL's filename suffix) is passed to the sftp command unescaped:
" runtime/pack/dist/opt/netrw/autoload/netrw.vim line 1822 (macvim r183)
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
tmpfile is constructed from the remote filename suffix (e.g., the extension part of sftp://host/foo.txt;id). When tmpfile contains shell metacharacters like ;, &&, or |, they are executed by the shell.
Attack Scenario
- Attacker tricks victim into opening
sftp://attacker.com/payload;touch /tmp/pwned - MacVim's netrw constructs
tmpfilecontaining;touch /tmp/pwned - The sftp command executes with the unescaped
tmpfilesuffix, running the injected command
Verification
$ grep -n 'netrw_sftp_cmd.*tmpfile' runtime/pack/dist/opt/netrw/autoload/netrw.vim
1822: call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(...)..." ".tmpfile)
The fix netrw#os#Escape(tmpfile,1) is absent. Patch 9.2.0383 not present:
$ git log --all --oneline | grep -i '9.2.0383\|sftp\|85ch'
(no output)
Suggested Fix
Merge vim patches up to at least 9.2.0383. The fix escapes tmpfile:
" Fixed (vim 9.2.0383):
call netrw#os#Execute(s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".netrw#os#Escape(g:netrw_machine.":".b:netrw_fname,1)." ".netrw#os#Escape(tmpfile,1))
References
- Lingua principale
- Vim Script
- Stelle
- 7.9k
- Fork
- 691
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di macvim-dev/macvim
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
macvim-dev/macvim#1697 · 5 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
macvim-dev/macvim#1658 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
macvim-dev/macvim#1655 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 72/100
macvim-dev/macvim#1653 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
macvim-dev/macvim#1696 · 1 commento ·
Tutte le issue di macvim-dev/macvim
Issue simili
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
objective-see/LuLu#925 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
farion1231/cc-switch#7638 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
PolyMeilex/rfd#334 ·