Vulnerabilitatea în Vim care duce la executarea codului la deschiderea unui fișier rău intenționat

În editorii de text sevă и neovim găsite vulnerabilitate (CVE-2019-12735), care permite executarea unui cod arbitrar la deschiderea unui fișier special conceput. Problema apare atunci când modul implicit modeline (“:set modeline”) este activ, ceea ce vă permite să definiți opțiunile de editare în fișierul procesat. Vulnerabilitatea remediată în versiuni
Vim 8.1.1365 и Neovim 0.3.6.

Doar un număr limitat de opțiuni pot fi instalate prin modeline. Dacă o expresie este specificată ca valoare de opțiune, aceasta este executată în modul sandbox, care permite doar cele mai simple operațiuni sigure. În acest caz, comanda validă include comanda „:source”, în care puteți folosi modificatorul „!”. pentru a rula comenzi arbitrare din fișierul specificat. Astfel, pentru a executa codul, este suficient să indicați în linia modelinei o construcție de genul „set foldexpr=execute('\:source! some_file'):”. În Neovim, apelarea execute este interzisă, dar assert_fails poate fi folosit în schimb.

De exemplu, pentru a rula comanda „uname -a”, pur și simplu deschideți un fișier în Vim sau Neovim a cărui primă sau ultima linie spune:

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

Compania „sursa! %" va citi comenzile din fișierul curent și, în consecință, va executa ":!uname -a". Secvențele de evacuare pot fi folosite pentru a ascunde o linie dată de la ieșirea de către utilitarul cat. De exemplu, în asta exploatează prototipul la deschiderea unui fișier în vim, se creează o conexiune de rețea cu acces shell la sistemul victimei, dar acest fișier nu va trezi suspiciuni atunci când este trimis către terminal folosind utilitarul cat.

Puteți verifica activitatea modului modeline cu comanda „:set modeline?”. Pentru a o dezactiva, puteți adăuga linia „set nomodeline” la vimrc. În distribuții problema este rezolvată în RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Vulnerabilitatea rămâne nepattched în Debian (în Debian modeline este dezactivată implicit, astfel încât vulnerabilitatea nu apare în starea implicită).

Sursa: opennet.ru

Adauga un comentariu