El investigador de seguridad Armin Razmjou ha descubierto una grave vulnerabilidad en los conocidos editores de texto presentes en la mayoría de distribuciones Linux: Vim y Neovim.
La vulnerabilidad CVE-2019-12735 tiene una puntuación alta puesto que permite a un atacante ejecutar comandos en el sistema operativo de forma remota y tomar control del mismo. De hecho, utilizando un comando es posible saltarse la protección del _sandbox_ de Vim.
Vim es legendario como editor que se usa desde la línea de comandos y un favorito de los programadores. Neovim es un fork que básicamente busca ofrecer una opción hipertextensible que solucione muchos de los problemas que algunos tienen con el Vim clásico. Ambos están expuestos a esta vulnerabilidad porque manejan las 'modelines' de la misma forma.
La culpa es de las modelines
Si un atacante crea un archivo especial utilizando Vim o Neovim, bastaría solo con que lo abras en cualquiera de los editores para que este pueda hackear tu distribución Linux ejecutando comandos arbitrarios de forma remota.
Este fallo en la ejecución de código de Vim tiene que ver específicamente en la forma en la que Vim maneja las 'modelines', una función que viene activa por defecto y que ofrecen al usuario una forma de establecer variables específicas para un archivo, incluso un simple .txt.
Con una 'modeline' se pueden aplicar un conjunto de preferencias personalizadas cerca del inicio y el final de las lineas de un documento. Y aunque Vim utiliza un sandbox para aislar el editor y evitar que se ejecute una 'modeline' con expresiones inseguras, el investigador ha descubierto que usando el comando ":source!" se puede saltar el sandbox.
Esto permite leer y ejecutar los comandos de un archivo dado como si se escribiera manualmente, ejecutándolos después de que se deja el sandbox.
Arbitrary code execution vulnerability in Vim < 8.1.1365 and Neovim < 0.3.6 via modelines. 😬 Also, why you should not use Vim with default config, or cat without -v. https://t.co/KFoSO9ABl0 pic.twitter.com/QgOx7UWyYp
— Arminius (@rawsec) June 4, 2019
Razmjou publicó dos pruebas de concepto en su página de GitHub. Una de ellas ofrece un ejemplo de un ataque en la vida real en la que el atacante logra ejecutar un _reverse shell_ inmediatamente que el usuario abre el archivo, es decir, el atacante logra ejecutar su código para tomar control de la máquina y además establece una conexión.
Es recomendado aplicar los parches para Vim en la versión 8.1.1365, y para Neovim en la versión v0.3.6. Además de esto, se recomienda desactivar las 'modelines' en vimrc, usar el plugin securemodelines, o desactivar modelineexpr
para no permitir expresiones en las 'modelines'.
Ver todos los comentarios en https://www.genbeta.com
VER 33 Comentarios