Vulnerabilidad en xterm que conduce a la ejecución de código al procesar ciertas líneas

Se ha identificado una vulnerabilidad (CVE-2022-45063) en el emulador de terminal xterm, que permite ejecutar comandos de shell cuando se procesan ciertas secuencias de escape en el terminal. Para un ataque en el caso más sencillo, basta con mostrar el contenido de un archivo especialmente diseñado, por ejemplo, utilizando la utilidad cat, o pegar una línea del portapapeles. printf "\e]50;i\$(touch /tmp/hack-like-its-1999)\a\e]50;?\a" > cve-2022-45063 cat cve-2022-45063

El problema se debe a un error en el manejo de la secuencia de escape del código 50 utilizada para configurar o recuperar opciones de fuente. Si la fuente solicitada no existe, la operación devuelve el nombre de fuente especificado en la solicitud. No puede insertar caracteres de control directamente en el nombre, pero la cadena devuelta se puede terminar con la secuencia "^G", que en zsh, cuando el modo de edición de línea estilo vi está activo, provoca que se realice una operación de expansión de lista, lo que puede se puede utilizar para ejecutar comandos sin presionar explícitamente la tecla Intro.

Para explotar con éxito la vulnerabilidad, el usuario debe utilizar el shell de comandos Zsh con el editor de línea de comandos (vi-cmd-mode) configurado en el modo "vi", que normalmente no se utiliza de forma predeterminada en las distribuciones. El problema tampoco aparece cuando se establecen las configuraciones de xterm enableWindowOps=false o enableFontOps=false. Por ejemplo, enableFontOps=false está configurado en OpenBSD, Debian y RHEL, pero no se aplica de forma predeterminada en Arch Linux.

A juzgar por la lista de cambios y la declaración del investigador que identificó el problema, la vulnerabilidad se solucionó en la versión xterm 375, pero según otras fuentes, la vulnerabilidad continúa apareciendo en xterm 375 de Arch Linux. Puede realizar un seguimiento de la publicación de correcciones por distribuciones en estas páginas: Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux, OpenBSD, FreeBSD, NetBSD.

Fuente: opennet.ru

Añadir un comentario