Vulnerabilidad que permite sustituir secuencias de escape en terminales ajenos

Se ha identificado una vulnerabilidad (CVE-2024-28085) en la utilidad wall, suministrada en el paquete util-linux y destinada al envío de mensajes a terminales, que permite atacar los terminales de otros usuarios mediante la manipulación de secuencias de escape. El problema se debe a que la utilidad de pared bloquea las secuencias de escape en el flujo de entrada pero no lo hace en los argumentos de la línea de comando, lo que permite a un atacante escapar de las secuencias de escape en las terminales de otros usuarios.

Por ejemplo, ejecutando 'wall $(printf "\033[33mHI")' puedes imprimir "HI" en amarillo. Al utilizar secuencias de escape que le permiten mover el puntero, borrar y reemplazar contenido en la pantalla, puede simular que se muestra la solicitud de contraseña de sudo en la terminal de otro usuario. Si el usuario no se da cuenta del truco e ingresa su contraseña, la contraseña aparecerá en el historial de entrada como un comando inexistente (de hecho, el usuario ingresará su contraseña en la línea de comando en lugar de un comando). “\033[3A” // mueve el cursor hacia arriba 3 líneas “\033[K” // elimina la salida anterior “[sudo] contraseña para a_user:” // muestra una solicitud sudo ficticia “\033[?25l” / / establecer color de fondo para ocultar la entrada "\033[38;2;48;10;36m"

Cuando se emite una advertencia de que no se encontró el comando ingresado, muchas distribuciones ejecutan el controlador /usr/lib/command-not-found, que intenta identificar el paquete que contiene el comando faltante y proporciona una pista sobre si se puede instalar. . El problema es que cuando se inicia el controlador de comando no encontrado, se le pasa un comando inexistente como parámetro de la línea de comando, que es visible al visualizar procesos en el sistema (por ejemplo, al intentar ejecutar la utilidad desinstalada “xsnow”, “/usr” serán visibles en la lista de procesos /lib/command-not-found - xsnow"). En consecuencia, el atacante puede monitorear los procesos en ejecución (por ejemplo, analizando la aparición de "/proc/$pid/cmdline" para el número PID previsto) y determinar la contraseña ingresada por la víctima en la línea de comando.

Para que el usuario ingrese una contraseña en respuesta a un mensaje sudo ficticio, se ha propuesto un truco cuya esencia es rastrear el inicio real de la utilidad sudo en la lista de procesos, esperar a que se complete y Realiza un ataque a través del “muro” inmediatamente después de eso. Al manipular las secuencias de escape, un atacante puede reemplazar el mensaje después de la ejecución real de sudo con un mensaje falso de reingreso de contraseña. La víctima puede pensar que cometió un error al ingresar la contraseña e ingresarla por segunda vez, revelando la contraseña en los argumentos del controlador de "comando no encontrado".

Un ataque exitoso requiere configurar el modo "mesg" en "y", que está configurado de forma predeterminada en Ubuntu, Debian y CentOS/RHEL. El ataque se ha demostrado en Ubuntu 22.04 en su configuración predeterminada usando gnome-terminal. En Debian, el ataque es difícil, ya que el controlador "comando no encontrado" no está habilitado de forma predeterminada en la distribución, y en CentOS/RHEL el ataque no funcionará, ya que la utilidad wall se instala sin el indicador setgid y no no tener acceso a terminales de otras personas. Al usar Windows-Terminal, el ataque se puede modificar para cambiar el contenido del portapapeles.

La vulnerabilidad ha estado presente en el paquete util-linux desde 2013, después de que la versión 2.24 agregara la capacidad de especificar un mensaje en la línea de comando del muro, pero se olvidó de limpiar las secuencias de escape. Se incluye una solución para la vulnerabilidad en el lanzamiento de ayer de util-linux 2.40. Cabe destacar que al intentar corregir la vulnerabilidad en la versión util-linux 2.39, se identificó otra vulnerabilidad similar, que permite la sustitución de caracteres de control mediante la manipulación de configuraciones regionales.

Fuente: opennet.ru

Añadir un comentario