Una vulnerabilidad en Vim permite hackear Linux con simplemente abrir un archivo en el editor

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

Neovim Terminal Neovim terminal

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.