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 aquellos con un punto de apoyo en muchos sistemas de escritorio Linux obtengan rápidamente privilegios del sistema raíz, la última falla de abuso de privilegios expuesta en el sistema operativo de software de código abierto.

Dado que los sistemas operativos se han reforzado para resistir compromisos en los últimos años, las vulnerabilidades de EoP (elevación de privilegios) se han convertido en un ingrediente crítico para la mayoría de los ataques exitosos. Se pueden explotar junto con otras vulnerabilidades que a menudo se consideran menos graves por sí solas, ya que las últimas brindan 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 que residen en el despachador de red, 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

Los errores, rastreados como CVE-2022-29799 y CVE-2022-29800, combinan amenazas como el cruce de directorios, la carrera de enlace simbólico y la condición de carrera de tiempo de verificación y tiempo de uso (TOCTOU). Después de revisar el código fuente del despachador de Networkd, el investigador de Microsoft Jonathan Bar Or señaló que un componente conocido como “_run_hooks_for_state” implementa la siguiente lógica:

  • Descubre la lista de scripts disponibles llamando al método “get_script_list”, que llama a un método separado “scripts_in_path” destinado a devolver todos los archivos almacenados en la carpeta “/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, designada CVE-2022-29799, porque ninguna de las funciones que utiliza limpia suficientemente los estados utilizados para construir la ruta de script correcta contra entradas maliciosas. Los piratas informáticos pueden explotar la debilidad para salir del directorio raíz “/etc/networkd-dispatcher”.

Run-hooks_for_state contiene un error independiente, CVE-2022-29800, que hace que los sistemas sean vulnerables a la condición de carrera TOCTOU porque hay un lapso de tiempo entre la detección de los scripts y la ejecución.

Los atacantes pueden aprovechar esta última vulnerabilidad para reemplazar los scripts que el despachador de la red cree que son propiedad de root con scripts maliciosos elegidos por los atacantes. Para que Linux ejecute el script malicioso proporcionado por el hacker en lugar del legítimo, el hacker programa varios scripts hasta que uno finalmente tiene éxito.

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

  1. Crea una carpeta”/tmp/nimbuspwn” y plantar un enlace simbólico ”/tmp/nimbuspwn/poc.d” apuntar a “/sbin† Él “/sbin” El directorio se elige especialmente porque tiene muchos ejecutables propiedad de root que no se bloquearán si se ejecutan sin argumentos adicionales. Esto aprovechará la carrera simbolica problema que mencionamos anteriormente.
  2. Para cada nombre de archivo ejecutable en “/sbin” propiedad de root, planta el mismo nombre de archivo en “/tmp/nimbuspwn† Por ejemplo “/sbin/vgs“ejecutable y propiedad de root, programe un ejecutable”/tmp/nimbuspwn/vgs” con la carga útil deseada. Esto ayudará al atacante a ganar la condición de carrera impuesta por el TOCTÚ vulnerabilidad.
  3. Envía una señal con el Estado de funcionamiento “../../../tmp/nimbuspwn/poc”† Esto aprovecha la recorrido del directorio vulnerabilidad y se escapa de la carpeta del script.
  4. El controlador de señales del despachador de red se inicia y crea la lista de secuencias de comandos desde el directorio “/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”¿Qué es realmente el enlace simbólico (“/tmp/nimbuspwn/poc.d”), lo cual indica “/sbin”† Por lo tanto, crea una lista compuesta por muchos archivos ejecutables propiedad de root.
  5. Cambia rápidamente el enlace simbólico”/tmp/nimbuspwn/poc.d” apuntar a “/tmp/nimbuspwn† Esto aprovecha la Condición de carrera TOCTOU vulnerabilidad: la ruta del script cambia sin despachador de red en guardia.
  6. El coordinador comienza a ejecutar archivos que inicialmente están bajo “/sbin” pero en realidad bajo el “/tmp/nimbuspwncarpeta. 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 explotó 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 /bin/sh hasta /tmp/sh
  2. cambia lo nuevo /tmp/sh ponlo en un binario Set-UID (SUID)
  3. camina /tmp/sh-p† la “-pagLa bandera ” es necesaria porque los proyectiles modernos eliminan los privilegios por diseño.

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, en el que systemd-networkd de forma predeterminada no posee el nombre de bus org.freedodesktop.network1 al inicio.

El investigador también encontró varios procesos que se ejecutan como usuario de la red systemd, que tiene permiso para usar el nombre de bus necesario para ejecutar código arbitrario desde ubicaciones de escritura global. 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 el despachador de red, 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 ejecutan versiones vulnerables de Linux deben parchear sus sistemas lo antes posible.

Leave a Comment