Una nueva vulnerabilidad fue corregida en los editores de texto preinstalados en varias distribuciones de Linux fue encontrada en los editores de texto Vim y Neovim ( CVE-2019-12735 ).
El fallo encontrado en estos editores permite a los hackers controlar los equipos cuando los usuarios abren un archivo de texto malicioso. El problema se manifiesta con la actividad de la modeline habilitada de manera predeterminada («: set modeline»), que permite definir las opciones de edición en el archivo que se está procesand.
Vim y su fork NeoVim contenían una falla que residía en los modeline. Esta función permite a los usuarios especificar las dimensiones de las ventanas y otras opciones personalizadas cerca del principio o final de un archivo de texto.
Esta función está habilitada de forma predeterminada en versiones anteriores a Vim 8.1.1365 Neovim 0.3.6 y se aplica a todos los tipos de archivos, incluidos los archivos .txt.
Sobre la vulnerabilidad en Vim
A través de Modeline, solo se permite un número limitado de opciones. Si una expresión se especifica como un valor de opción, se ejecuta en el modo de caja de arena, que permite utilizar solo las operaciones seguras más simples.
Al mismo tiempo, el comando «: source» es uno de los permitidos, en el que puede usar el modificador «!» para ejecutar comandos arbitrarios desde el archivo especificado.
Por lo tanto, para ejecutar el código, es suficiente indicar en la línea de modeline una construcción de la forma «set foldexpr = execute (‘\: source! Some_file’):». En Neovim, la llamada de ejecución está prohibida, pero en su lugar se puede usar assert_fails.
Por otro lado en el sandbox, este está diseñado para prevenir efectos secundarios:
«Las opciones ‘foldexpr’, ‘formatexpr’, ‘includeexpr’, ‘indentexpr’, ‘statusline’ y ‘foldtext’ pueden evaluarse en un sandbox. Esto significa que está protegido contra estas expresiones con efectos secundarios desagradables. Esto proporciona cierta seguridad cuando estas opciones se definen a partir de un modelo».
Mientras que los modelos limitan los comandos disponibles y los ejecutan en un entorno aislado del sistema operativo, el investigador Armin Razmjou notó que el comando : ¡font! eludió esta protección:
«Ella lee y ejecuta los comandos de un archivo dado como si se ingresaran manualmente, ejecutándolos una vez que se ha dejado el arenero», escribió el investigador en un mensaje publicado a principios de este mes. -ci.
Por lo tanto, uno puede construir de forma trivial una línea de modelo que ejecute el código fuera de la sandbox.
La publicación incluye dos archivos de texto de prueba de principio, uno de los cuales ilustra gráficamente la amenaza.
Uno de ellos abre una shell inversa en la computadora que ejecuta Vim o NeoVim. Desde allí, los atacantes podrían lanzar los comandos de su elección hacia la máquina requisada.
«Este PoC describe un enfoque de ataque real en el que se lanza un shell invertido cuando el usuario abre el archivo», escribió Razmjou. «Para ocultar el ataque, el archivo se reescribirá inmediatamente cuando se abra. Además, PoC usa secuencias de escape de terminal para ocultar la línea de modelo cuando el contenido se imprime con cat. (cat -v revela el contenido real). «
La vulnerabilidad de ejecución del comando requiere la activación de la funcionalidad de modelado estándar, como en algunas distribuciones de Linux por defecto. El defecto se encuentra en Vim antes de la versión 8.1.1365 y en Neovim antes de la versión 0.3.6.
Este aviso de la Base de Datos de Vulnerabilidades Nacionales del Instituto Nacional de Normalización y Tecnología muestra que las distribuciones de Linux de Debian y Fedora han comenzado a lanzar versiones corregidas.
En distribuciones, el problema se soluciona en RHEL , SUSE / openSUSE , Fedora , FreeBSD , Ubuntu , Arch Linux y ALT .
La vulnerabilidad permanece sin corregir en Debian (en Debian modeline está deshabilitada de forma predeterminada, por lo que la vulnerabilidad no se manifiesta en el estado predeterminado).
La última versión de MacOS continúa utilizando una versión vulnerable, aunque los ataques solo funcionan cuando los usuarios han cambiado una configuración predeterminada que tiene activa la función modelines.