El código malicioso en XZ Utils para sistemas Linux permite la ejecución remota de código

El código malicioso insertado en la biblioteca de código abierto XZ Utils, un paquete ampliamente utilizado presente en las principales distribuciones de Linux, también es capaz de facilitar la ejecución remota de código, según ha revelado un nuevo análisis.

El audaz compromiso de la cadena de suministro, rastreado como CVE-2024-3094 (puntuación CVSS: 10.0), salió a la luz la semana pasada cuando el ingeniero de Microsoft y desarrollador de PostgreSQL, Andres Freund, alertó sobre la presencia de una puerta trasera en la utilidad de compresión de datos que brinda a los atacantes remotos una forma de eludir la autenticación de shell segura y obtener acceso completo a un sistema afectado.

XZ Utils es una herramienta de línea de comandos para comprimir y descomprimir datos en Linux y otros sistemas operativos similares a Unix.

Se dice que el código malicioso fue introducido deliberadamente por uno de los mantenedores del proyecto llamado Jia Tan (también conocido como Jia Cheong Tan o JiaT75) en lo que parece ser un ataque meticuloso que abarca varios años. La cuenta de usuario de GitHub se creó en 2021. Actualmente se desconoce la identidad del actor o actores.

“El actor de amenazas comenzó a contribuir al proyecto XZ hace casi dos años, construyendo credibilidad lentamente hasta que se le dieron responsabilidades de mantenedor”, dijo Akamai en un informe.

En otro acto de ingeniería social inteligente, se cree que cuentas títeres como Jigar Kumar y Dennis Ens se han utilizado para enviar solicitudes de funciones e informar de una variedad de problemas en el software con el fin de obligar al mantenedor original, Lasse Collin del Proyecto Tukaani, a agregar un nuevo co-mantenedor al repositorio.

Entra Jia Tan, quien introdujo una serie de cambios en XZ Utils en 2023, que finalmente llegaron a lanzar la versión 5.6.0 en febrero de 2024. También albergaban una sofisticada puerta trasera.

Linux

“Como he insinuado en correos electrónicos anteriores, Jia Tan puede tener un papel más importante en el proyecto en el futuro”, dijo Collin en un intercambio con Kumar en junio de 2022.

“Ha estado ayudando mucho fuera de la lista y ya es prácticamente un co-mantenedor. 🙂 Sé que aún no ha pasado mucho en el repositorio git, pero las cosas suceden en pequeños pasos. En cualquier caso, ya se está produciendo algún cambio en el mantenimiento, al menos para XZ Utils”.

La puerta trasera afecta a los tarballs de lanzamiento de XZ Utils 5.6.0 y 5.6.1, el último de los cuales contiene una versión mejorada del mismo implante. Desde entonces, Collins ha reconocido la violación del proyecto, afirmando que ambos archivos comprimidos fueron creados y firmados por Jia Tan y que solo tenían acceso al repositorio de GitHub, ahora deshabilitado.

“Esta es claramente una operación muy compleja patrocinada por el estado con una sofisticación impresionante y una planificación de varios años”, dijo la compañía de seguridad de firmware Binarly. “Un marco de implantación tan complejo y diseñado profesionalmente no está desarrollado para una operación de una sola vez”.

Un examen más profundo de la puerta trasera por parte del criptógrafo de código abierto Filippo Valsorda también ha revelado que las versiones afectadas permiten a atacantes remotos específicos enviar cargas útiles arbitrarias a través de un certificado SSH que se ejecutará de una manera que eluda los protocolos de autenticación, tomando efectivamente el control sobre la máquina víctima.

“Parece como si la puerta trasera se agregara al demonio SSH en la máquina vulnerable, lo que permite a un atacante remoto ejecutar código arbitrario”, dijo Akamai. “Esto significa que cualquier máquina con el paquete vulnerable que expone SSH a Internet es potencialmente vulnerable”.

En otras palabras, la puerta trasera permite a un atacante remoto con una clave privada predeterminada secuestrar el demonio SSH para ejecutar comandos maliciosos.

No hace falta decir que el descubrimiento accidental por parte de Freund es uno de los ataques a la cadena de suministro más importantes descubiertos hasta la fecha y podría haber sido un grave desastre de seguridad si el paquete se hubiera integrado en las versiones estables de las distribuciones de Linux.

“La parte más notable de este ataque a la cadena de suministro son los niveles extremos de dedicación del atacante, que trabajó más de dos años para establecerse como un mantenedor legítimo, se ofreció a recoger el trabajo en varios proyectos de OSS y comprometió el código en múltiples proyectos para evitar la detección”, dijo JFrog.

Al igual que en el caso de Apache Log4j, el incidente pone de manifiesto una vez más la dependencia del software de código abierto y de los proyectos gestionados por voluntarios, y las consecuencias que podría conllevar en caso de que sufran un compromiso o tengan una vulnerabilidad importante.

“La ‘solución’ más grande es que las organizaciones adopten herramientas y procesos que les permitan identificar signos de manipulación y características maliciosas dentro del código abierto y comercial utilizado en su propio proceso de desarrollo”, dijo ReversingLabs.