Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Security] MacVim affected by GHSA-85ch-p2qr-m5gx — netrw OS command injection via sftp:/file: URL tempfile suffix (vim < 9.2.0383)

Aperta Adatta ai principianti
#1,657 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
76/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
macos, vim
Ambito
desktop, security

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.vim line 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
  1. Attacker tricks victim into opening sftp://attacker.com/payload;touch /tmp/pwned
  2. MacVim's netrw constructs tmpfile containing ;touch /tmp/pwned
  3. The sftp command executes with the unescaped tmpfile suffix, 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di macvim-dev/macvim

Tutte le issue di macvim-dev/macvim

Issue simili

Altre issue su Desktop Dev

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.