Microsoft encuentra una falla en el escritorio de Linux que da raíz a los usuarios que no son de confianza

Microsoft encuentra una falla en el escritorio de Linux que da raíz a los usuarios que no son de confianza

imágenes falsas

Las vulnerabilidades descubiertas recientemente por Microsoft facilitan que las personas con un punto de apoyo en muchos sistemas de escritorio Linux obtengan rápidamente los derechos 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 reforzado para resistir los compromisos en los últimos años, las vulnerabilidades de elevación de privilegios (EoP) se han convertido en un ingrediente crucial para la mayoría de los ataques exitosos. Se pueden explotar junto con otras vulnerabilidades que, por sí solas, a menudo se consideran menos graves, y las últimas brindan lo que se d enomina acceso local y las primeras escalan el acceso raíz. A partir de ahí, los adversarios con acceso físico o derechos de sistema limitados pueden implementar puertas traseras o ejecutar código de su elección.

Nimbuspwn, como Microsoft ha llamado a la amenaza EoP, son dos vulnerabilidades que residen en networkd-dispatcher, un componente en muchas distribuciones de Linux que envía 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 fallas, rastreadas como CVE-2022-29799 y CVE-2022-29800, combinan amenazas que incluyen recorrido del directorio, carrera de enlaces simbólicosy condición de carrera de tiempo de verificación de tiempo de uso (TOCTOU). Después de revisar el Networkd -código fuente del despachadorel investigador de Microsoft Jonathan Bar Or notó que un componente conocido como “_run_hooks_for_state” implementa la siguiente lógica:

  • Descubre la lista de secuencias de comandos disponibles al invocar el método “get_script_list”, que llama a un método “scripts_in_path” separado que está destinado a devolver todos los archivos almacenados en el directorio “/etc/networkd-dispatcher/.d”.
  • Ordena la lista de guiones
  • Ejecuta cada secuencia de comandos con el subproceso de proceso. Abrir y proporciona variables de entorno personalizadas

microsoft

Run_hooks_for_state deja a los sistemas Linux abiertos a la vulnerabilidad de cruce de directorios, designada como CVE-2022-29799, porque ninguna de las funciones que utiliza sanea adecuadamente los estados utilizados para crear la ruta de script adecuada a partir de entradas maliciosas. Los piratas informáticos pueden explotar la debilidad para salir del directorio base “/etc/networkd-dispatcher”.

Run-hooks_for_state contiene una falla separada, CVE-2022-29800, que deja a los sistemas vulnerables a la condición de carrera TOCTOU ya que hay un cierto tiempo entre el descubrimiento de los scripts y su ejecución.

Los adversarios pueden explotar esta última vulnerabilidad para reemplazar los scripts que networkd-dispatcher cree que son propiedad de root con los maliciosos elegidos por los adversarios. Para asegurarse de que Linux ejecute el script malicioso proporcionado por el pirata informático en lugar del legítimo, el pirata informático planta múltiples 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 plantar un enlace simbólico ”/tmp/nimbuspwn/poc.d” apuntar a “/sbin”. Él “/sbin” El directorio se eligió específicamente porque tiene muchos ejecutables propiedad de root que no se bloquean si se ejecutan sin argumentos adicionales. Esto abusará de la carrera de enlaces simbólicos
    problema que mencionamos anteriormente.
  2. Para cada nombre de archivo ejecutable en “/sbin” propiedad de root, plante el mismo nombre de archivo en “/tmp/nimbuspwn”. Por ejemplo, si “/sbin/vgs“es ejecutable y propiedad de root, plante un archivo ejecutable”/tmp/nimbuspwn/vgs” con la carga útil deseada. Esto ayudará al atacante a ganar la condición de carrera impuesta por el SACUDIDO vulnerabilidad.
  3. Envía una señal con el Estado operativo “../../../tmp/nimbuspwn/poc”. Esto abusa de la recorrido del directorio vulnerabilidad y escapa del directorio del script.
  4. El controlador de señal networkd-dispatcher se activa y crea la lista de secuencias de comandos desde el directorio “/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”que es en realidad el enlace simbólico (“/tmp/nimbuspwn/poc.d”), que apunta a “/sbin”. Por lo tanto, crea una lista compuesta por 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 siendo conscientes.
  6. El despachador comienza a ejecutar archivos que inicialmente estaban bajo “/sbin” pero en verdad bajo el “/tmp/nimbuspwn” directorio. Dado que el despachador “cree” que esos archivos son propiedad de root, los ejecuta a ciegas con subprocess.Popen como root. Por lo tanto, nuestro atacante ha explotado con éxito la vulnerabilidad.

Aquí hay una visualización:

microsoft

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

  1. copias / papelera / sh para /tmp/sh.
  2. convierte lo nuevo /tmp/sh en un Conjunto-UID (SUID) binario
  3. Carreras /tmp/sh-p. Él “-pagLa bandera ” es necesaria ya que los proyectiles modernos eliminan los privilegios por diseño.

microsoft

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

El investigador también encontró varios procesos que se ejecutan como el usuario 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 ejecutar código arbitrario en algunos escenarios.

La vulnerabilidad se corrigió en networkd-dispatcher, aunque no quedó claro de inmediato cuándo o 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.

Leave a Reply

Your email address will not be published.