13 jun. 2019

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

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.

Vim, por sus siglas en Ingles "Vi improved" es una versión mejorada del editor de texto vi, presente en todos los sistemas UNIX. Su autor, Bram Moolenaar, presentó la primera versión en 1991, fecha desde la que ha experimentado muchas mejoras.

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.

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":
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".

Explotación de la vulnerabilidad

Este fallo es debido a una característica llamada "modelines", que básicamente le permite al editor de texto (incluyendo Neovim) cargar desde cualquier fichero una configuración personalizada.

Esta característica viene habilitada por defecto en estos editores que, si el usuario lo desea, la puede desactivar. El problema yace es que la mayoría de usuarios no lo hacen, ocasionando un posible control total a un atacante.

Como apoda el título de este artículo con un simple archivo de texto con un modeline específico y simple es posible conseguir ejecutar código directamente en la memoria del sistema. Aunque Vim y Neovim pueden ejecutar los comandos peligrosos dentro de un sandbox, al utilizar "source" en la línea del código se consigue salir de este aislamiento.

HackPlayers ha publicado una PoC y Numirias ha creado un paso a paso con el código.

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.

Fuente: Hispasec

0 comentarios:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info
Si vas a dejar una consulta, procura tener habilitado tu perfil en Blogger o deja una forma de contacto.

Gracias por comentar!