Seguridad del controlador GPU de Linux moderno

3

¿Qué tan seguros son los controladores GPU de Linux modernos?

El modelo de amenaza es un atacante que puede ejecutar código arbitrario en el contexto de un proceso de usuario sin privilegios, que está fuertemente bloqueado por seccomp-bpf, espacios de nombres y otros mecanismos. Específicamente, tiene un descriptor de archivo abierto para la GPU, uno para el framebuffer predeterminado y otro para un archivo anónimo en /tmp (para asignar memoria). No puede abrir ningún archivo ni realizar llamadas al sistema que no sean necesarias para asignar memoria de almacenamiento dinámico o utilizar la GPU.

¿Los controladores de GPU de Linux de escritorio modernos son lo suficientemente seguros como para proporcionar aislamiento contra programas de usuarios malintencionados?

La aplicación de destino para la que espero usar esto es Qubes OS, que actualmente no puede usar la GPU para otra cosa que no sea la composición, por lo que el nivel de seguridad debe ser comparable al proporcionado por el hipervisor Xen o la idea no es -starter.

    
pregunta Demi 28.03.2018 - 21:25
fuente

1 respuesta

3

Los controladores de GPU modernos (no solo limitados a Linux) son realmente inseguros. La forma en que una aplicación se comunica con una GPU es a través de Direct Rendering Manager , o interfaz DRM, usando ioctl(2) . Estas llamadas al sistema se utilizan para pasar referencias a estructuras de datos complejas entre el territorio del usuario y el kernel. La interfaz DRM está disponible en forma de dos dispositivos de caracteres :

  1. El nodo maestro , que maneja operaciones privilegiadas (por ejemplo, control de pantalla). Se expone como el dispositivo de caracteres /dev/dri/cardX . A menudo, los usuarios solo pueden escribirlo en el grupo video . Este dispositivo se mantiene tradicionalmente abierto por el servidor X, que se hace DRM master . El nodo maestro DRM tiene un área de superficie de ataque considerable y utiliza una API compleja.

  2. El nodo de procesamiento , que maneja operaciones generalmente sin privilegios (por ejemplo, la computación y el procesamiento GPGPU). Se expone como el dispositivo de caracteres /dev/dri/renderDX . Este dispositivo tiene un área de superficie de ataque considerable, a pesar de que solo maneja operaciones sin privilegios.

Las comprobaciones de permisos para los nodos DRM se realizan cuando se abre el archivo del dispositivo, con algunas excepciones . Una vez que el descriptor de archivo esté presente, cualquier aplicación con ese descriptor en su conjunto podrá enviar comandos privilegiados arbitrarios al subsistema de gráficos. Esto significa que su aislamiento finaliza tan pronto como su proceso no confiable tenga un descriptor de archivo válido para un nodo DRM. La seguridad del subsistema de gráficos depende tanto de la seguridad de la capa DRM (que tiene un interfaz muy compleja ), así como las interfaces específicas de hardware definido por el controlador de gráficos en sí. Diferentes controladores definen diferentes interfaces, algunas son más complejas que otras.

Dijiste que estabas usando seccomp-bpf. ¡Esto es bueno! Podrá enormemente reducir los problemas de seguridad intrínsecos en un subsistema de gráficos complejos. Asegúrese de que está filtrando cualquier ioctl que se llama contra un nodo DRM. Lista blanca los comandos que se permite enviar a ioctl . Aunque no puede hacer una lista blanca de las estructuras de datos que se pasan al kernel, la lista blanca del comando general a menudo es suficiente y reducirá enormemente el área de superficie disponible para un atacante.

Está lejos de ser una lista exhaustiva de errores graves de controladores de gráficos:

Radeon

Nvidia (propietario)

Intel (i915, etc.)

Cualquier controlador (error en el subsistema DRM subyacente)

El moderno hardware x86 es una bestia aterradora. Es complejo y no está diseñado pensando en la seguridad. Incluso si no hay vulnerabilidades en el software del controlador, las GPU pueden seguir suponer una amenaza simplemente debido a su naturaleza compleja e interacción con una arquitectura de computadora complicada sobre protocolos arcanos se rige por las especificaciones de solo una membresía. La seguridad es Difícil ™.

    
respondido por el forest 29.03.2018 - 01:53
fuente

Lea otras preguntas en las etiquetas