Fue identificada una vulnerabilidad en GDM

Un investigador de seguridad de GitHub dio a conocer hace poco que ha identificado una vulnerabilidad (CVE-2020-16125) en GNOME Display Manager (GDM), que es responsable de mostrar la pantalla de inicio de sesión.

Combinado con otra vulnerabilidad en el servicio de seguimiento de cuentas (accounts-daemon), el problema permite que el código se ejecute como root.  La vulnerabilidad está asociada con el lanzamiento incorrecto de la utilidad de configuración inicial si es imposible acceder al servicio de daemon de cuentas a través de DBus.

Sobre la vulnerabilidad

Un usuario sin privilegios puede hacer que el proceso de accounts-daemon se bloquee o cuelgue, lo que creará las condiciones para que la utilidad gnome-initial-setup se ejecute desde GDM, a través de la cual un nuevo usuario puede registrarse como miembro del grupo sudo, es decir, tener la capacidad de ejecutar programas como root.

Normalmente, GDM llama a gnome-initial-setup para establecer el primer usuario si no hay cuentas en el sistema. La verificación de la existencia de cuentas se realiza contactando a accounts-daemon. Si el proceso especificado falla, GDM asume que faltan las cuentas e inicia el proceso de configuración inicial.

El investigador identificó dos formas de interrumpir el proceso daemon-accounts: la primera (CVE-2020-16126) se debe a un restablecimiento de privilegios incorrectos y la segunda (CVE-2020-16127) error al procesar un archivo «.pam_environment».

Además, se encontró otra vulnerabilidad en daemon-accounts (CVE-2018-14036) causada por verificaciones incorrectas de rutas de archivos y que permite leer el contenido de archivos arbitrarios en el sistema.

Las vulnerabilidades en accounts-daemon son causadas por cambios realizados por los desarrolladores de Ubuntu y no aparecen en el código principal de accounts-daemon del proyecto FreeDesktop y el paquete de Debian.

El problema CVE-2020-16127 está presente en un parche agregado en Ubuntu que implementa la función is_in_pam_environment, que lee el contenido del archivo .pam_environment del directorio de inicio del usuario. Si coloca un enlace simbólico a / dev / zero en lugar de este archivo, el proceso de daemon de cuentas se bloquea en infinitas operaciones de lectura y deja de responder a las solicitudes a través de DBus.

Es inusual que una vulnerabilidad en un sistema operativo moderno sea tan fácil de explotar. En algunas ocasiones, he escrito miles de líneas de código para aprovechar una vulnerabilidad. 

La mayoría de los exploits modernos involucran trucos complicados, como usar una vulnerabilidad de corrupción de memoria para falsificar objetos falsos en el montón, o reemplazar un archivo con un enlace simbólico con una precisión de microsegundos para explotar una vulnerabilidad TOCTOU . 

Así que en estos días es relativamente raro encontrar una vulnerabilidad que no requiera habilidades de codificación para explotarla. También creo que la vulnerabilidad es fácil de entender, incluso si no tiene conocimiento previo de cómo funciona Ubuntu o experiencia en investigación de seguridad.

La vulnerabilidad CVE-2020-16126 es causada por otro parche que restablece los privilegios del usuario actual mientras procesa algunas llamadas DBus (por ejemplo, org.freedesktop.Accounts.User.SetLanguage).

El proceso de daemon de cuentas se ejecuta normalmente como root, lo que evita que un usuario normal envíe señales.

Pero gracias al parche agregado, los privilegios del proceso se pueden restablecer y el usuario puede finalizar este proceso enviando una señal. Para realizar un ataque, basta con crear las condiciones para eliminar privilegios (RUID) y enviar una señal SIGSEGV o SIGSTOP al proceso de daemon de cuentas.

El usuario finaliza la sesión gráfica y se dirige a la consola de texto (Ctrl-Alt-F1).
Una vez que finaliza la sesión gráfica, GDM intenta mostrar la pantalla de inicio de sesión, pero se bloquea al intentar obtener una respuesta de accounts-daemon.

Las señales SIGSEGV y SIGCONT se envían desde la consola al proceso de daemon de cuentas, lo que hace que se bloquee.

También puede enviar señales antes de salir de la sesión gráfica, pero debe hacerlo con un retraso para tener tiempo de finalizar la sesión y antes de que se envíe la señal, GDM tuvo tiempo de comenzar.

La solicitud al daemon de cuentas en GDM falla y GDM llama a la utilidad gnome-initial-setup, en cuya interfaz es suficiente para crear una nueva cuenta.

La vulnerabilidad está corregida en GNOME 3.36.2 y 3.38.2. La explotación de la vulnerabilidad se ha confirmado en Ubuntu y sus derivados.

Fuente: https://securitylab.github.com


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  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.