Vulnerabilità in Vim che porta all'esecuzione di codice all'apertura di un file dannoso

Negli editor di testo Vim и neovim trovato vulnerabilità (CVE-2019-12735), che consente l'esecuzione di codice arbitrario all'apertura di un file appositamente progettato. Il problema si verifica quando è attiva la modalità modeline predefinita (“:set modeline”), che consente di definire opzioni di modifica nel file elaborato. Vulnerabilità risolta nelle versioni
Vim8.1.1365 и Neovim 0.3.6.

Solo un numero limitato di opzioni può essere installato tramite modeline. Se un'espressione viene specificata come valore di opzione, viene eseguita in modalità sandbox, che consente solo le operazioni sicure più semplici. In questo caso, il comando valido include il comando “:source”, in cui è possibile utilizzare il modificatore “!”. per eseguire comandi arbitrari dal file specificato. Pertanto, per eseguire il codice, è sufficiente indicare nella riga modeline una costruzione del tipo “set foldexpr=execute('\:source! some_file'):". In Neovim, la chiamata aexe è vietata, ma è possibile utilizzare assert_fails.

Ad esempio, per eseguire il comando “uname -a”, è sufficiente aprire un file in Vim o Neovim la cui prima o ultima riga dice:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“source\!\ \%”):fdl=0:fdt="

Azienda “fonte! %" leggerà i comandi dal file corrente e di conseguenza eseguirà ":!uname -a". Le sequenze di escape possono essere utilizzate per nascondere una determinata riga dall'output dell'utilità cat. Ad esempio, in questo sfruttare il prototipo quando si apre un file in vim, viene creata una connessione di rete con accesso shell al sistema della vittima, ma questo file non desterà sospetti quando viene inviato al terminale utilizzando l'utilità cat.

Puoi controllare l'attività della modalità modeline con il comando “:set modeline?”. Per disabilitarlo, puoi aggiungere la riga "set nomodeline" a vimrc. Nelle distribuzioni il problema è risolto RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. La vulnerabilità rimane senza patch Debian (in Debian modeline è disabilitato per impostazione predefinita, quindi la vulnerabilità non appare nello stato predefinito).

Fonte: opennet.ru

Aggiungi un commento