Microsoft encuentra un error de escritorio de Linux que da raíz a usuarios que no son de confianza


Microsoft encuentra un error de escritorio de Linux que da raíz a usuarios que no son de confianza

imágenes falsas

Las vulnerabilidades descubiertas recientemente por Microsoft facilitan que los usuarios con acceso a muchos sistemas de escritorio Linux obtengan rápidamente privilegios del sistema raíz, la última falla de elevación de privilegios que salió a la luz en el sistema operativo de código abierto.

Dado que los sistemas operativos se han fortalecido para soportar ataques en los últimos años, las vulnerabilidades EoP (Elevation of Privilege) se han convertido en un ingrediente crucial en la mayoría de los ataques exitosos. Se pueden explotar junto con otras vulnerabilidades, a menudo consideradas menos graves por sí solas, y las últimas otorgan el llamado acceso local y las primeras escalan el acceso raíz. A partir de ahí, los atacantes con acceso físico o privilegios de sistema limitados pueden implementar puertas traseras o ejecutar código de su elección.

Nimbuspwn, como Microsoft llamó a la amenaza EoP, son dos vulnerabilidades en networkd-dispatcher, un componente en muchas distribuciones de Linux que transmite los cambios de estado de la red y puede ejecutar varios scripts para responder a un nuevo estado. Cuando una máquina arranca, networkd-dispatcher se ejecuta como root.

microsoft

Las vulnerabilidades, rastreadas como CVE-2022-29799 y CVE-2022-29800, combinan amenazas como el cruce de directorios, la carrera de enlaces simbólicos y la condición de carrera de tiempo de verificación y tiempo de uso (TOCTOU). Después de revisar el código fuente de Networkd -dispatcher, el investigador de Microsoft Jonathan Bar Or notó que un componente llamado «_run_hooks_for_state» implementa la siguiente lógica:

  • Obtiene la lista de scripts disponibles llamando al método get_script_list, que llama a un método separado scripts_in_path, que debería devolver todos los archivos almacenados en el directorio /etc/networkd-dispatcher/.d.
  • Ordena la lista de guiones
  • Ejecuta cualquier script con el proceso subprocess.Popen y proporciona variables de entorno personalizadas

microsoft

Run_hooks_for_state deja a los sistemas Linux abiertos a la vulnerabilidad de cruce de directorios conocida como CVE-2022-29799, ya que ninguna de las funciones utilizadas sanea adecuadamente los estados utilizados para crear la ruta de script correcta a partir de entradas maliciosas. Los piratas informáticos pueden explotar la vulnerabilidad para salir del directorio de inicio /etc/networkd-dispatcher.

Run-hooks_for_state contiene un error separado, CVE-2022-29800, que hace que los sistemas sean vulnerables a la condición de ejecución de TOCTOU debido a la cantidad de tiempo que transcurre entre la detección de los scripts y su ejecución.

Los atacantes pueden explotar esta última vulnerabilidad para reemplazar las secuencias de comandos que networkd-dispatcher cree que pertenecen a la raíz con secuencias de comandos maliciosas de la elección de los atacantes. Para asegurarse de que Linux ejecute el script malicioso proporcionado por el pirata informático en lugar del legítimo, el pirata informático instala varios scripts hasta que uno finalmente tiene éxito.

Un pirata informático con acceso mínimo a un escritorio vulnerable puede encadenar explotaciones para estas vulnerabilidades que otorgan acceso completo a la raíz. El flujo de explotación se ve así:

  1. Preparar un directorio”/tmp/nimbuspwn” y establecer un enlace simbólico ”/tmp/nimbuspwn/poc.d» apuntar a «/sbin“. Ese «/sbin» El directorio se eligió específicamente porque contiene muchos ejecutables propiedad de la raíz que no se bloquean cuando se ejecutan sin argumentos adicionales. Esto los abusará Carrera de enlaces simbólicos problema que mencionamos anteriormente.
  2. Para cualquier nombre de archivo ejecutable debajo de «/sbin” propiedad de root, plante el mismo nombre de archivo en “/tmp/nimbuspwn“. Si por ejemplo «/sbin/vgs» es ejecutable y es propiedad de root, cree un archivo ejecutable «/tmp/nimbuspwn/vgs‘ con la carga útil deseada. Esto ayudará al atacante a ganar la condición de carrera impuesta. TOCTÚ Vulnerabilidad.
  3. Envía una señal con el condición de uso «../../../tmp/nimbuspwn/poc». Esto abusa de la recorrido del directorio vulnerabilidad y escapa del directorio del script.
  4. El manejador de señales networkd-dispatcher salta y construye la lista de secuencias de comandos desde el directorio «/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d»este es realmente el enlace simbólico («/tmp/nimbuspwn/poc.d»), lo que sugiere «/sbin». Por lo tanto, crea una lista que consta de muchos ejecutables propiedad de root.
  5. Cambia rápidamente el enlace simbólico”/tmp/nimbuspwn/poc.d» apuntar a «/tmp/nimbuspwn“. Esto abusa de la Condición de carrera TOCTOU Vulnerabilidad: la ruta del script cambia sin despachador en red conciencia.
  6. Dispatcher comienza a ejecutar archivos que originalmente estaban bajo «/sbin‘ pero en verdad bajo el ‘/tmp/nimbuspwn«directorio. Dado que el despachador «cree» que estos archivos pertenecen a la raíz, los ejecuta a ciegas con subprocess.Popen como raíz. Por lo tanto, nuestro atacante explotó con éxito la vulnerabilidad.

Aquí hay una visualización:

microsoft

Para obtener acceso persistente a la raíz, el investigador utilizó el flujo de explotación para crear una puerta trasera. El proceso para esto es:

  1. copias /bin/sh para /tmp/sch.
  2. gira de nuevo /tmp/sch en un binario Set-UID (SUID)
  3. Carreras /tmp/sh-p. Ese «– pagLa bandera ” es necesaria porque los shells modernos descartan privilegios intencionalmente.

microsoft

El exploit de prueba de concepto solo funciona si puede usar el nombre de bus «org.freedesktop.network1». El investigador encontró varios entornos en los que esto sucede, incluido Linux Mint, donde systemd-networkd no tiene el nombre de bus org.freedodesktop.network1 de forma predeterminada en el arranque.

El investigador también encontró varios procesos ejecutándose como usuario de systemd-network, que puede usar el nombre de bus requerido para ejecutar código arbitrario desde ubicaciones de escritura mundial. Los procesos vulnerables incluyen varios complementos gpgv, que se inician cuando se instala o actualiza apt-get, y Erlang Port Mapper Daemon, que permite la ejecución de código arbitrario en algunos escenarios.

La vulnerabilidad se corrigió en networkd-dispatcher, aunque no quedó claro de inmediato cuándo y en qué versión, y los intentos de comunicarse con el desarrollador no tuvieron éxito de inmediato. Las personas que usan versiones vulnerables de Linux deben parchear sus sistemas lo antes posible.

Deja una respuesta

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