Encontraron una vulnerabilidad en el subsistema tty del kernel de Linux

Investigadores del equipo Google Project Zero dieron a conocer hace poco mediante una publicación de blog un nuevo método de explotación de vulnerabilidades (CVE-2020-29661) en la implementación del manejador ioctl TIOCSPGRP del subsistema tty del kernel de Linux, así como mecanismos de protección detallados que podrían bloquear dichas vulnerabilidades.

Se menciona en la publicación que el problema es causado por un error en la configuración de bloqueos, lo que lleva a una condición de carrera en el código de /tty/tty_jobctrl.c, que se usó para crear condiciones para acceder a la memoria después de su lanzamiento (use-after-free), explotado por el usuario espacio a través de la manipulación con ioct- llamando a TIOCSPGRP.

Adicional a la información publicada, también se realizó una demostración de un exploit funcional para la escalada de privilegios en Debian 10 con kernel 4.19.0-13-amd64 y el cual también no se descarta que pueda afectar a diversas distribuciones, entre las cuales claro están las basadas y derivadas de Debian.

Muchas de las técnicas de explotación individual y las opciones de mitigación que estoy describiendo aquí no son novedosas. Sin embargo, creo que es valioso escribirlos juntos para mostrar cómo interactúan varias mitigaciones con un exploit de uso después de libre bastante normal.

Los fragmentos de código en esta publicación de blog que son relevantes para el exploit se toman de la versión anterior 4.19.160, ya que en eso se basa el kernel de Debian objetivo; algunos otros fragmentos de código son de la línea principal de Linux.

Al mismo tiempo, en el artículo publicado, el énfasis no está tanto en la técnica de crear un exploit funcional, sino en qué herramientas existen en el kernel para protegerse contra tales vulnerabilidades.

La conclusión es decepcionante, ya que se menciona que los métodos como segmentar la memoria en el montón y controlar el acceso a la memoria después de que se libera no se aplican en la práctica, ya que conducen a una disminución del rendimiento y a la protección basada en CFI (Control Flow Integrity), que bloquea exploits en las últimas etapas de un ataque, requiere mejoras.

Un tipo especial de dispositivo terminal son los pseudoterminales , que se utilizan cuando, por ejemplo, abre una aplicación de terminal en un entorno gráfico o se conecta a una máquina remota a través de SSH. Mientras que otros dispositivos terminales están conectados a algún tipo de hardware, ambos extremos de un pseudoterminal están controlados por el espacio de usuario, y los pseudoterminales pueden ser creados libremente por el espacio de usuario (sin privilegios).

Cada vez que /dev/ptmxse abre (abreviatura de «multiplexor pseudoterminal»), el descriptor de archivo resultante representa el lado del dispositivo (al que se hace referencia en la documentación y las fuentes del kernel como » el pseudoterminal master») de un nuevo pseudoterminal.

 El dispositivo terminal correspondiente (al que normalmente se conecta un shell) es creado automáticamente por el kernel bajo /dev/pts/<number>.

Al observar lo que podría marcar la diferencia a largo plazo, el énfasis está en el uso de analizadores estáticos avanzados o en el uso de lenguajes seguros para la memoria como los dialectos Rust y C con anotaciones extendidas (como C comprobado) para construir damas de estado, cerraduras, objetos y punteros. Los métodos de protección también mencionan la activación del modo panic_on_oops, haciendo que las estructuras del kernel sean de solo lectura y restringiendo el acceso a las llamadas al sistema mediante mecanismos como seccomp.

El error que causaba el problema se solucionó en el kernel de Linux el 3 de diciembre del año pasado. El problema se manifiesta en los núcleos anteriores a la versión 5.9.13, pero la mayoría de las distribuciones han solucionado el problema en las actualizaciones del paquete del núcleo que se ofrecieron el año pasado.

También se menciona una vulnerabilidad similar (CVE-2020-29660) que se encontró simultáneamente en la implementación de la llamada ioctl TIOCGSID, pero también se eliminó en todas partes.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada.

*

*

  1. Responsable de los datos: AB Internet Networks 2008 SL
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.