Grossa vulnerabilità in Vim e Neovim

0

Quando normalmente pensiamo ai software che possono introdurre vulnerabilità nei nostri sistemi Linux, pensiamo a quei demoni che girano costantemente su di essi: da servizi raggiungibili dall’esterno fino a quelli locali che, in qualche modo, possono essere utilizzati per lanciare comandi o aprire porte di accesso remoto.

Difficilmente si va a pensare a tool lanciati al volo (a meno che non facciate affidamento sui vari curl .... | bash 🙄) e, soprattutto ancora meno, si va a pensare a tool -tendenzialmente- semplici come i banali editor di testo.

Ed invece, se siete utenti di Vim e Neovim dovete ricredervi perchè al momento non è più sicuro neanche aprire un semplice file di testo.

Identificata dal ricercatore Armin Razmjou e marcata con la CVE-2019-12735, questa vulnerabilità permette di eseguire codice arbitrario nascosto in un file di testo apparentemente innocuo.

Per l’esattezza questo bug è causato da un errore nella gestione del caricamento delle modeline che questi due software utilizzano, ovvero l’abilità di applicare una riga formattata in maniera ad-hoc per alterare il comportamento dell’editor sui singoli file. Queste modeline supportano un set ridotto di istruzioni possibili e vengono eseguite all’interno di una sandbox per motivi di sicurezza; quello che Armin ha scoperto è che l’utilizzo inaspettato di un certo tipo di comando può essere utilizzato può bypassare questa sandbox ed eseguire comandi direttamente sul sistema.

Come si dice, un video vale più di mille parole:

Possiamo vedere dall’esempio presentato, il file shell.txt pare contenere un semplice testo ma, quando questo viene aperto dall’editor, viene eseguita una connessione ad un altro sistema, dando il controllo dell’originario al possibile attaccante.

Ancora più grave è che almeno uno di questi due software non solo viene installato praticamente in qualsiasi distribuzione Linux/Unix, ma che la capacità di gestire le modeline è attiva di default.

Fortunatamente gli sviluppatori dei due software hanno già rilasciato delle patch per ovviare la cosa che, ovviamente, consigliano di installare il più presto possibile; se non fosse possibile il consiglio che vi diamo è di disattivare le modeline inserendo nel vostro file di profilo le righe:

:set modelines=0
:set nomodeline

In ogni caso, vi dovrete passare tutti i server che gestite. Buon patching.

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l’HA e l’universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.