Archivos desktop pueden ejecutar código arbitrario en Linux

Los principales administradores de archivos en GNU/Linux –a excepción de Dolphin– son vulnerables a un trivial pero interesante exploit, que puede hacer uso de la actual implementación de los archivos .desktop para ocultar malware.

En realidad no se trata de un bug sino una consecuencia de una característica de diseño implementada por el estándar Freedesktop, que recomienda ocultar dicha extensión de archivos en favor del nombre del mismo, lo que facilita su ejecución sin diálogo de advertencia previo.

Esa feature se puede explotar a través de un archivo comprimido que llegue a nuestro sistema con permisos de ejecución establecidos y que al descomprimirlo se haga pasar por una imagen, archivo de vídeo, documento de texto, etc.

La información sobre este bug ha sido publicada en Reddit por un desarrollador llamado Christian Boxdörfer (de una de sus herramientas, FSearch, hablamos no hace mucho), y afecta a Thunar, GNOME, Nemo, Pantheon Files, Caja o PCManFM. Ya se ha reportado este fallo a sus desarrolladores y en algunos casos (PCManFM) ya han creado un parche.

El error es bastante sencillo de reproducir, así que inspirándonos en el que nos propone Christian, vamos a crear un archivo con extensión .desktop y hacerlo pasar por un archivo jpg.

Para “engañar” al administrador de archivos (nautilus en este caso) vamos a utilizar uno de los wallpapers (/usr/share/backgrounds/gnome/Road.jpg) que vienen por defecto en todas las instalaciones de GNOME 3.22 y algo inocuo como Zenity (herramienta que nos permite crear cajas de diálogos en GTK), que no hace nada malo pero por lo menos asusta.

Creamos un archivo llamado Road.desktop:

[Desktop Entry]
Name=Road.jpg
Exec=sh -c 'zenity --warning --text "Vaya! Un malware acaba de infectar tu sistema, hijueputa.\n Todos tus archivos han sido encriptados.\n Plata o Plomo?"'
Terminal=false
Icon=/usr/share/backgrounds/gnome/Road.jpg
Type=Application
Categories=Graphics

Y de alguna manera hacemos que se descargue en la máquina a infectar (por mail, cliente de chat, etc.) mediante la técnica de ingeniería social que más nos guste.

Un detalle importante es que para la ejecución del archivo y su transformación de “Road.desktop” a Road.jpg, este debe tener permisos de ejecución (sino nos aparecerá un bonito diálogo de advertencia).

Lamentablemente eso no es defensa suficiente, ya que es posible crear un archivo que preserve sus permisos como ejecutable (con tar y la opción -p sin ir más lejos), al aterrizar en otro sistema. Y obviamente el script podría ser mucho más peligroso y el archivo por el que se hace pasar de otro tipo.

Un malware con sorpresa dentro que sería el orgullo del mismísimo Pablo Escobar…

Bromas aparte, a mi me parece una forma muy sencilla de obligar a alguien a ejecutar código arbitrario al estilo Windows, sin que se de cuenta y como no sea por el asunto estético no veo motivo para esconder la extensión del archivo (desktop) en el gestor de archivos.

Ya os comenté que en Dolphin no pasa. ¿verdad?

A este paso conseguiréis que vuelva a KDE 🙂

11 thoughts on “Archivos desktop pueden ejecutar código arbitrario en Linux”

  1. D'Artagnan says:

    No te marees replicante, fallos los encontrarás en todas partes. Y en el lado oscuro ni te cuento.

    1. tannhausser says:

      Sin duda @D’Artagnan. De todas maneras este artículo no nace tanto de la preocupación, como de la curiosidad.

  2. dalmemail says:

    Dolphin rox 😀

  3. Marcos Delgado says:

    Interesante

  4. petercheco says:

    Bug reportado también a Red Hat ya que no es aplicable únicamente en Gnome 3.22 como reportan en Gnome si no que también se aplica a toda la série Gnome 3.xx.

    1. r4_broadcast says:

      Aplica a toda los basados en GTK. Es posible que sea algo con el toolkit.

  5. Pedro says:

    Yo ya hace tiempo que me pase a Kubuntu

    1. alunado says:

      el proximo paso seria seguir con la K y dejar ubuntu!

      jijiji!

  6. r4_broadcast says:

    Interesante que afecte a los manejadores basados en GTK y no al QT. El hecho de que ya son varios que estan decidiendo por QT (Unity 8, Budgie 11) empieza a llamar la atención.

    GNOME debe de estar consciente de esto y tomar cartas cuanto antes.

    1. tannhausser says:

      No va por ahí el tema, porque también afecta (afectaba porque creo que ya tienen parche) a pcmanfm-qt.
      Es más por la implementación del estándar freedesktop que siguen la mayoría de estos programas y que en un afán de hacer las cosas “más bonitas” oculta dicha extensión .desktop

  7. Marcelo says:

    ¡ Ap ! Una noticia al respecto desprovista de parafrenia. Excelente redacción como siempre.

Deja un comentario