Vulnerabilitat a Vim que condueix a l'execució de codi en obrir un fitxer maliciós

En editors de text empenta и Neovim trobat vulnerabilitat (CVE-2019-12735), que permet executar codi arbitrari en obrir un fitxer especialment dissenyat. El problema es produeix quan el mode modeline predeterminat (":set modeline") està actiu, que us permet definir opcions d'edició al fitxer processat. Vulnerabilitat corregida a les versions
Vim 8.1.1365 и Neovim 0.3.6.

Només es pot instal·lar un nombre limitat d'opcions mitjançant modeline. Si s'especifica una expressió com a valor d'opció, s'executa en mode sandbox, que només permet les operacions segures més senzilles. En aquest cas, l'ordre vàlida inclou l'ordre ":source", en la qual podeu utilitzar el modificador "!". per executar ordres arbitràries des del fitxer especificat. Així, per executar el codi, n'hi ha prou amb indicar a la línia del model una construcció com “set foldexpr=execute('\:source! some_file'):”. A Neovim, cridar a execute està prohibit, però en el seu lloc es pot utilitzar assert_fails.

Per exemple, per executar l'ordre "uname -a", només cal que obriu un fitxer a Vim o Neovim la primera o última línia del qual digui:

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

Empresa "font! %" llegirà les ordres del fitxer actual i en conseqüència executarà ":!uname -a". Les seqüències d'escapament es poden utilitzar per ocultar una línia determinada de la sortida de la utilitat cat. Per exemple, en aquest explotar el prototip en obrir un fitxer a vim, es crea una connexió de xarxa amb accés de shell al sistema de la víctima, però aquest fitxer no despertarà sospites quan s'enviï al terminal mitjançant la utilitat cat.

Podeu comprovar l'activitat del mode modeline amb l'ordre ":set modeline?". Per desactivar-lo, podeu afegir la línia "set nomodeline" a vimrc. A les distribucions el problema es soluciona RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. La vulnerabilitat continua sense pegar Debian (a Debian modeline està desactivada per defecte, de manera que la vulnerabilitat no apareix a l'estat predeterminat).

Font: opennet.ru

Afegeix comentari