Ejecución Arbitraria de Código en Vim abriendo un archivo

Existe un fallo que afecta al modeline de Vim, permitiendo escapar del sandbox que emplea para ejecutar los comandos

vim

El investigador Armin Razmjou ha encontrado un fallo en el editor de texto Vim y otros derivados de este, que permitiría la ejecución de código al abrir un fichero de texto especialmente manipulado. Para la explotación hace uso de las ‘modelines’, una opción que tiene Vim para establecer variables y opciones para la edición de un archivo.

El problema se encuentra en concreto en el comando ‘:source!’, el cual se utiliza para cargar opciones desde un fichero externo, y según ha podido comprobarse también podría permitir la ejecución de comandos. Vim para impedir este tipo de riesgos utiliza un sandbox con otros comandos como pueden ser ‘foldexpr’, ‘formatexpr’ o ‘includeexpr’. No obstante, el comando ‘source’ no se encontraba segurizado.

68747470733a2f2f692e696d6775722e636f6d2f387734747465582e676966
Ejemplo de shell inversa aprovechando la explotación. Fuente: Github numirias/security.

Armin ha creado una prueba de concepto (PoC) en su Github para comprobar si nuestra instalación de Vim es vulnerable. Es imprescindible para la prueba que no se encuentre deshabilitado el soporte para modeline (‘:set modeline’). Para la prueba, basta con añadir esta línea a un fichero, abrir el archivo con Vim y comprobar si se ejecuta ‘uname -a’:

Screenshot_20190612_112013

Aunque no se utilice habitualmente Vim, es necesario recordar que en muchos sistemas es el editor de texto por defecto para el modo consola, por lo que podría ejecutarse por error, permitiendo la explotación. Puede comprobarse el editor por defecto en la variable de entorno ‘$EDITOR’.

La vulnerabilidad, la cual ha sido identificada como CVE-2019-12735, ya ha sido corregida en la versión 8.1.1365 de Vim y debería llegar como una actualización de seguridad en la mayoría de distribuciones.

Más información:

Vim/Neovim Arbitrary Code Execution via Modelines:
https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.