Vulnerabilidade en Vim que leva á execución de código ao abrir un ficheiro malicioso

En editores de texto vitalidade и neovim atopado vulnerabilidade (CVE-2019-12735), que permite executar código arbitrario ao abrir un ficheiro especialmente deseñado. O problema prodúcese cando o modo de modeline predeterminado (":set modeline") está activo, o que lle permite definir opcións de edición no ficheiro procesado. Vulnerabilidade corrixida nos lanzamentos
Vim 8.1.1365 и Neovim 0.3.6.

Só se pode instalar un número limitado de opcións mediante modeline. Se se especifica unha expresión como valor de opción, execútase en modo sandbox, que só permite as operacións seguras máis sinxelas. Neste caso, o comando válido inclúe o comando ":source", no que pode usar o modificador "!". para executar comandos arbitrarios desde o ficheiro especificado. Así, para executar o código, abonda con indicar na liña do modelo unha construción como "set foldexpr=execute('\:source! some_file'):". En Neovim, a chamada a execute está prohibida, pero assert_fails pódese usar no seu lugar.

Por exemplo, para executar o comando "uname -a", simplemente abra un ficheiro en Vim ou Neovim cuxa primeira ou última liña diga:

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

Empresa "fonte! %" lerá os comandos do ficheiro actual e, en consecuencia, executará ":!uname -a". As secuencias de escape pódense usar para ocultar unha liña determinada da saída da utilidade cat. Por exemplo, neste explotar o prototipo ao abrir un ficheiro en vim, créase unha conexión de rede con acceso de shell ao sistema da vítima, pero este ficheiro non espertará sospeitas cando se saia ao terminal mediante a utilidade cat.

Podes comprobar a actividade do modo modeline co comando ":set modeline?". Para desactivalo, pode engadir a liña "set nomodeline" a vimrc. Nas distribucións o problema está solucionado en RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. A vulnerabilidade segue sen parchear Debian (en Debian modeline está desactivado por defecto, polo que a vulnerabilidade non aparece no estado predeterminado).

Fonte: opennet.ru

Engadir un comentario