Vulnerabilidades en networkd-dispatcher que permiten obtener derechos de root

Investigadores de seguridad de Microsoft han identificado dos vulnerabilidades (CVE-2022-29799, CVE-2022-29800) en el servicio networkd-dispatcher, apodadas Nimbuspwn, que permiten a un usuario sin privilegios ejecutar comandos arbitrarios con derechos de root. El problema se ha solucionado en la versión 2.2 de networkd-dispatcher. Hasta ahora no hay información sobre la publicación de actualizaciones por parte de las distribuciones (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher se utiliza en muchas distribuciones de Linux, incluyendo Ubuntu, que emplean el proceso en segundo plano systemd-networkd para configurar parámetros de red, y realiza funciones similares a las de NetworkManager-dispatcher, es decir, se encarga de ejecutar scripts cuando cambia el estado de la conexión de red, por ejemplo, se utiliza para iniciar VPN después de establecer la conexión de red principal.

El proceso en segundo plano relacionado con networkd-dispatcher se ejecuta con derechos de root y recibe señales de eventos a través del bus D-Bus. La información sobre los eventos relacionados con los cambios en el estado de las conexiones de red es enviada por el servicio systemd-networkd. El problema es que los usuarios sin privilegios pueden generar un evento de un estado inexistente e iniciar la ejecución de su script, que se ejecutará con derechos de root.

Systemd-networkd está diseñado para ejecutar solo scripts manejadores del sistema ubicados en el directorio /etc/networkd-dispatcher y que no están disponibles para ser reemplazados por el usuario, pero debido a la vulnerabilidad (CVE-2022-29799) en el código que maneja las rutas de archivo, era posible salir del directorio base y ejecutar scripts arbitrarios. En particular, al formar la ruta del archivo del script, se utilizaban los valores OperationalState y AdministrativeState pasados a través de D-Bus, en los que no se limpiaban los caracteres especiales. Un atacante podía generar su propio estado, cuyo nombre contenía caracteres como '.. /' y redirigir la llamada de networkd-dispatcher a otro directorio.

La segunda vulnerabilidad (CVE-2022-29800) está relacionada con una condición de carrera: entre la verificación de los parámetros del script (pertenencia a root) y su ejecución había un breve lapso de tiempo suficiente para reemplazar el archivo y eludir la verificación de pertenencia del script al usuario root. Además, en networkd-dispatcher faltaba la verificación de enlaces simbólicos, incluso al ejecutar scripts a través de la llamada subprocess.Popen, lo que facilitó sustancialmente la organización del ataque.

Técnica de explotación:

  • Se crea el directorio «/tmp/nimbuspwn» y un enlace simbólico «/tmp/nimbuspwn/poc.d», que apunta al directorio «/sbin», utilizado para pasar la verificación de archivos ejecutables que pertenecen a root.
  • Para los archivos ejecutables en «/sbin», se crean archivos con nombres similares en el directorio «/tmp/nimbuspwn». Por ejemplo, para el archivo «/sbin/vgs» se crea un archivo ejecutable «/tmp/nimbuspwn/vgs», que pertenece a un usuario no privilegiado, donde se inserta el código que desea ejecutar el atacante.
  • Por medio de D-Bus, el proceso networkd-dispatcher envía una señal indicando que en OperationalState hay un valor de «../..../tmp/nimbuspwn/poc». Para enviar la señal en el espacio de nombres «org.freedesktop.network1», se utilizó la posibilidad de conectar sus propios controladores a systemd-networkd, por ejemplo, a través de manipulaciones con gpgv o epmd, o se puede aprovechar el hecho de que systemd-networkd no está ejecutándose por defecto (por ejemplo, en Linux Mint).
  • Después de recibir la señal, Networkd-dispatcher construye una lista de archivos ejecutables que pertenecen al usuario root y que están disponibles en el directorio «/etc/networkd-dispatcher/../../tmp/nimbuspwn/poc.d», que en realidad se refiere a «/sbin».
  • En el momento en que se obtiene la lista de archivos, pero aún no se ha ejecutado el script, el enlace simbólico se redirige de «/tmp/nimbuspwn/poc.d» a «/tmp/nimbuspwn» y networkd-dispatcher ejecutará con privilegios de root el script alojado por el atacante.

Vulnerabilidades en networkd-dispatcher que permiten obtener derechos de root


Fuente: opennet.ru
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster