El experto de seguridad Armin Razmjou encontro recientemente una vulnerabilidad de alta gravedad (CVE-2019-12735) en Vim y Neovim.

Sabemos que Vim es una potente aplicación de edición de texto que está presente en todos los sistemas UNIX y en muchas distribuciones GNU/Linux que la ofrecen preinstalada, esta permite a los usuarios a crear, ver o editar cualquier archivo, incluidos texto, scripts de programación y documentos.

Neovim es solo una versión amplia de Vim, con una mejor experiencia de usuario, complementos y GUI, la vulnerabilidad de ejecución de código también reside en ella. El fallo reside en la manera que el editor maneja los modelines (característica que está habilitada por defecto para encontrar y aplicar automáticamente un conjunto de preferencias personalizadas mencionadas por el creador de un archivo acerca de las líneas de inicio y finalización del documento)

El editor permite un solo subconjunto de opciones en modelines (por seguridad) y usa protección sandbox si contiene una expresión insegura, Razmjou encontró que podía utilizar el comando «:source!» (con un modificador!) para saltar la caja de arena.

Por esta razón, solo con abrir Vim o Neovim, podría permitir a los atacantes ejecutar secreta y remotamente comandos Linux para tomar el control de la máquina.

Vim (parche 8.1.1365) y Neovim (parche v0.3.6) han sido actualizados para solucionar la vulnerabilidad. Se recomienda a los usuarios aplicarlos tan pronto como sea posible. Además, Armin Razmjou recomienda:

  • Deshabilitar la función modelines.
  • Deshabilitar «modelineexpr» para no permitir expresiones en modelines.
  • Usar «securemodelines plugin», una alternativa segura a los modelines de Vim.