Ataques pasivos y activos a través de X11. ¿Wayland es mejor?

30

En The Linux Security Circus: Sobre el aislamiento de GUI - Las cosas invisibles En el blog de Lab , Joanna Rutkowska describe los ataques de una aplicación X11 en otra y el problema general de la falta de aislamiento a nivel de GUI, y cómo esencialmente anula toda la seguridad del escritorio .

  

Una aplicación puede oler o inyectar pulsaciones de teclas en otra, puede tomar instantáneas de la pantalla ocupada por ventanas que pertenecen a otra, etc.

Lo interesante acerca de cómo el modelo de seguridad X11 ha cambiado con el tiempo y no encaja bien con Linux fue interesante. Ella lanza Qubes OS (Beta 1) como una alternativa segura .

Mis preguntas:

  • ¿Se pueden evitar los ataques pasivos (espionaje)? El ataque pasivo que ella describe ciertamente funciona en mi sistema, aunque observo que uno de los comentarios dice que gksudo input no puede ser espiado.
  • ¿Se pueden evitar los ataques activos (inyectar pulsaciones de teclas)? Me parece recordar que los ataques activos se desactivaron de forma predeterminada hace mucho tiempo. Pero un google rápido sugiere que la extensión XTest anula que ( ¿Cómo asignar una combinación de teclas a un botón del teclado? ).

  • La mayoría de las distribuciones de Linux se están moviendo a Wayland como reemplazo para X11. ¿Proporciona un buen aislamiento entre las aplicaciones?

¿Hay esperanza para la seguridad en el escritorio? :)

    
pregunta nealmcb 05.05.2011 - 18:23
fuente

1 respuesta

24

Básicamente, cualquier proceso que pueda conectarse con éxito a un servidor X11 tiene acceso completo a lo que ocurre en ese servidor. El modelo de seguridad X11 asume que los atacantes son rechazados en el momento de la conexión. El sistema de seguridad habitual es que los clientes deben enviar una "cookie mágica" específica como parte de su primer mensaje, la cookie es un blob aleatorio que se crea cuando se inicia el servidor o como parte del procedimiento de inicio de sesión; la cookie también se copia en una ubicación a la que solo pueden acceder las aplicaciones "permitidas". En sistemas similares a Unix, la cookie está tradicionalmente en el archivo $HOME/.Xauthority , pero puede estar en otra parte (en mi sistema Linux reciente, parece estar en algún lugar en un subdirectorio de /var/run/gdm/ ), el punto es que el archivo Es legible solo para un solo usuario de Unix. Al reenviar las conexiones X11, SSH usa el comando xauth para transportar de manera transparente la cookie actual desde el cliente al servidor (para que las aplicaciones iniciadas en el host remoto puedan enviar la cookie cuando se conecten).

Por lo tanto, hay aislamiento con X11, pero es entre usuarios (según lo controla el sistema operativo), no entre aplicaciones ejecutadas en nombre del mismo usuario.

En épocas anteriores, las cookies mágicas no eran muy comunes, por lo que algunas aplicaciones (notablemente xterm) incluían contramedidas como rechazar eventos sintéticos (es decir, eventos resultantes de un XSendEvent() llamado, en oposición a eventos provenientes del hardware). Tales medidas fueron antes de muchas de las extensiones que han crecido en el protocolo X11 a lo largo de los años, como XTest, que las hace en su mayoría obsoletas e inútiles.

Qubes es un sistema operativo que se basa en Xen para aislar algunas aplicaciones entre sí, cada VM tiene su propio Pantalla exclusiva, sin interacciones posibles con los servidores X11 de otras máquinas virtuales. Tengo problemas para leer "Beta 1" y "seguro" en la misma oración, aunque ...

Para la parte X11, el mismo tipo de aislamiento ha existido durante muchos años como Xnest (con un sucesor actualizado llamado Xephyr ): ejecuta la aplicación potencialmente errónea con un ID de usuario específico y aislado, y deja que se conecte solo a una instancia de Xephyr que a su vez se conecta al servidor X11 principal como si fuera una aplicación simple. Para evadir ese aislamiento, la aplicación debe secuestrar Xephyr (por ejemplo, a través de un desbordamiento de búfer). La solución de Qubes es más completa porque reemplaza el aislamiento básico de Unix ("ID de usuario distinto") con una capa de VM mucho más masiva.

Wayland no parece anunciar nada sobre el aislamiento, por lo que es una apuesta segura que no hace nada al respecto. Además, Wayland intenta dar acceso de hardware casi directo a las aplicaciones cuando es posible, por lo que cualquier modelo de seguridad en esa situación sería relativo a cómo el hardware 3D no documentado y el controlador de código cerrado colaboran para evitar una transferencia DMA mal colocada para obtener derechos adicionales. Esto no parece ser la mejor manera de construir seguridad.

    
respondido por el Thomas Pornin 05.05.2011 - 20:39
fuente

Lea otras preguntas en las etiquetas