Vulnerabilidades en los editores de texto Vim y GNU Emacs, descubiertas usando indicaciones simples con el asistente Claude, permiten ejecución remota de código simplemente abriendo un archivo. El asistente también creó múltiples versiones de pruebas de concepto (PoC), las refinó y proporcionó sugerencias para abordar los problemas de seguridad.

Vim y GNU Emacs son editores de texto programables utilizados principalmente por desarrolladores y administradores de sistemas para edición de código, flujos de trabajo basados en terminal y scripting. Vim en particular es ampliamente usado en DevOps y está instalado por defecto en la mayoría de las distribuciones de servidores Linux, sistemas embebidos y macOS.

Fallo y parche en Vim

Hung Nguyen, investigador en la firma boutique de ciberseguridad Calif, especializada en red teaming con IA e ingeniería de seguridad, encontró los problemas en Vim después de instruir a Claude para que encontrara una vulnerabilidad de día cero de ejecución remota de código (RCE) en el editor de texto, activada al abrir un archivo.

El asistente Claude analizó el código fuente de Vim e identificó comprobaciones de seguridad ausentes y problemas en el manejo de modeline, permitiendo que código incrustado en un archivo se ejecutara al abrirlo. Un modeline es texto colocado al inicio de un archivo que indica a Vim cómo manejarlo. Incluso si el código debía ejecutarse en un entorno aislado, otro problema permitía eludir la restricción y ejecutar comandos en el contexto del usuario actual.

La vulnerabilidad no ha recibido un ID CVE y afecta a todas las versiones de Vim 9.2.0271 y anteriores. Nguyen reportó el problema a los mantenedores de Vim, quienes lanzaron rápidamente un parche en la versión 9.2.0272. El equipo de Vim señaló que una víctima solo necesitaría abrir un archivo especialmente diseñado para activar la vulnerabilidad.

Un atacante que pueda entregar un archivo manipulado a una víctima logra ejecución de comandos arbitrarios con los privilegios del usuario que ejecuta Vim.

GNU Emacs apunta a Git

En el caso de GNU Emacs, la vulnerabilidad sigue presente, ya que el desarrollador considera que es responsabilidad de Git solucionarla. El problema proviene de la integración de control de versiones (vc-git) de GNU Emacs, donde abrir un archivo desencadena operaciones de Git mediante vc-refresh-state, lo que hace que Git lea el archivo .git/config y ejecute un programa core.fsmonitor definido por el usuario, que puede ser abusado para ejecutar comandos arbitrarios.

Un escenario de ataque ideado por el investigador implica crear un archivo (por ejemplo, un correo electrónico o una unidad compartida) que contenga un directorio .git/ oculto con un archivo config que apunte a un script ejecutable. Cuando la víctima extrae el archivo y abre el archivo de texto, la carga útil se ejecuta sin indicadores visibles en la configuración predeterminada de GNU Emacs.

Los mantenedores de GNU Emacs consideran que esto es un problema de Git, no del editor de texto, porque el entorno es solo el desencadenante de la acción peligrosa ejecutada por Git: leer el config controlado por el atacante y ejecutar un programa. Aunque este argumento es técnicamente correcto, ya que nada se ejecuta directamente en GNU Emacs, el riesgo para el usuario existe porque el editor ejecuta automáticamente Git en directorios no confiables sin neutralizar opciones peligrosas y sin requerir consentimiento del usuario o protecciones de sandbox.

Nguyen sugirió que GNU Emacs podría modificar las llamadas a Git para bloquear explícitamente 'core.fsmonitor', de modo que cualquier script o carga útil peligrosa no se ejecute automáticamente al abrir un archivo. Como la falla permanece sin parche en la última versión de GNU Emacs, se recomienda a los usuarios tener precaución al abrir archivos de fuentes desconocidas o descargados de internet.

image
image
article image
article image