BleepingComputer ha sido contactado por el investigador de seguridad Dominik Penner sobre una nueva vulnerabilidad que reveló para el entorno de escritorio Linux KDE.

«KDE 4/5 es vulnerable a una vulnerabilidad de inyección de comandos en la clase KDesktopFile. Cuando se crea una instancia de un archivo .desktop o .directory, evalúa de forma insegura las variables de entorno y las expansiones de shell utilizando KConfigPrivate :: expandString () a través de KConfigGroup :: readEntry ( ). El uso de un archivo .desktop especialmente diseñado para un usuario remoto podría verse comprometido simplemente descargando y viendo el archivo en su administrador de archivos, o arrastrando y soltando un enlace en sus documentos o escritorio «.

Según Penner, esta vulnerabilidad existe en las versiones 4 y 5 de KDE y permite que los comandos incrustados en archivos .desktop y .directory se ejecuten simplemente abriendo una carpeta o, en algunos casos, extrayendo un archivo en el escritorio.

Penner informó el error a Ubuntu después de divulgarlo públicamente. Originalmente, el investigador no lo informó, ya que «quería dejar un 0 día para Defcon con el que la gente pudiera experimentar».

Casi todas las distribuciones de Linux están utilizando versiones vulnerables de KDE.

La expansión de Shell conduce a la ejecución de código

Los entornos de escritorio compatibles con Freedesktop.org utilizan archivos especiales .desktop y .directory que se utilizan para configurar cómo se muestran las aplicaciones y carpetas.

Un archivo .desktop se usa para registrar una aplicación en el menú de KDE, mientras que los archivos .directory se usan para describir cómo KDE debe mostrar una carpeta. Para usuarios de Windows. el archivo .directory es similar al archivo desktop.ini.

En cada uno de estos archivos hay varios campos que le indican al entorno del escritorio cómo debe aparecer un directorio o una aplicación. Uno de estos campos se llama «Icono» y en los archivos .desktop especifica la ruta al icono que KDE debe mostrar en los menús y para los archivos .directory especificará el icono utilizado para una carpeta cuando se ve en Dolphin.

En conversaciones con BleepingComputer, Penner explicó que el problema es que KDE permite que la expansión de shell se use para generar dinámicamente el valor de estos campos a través de una variable de entorno o ejecutando un comando.

«Usan la misma sintaxis que la especificación de freedesktop, sin embargo, debido a que también permiten la expansión de shell (freedesktop no permite esto), es explotable. Es más un defecto de diseño que nada, la sintaxis de configuración para .desktop y .directory los archivos deben ser consistentes con la especificación de XDG (freedesktop).

Y sí, cualquier entrada puede ser inyectada. Teóricamente, esto podría explotarse en muchas otras áreas, sin embargo, es más fácil leer la entrada a través de iconos »

Como estos tipos de archivos se leen automáticamente cuando se ven en Dolphin o desde el Escritorio, permite a un atacante crear carpetas maliciosas .desktop y .directory que ejecutan comandos ubicados en el campo «Icono».

Cuando se le preguntó si hay una manera de mitigar esta falla, Penner nos dijo que la solución debe provenir de KDE y que deshabilitar las previsualizaciones de archivos tampoco ayuda.

«Incluso si fuera a deshabilitar las vistas previas de archivos en las propiedades de vista del administrador de archivos, todavía se dispara».

Prueba de la falla

En las pruebas realizadas por BleepingComputer, esta falla es ridículamente fácil de abusar para realizar la ejecución de código en máquinas vulnerables.

En nuestra prueba, simplemente creamos un archivo ZIP que contiene una subcarpeta con un archivo .directory. El campo Icono de este archivo de directorio contiene un comando para descargar un script test.sh de nuestros servidores y ejecutarlo para iniciar Kcalc.

 

Contenido del archivo zip
Contenido del archivo zip

 

Una vez que un usuario descarga el archivo test.zip, lo extrae y lo abre, KDE leerá el archivo .directory y ejecutará el comando asignado al campo Icono. Puede ver una demostración de este PoC en acción a continuación.

 

BleepingComputer PoC demo
BleepingComputer PoC demo

 

Penner también creó un video de demostración que muestra cómo se puede usar este error para abrir un shell inverso.

En este momento, no hay forma de desactivar la expansión de shell para mitigar este defecto. Penner recomienda que los usuarios verifiquen cualquier archivo .desktop o .directory y deshabiliten las entradas dinámicas.

BleepingComputer se ha contactado con Ubuntu y Fedora sobre este error, pero no había tenido noticias al momento de esta publicación.

Fuente: bleepingcomputer.com

 

Compartir