Un actor de amenazas pasó silenciosamente los últimos dos años integrándose en el equipo central de mantenedores de XZ Utils, un compresor de datos de línea de comandos de software libre ampliamente utilizado en sistemas Linux. El atacante logró lentamente integrar una puerta trasera en el software que estaba diseñada para interferir con SSHD y permitir la ejecución remota de código a través de un certificado de inicio de sesión SSH. La puerta trasera fue descubierta unos días antes de su lanzamiento en varios sistemas Linux en todo el mundo.
Se sospecha que el actor de amenazas es un desarrollador con el nombre de Jian Tan, o que está utilizando ese nombre. Varios expertos en seguridad creen que este ataque en la cadena de suministro podría ser patrocinado por un estado.
¿Qué es XZ Utils y cuál es la puerta trasera de XZ?
XZ Utils y su biblioteca subyacente liblzma son herramientas de software libre que implementan tanto XZ como LZMA, que son dos algoritmos de compresión/descompresión ampliamente utilizados en sistemas basados en Unix, como los sistemas Linux. XZ Utils es utilizado por muchas operaciones en esos sistemas para comprimir y descomprimir datos.
La puerta trasera CVE-2024-3094 encontrada en XZ Utils fue implementada para interferir con la autenticación en SSHD, el software del servidor OpenSSH que maneja las conexiones SSH. La puerta trasera permitía a un atacante ejecutar código remoto a través de un certificado de inicio de sesión SSH. Solo las versiones 5.6.0 y 5.6.1 de XZ Utils se ven afectadas.
Cómo se implementó cuidadosamente la puerta trasera de XZ durante más de dos años
El 29 de marzo de 2024, el ingeniero de software de Microsoft, Andrés Freund, informó el descubrimiento de la puerta trasera. La encontró cuando se interesó por un comportamiento extraño de una instalación de Debian sid, como los inicios de sesión de SSH consumiendo mucha CPU y errores de Valgrind, y decidió analizar a fondo los síntomas. Freund explicó que el descubrimiento de la puerta trasera en XZ fue suerte, ya que "realmente requería muchas coincidencias".
Sin embargo, parece que la implementación de la puerta trasera ha sido un proceso muy silencioso que duró unos dos años. En 2021, un desarrollador llamado Jian Tan, nombre de usuario JiaT75, apareció de la nada para comenzar a trabajar en el código de XZ Utils, lo cual no es inusual porque los desarrolladores de software libre a menudo trabajan juntos en la actualización del código. Tan contribuyó con frecuencia al proyecto de XZ desde finales de 2021, construyendo lentamente la confianza en la comunidad.
En mayo de 2022, un usuario desconocido que usaba el nombre falso Dennis Ens se quejó en la lista de correos de XZ de que la actualización del software no era satisfactoria. Otro usuario desconocido, Jigar Kumar, participó en la discusión dos veces para presionar al desarrollador principal de XZ Utils, Lasse Collin, para agregar un mantenedor al proyecto. "El progreso no se logrará hasta que haya un nuevo mantenedor", escribió Jigar Kumar. "¿Por qué esperar hasta 5.4.0 para cambiar de mantenedor? ¿Por qué retrasar lo que necesita tu repositorio?"
Mientras tanto, Collin expresó que "Jia Tan me ha ayudado fuera de la lista con XZ Utils y tal vez tenga un papel más importante en el futuro, al menos con XZ Utils. Está claro que mis recursos son demasiado limitados (por lo tanto, los muchos correos electrónicos esperando respuestas) así que algo tiene que cambiar a largo plazo." (Collin escribió Jia en su mensaje mientras que otros mensajes hacen referencia a Jian. Para agregar a la confusión, el apodo de Jian es JiaT75).
En los meses siguientes, Tan se involucró cada vez más en XZ Utils y se convirtió en co-mantenedor del proyecto. En febrero de 2024, Tan emitió commits para las versiones 5.6.0 y 5.6.1 de XZ Utils, ambas contenían la puerta trasera.
También es interesante destacar que en julio de 2023, Tan solicitó deshabilitar ifunc (función indirecta de GNU) en oss-fuzz, una herramienta pública creada para detectar vulnerabilidades de software. Esa operación probablemente se realizó para permitir que la puerta trasera en XZ permaneciera sin ser detectada una vez que se lanzó, ya que la puerta trasera hace uso de esa función para lograr sus objetivos.
Finalmente, varias personas responsables de diferentes distribuciones de Linux han sido contactadas por el atacante para incluir las versiones con puertas traseras de XZ Utils en sus propias distribuciones. Richard WM Jones de RedHat escribió al respecto en un foro: "Muy molesto: el aparente autor de la puerta trasera estuvo en comunicación conmigo durante varias semanas tratando de que se agregara xz 5.6.x a Fedora 40 y 41 debido a sus 'grandes características nuevas'. Incluso trabajamos con él para solucionar el problema de Valgrind (que resultó ser causado por la puerta trasera que había agregado). Tuvimos que correr anoche para solucionar el problema después de una ruptura inadvertida del embargo. Ha sido parte del proyecto XZ durante 2 años, agregando todo tipo de archivos de prueba binarios y, para ser honesto, con este nivel de sofisticación, estaría sospechando incluso de versiones más antiguas de xz hasta que se demuestre lo contrario". Tan también intentó incluirlo en Ubuntu.
Lectura imprescindible de seguridad
Puerta trasera de XZ: Un ataque altamente técnico
Además de la elaborada ingeniería social cubierta anteriormente en este artículo, la puerta trasera en sí es muy compleja.
El investigador senior de amenazas de Microsoft, Thomas Roccia, diseñó y publicó una infografía para mostrar toda la operación que llevó a CVE-2024-3094 (Figura A).
Figura A
Toda la operación CVE-2024-3094. Imagen: Thomas Roccia
La puerta trasera está compuesta por varias partes que se han incluido en múltiples commits en la plataforma de GitHub de XZ Utils, descrita en profundidad por Freund.
Gynvael Coldwind, director gerente de HexArcana Cybersecurity GmbH, una empresa de ciberseguridad que ofrece servicios de consultoría y cursos, escribió en un análisis detallado de la puerta trasera que "alguien se esforzó mucho para que pareciera bastante inocente y estuviera decentemente oculta. Desde los archivos de prueba binarios utilizados para almacenar la carga útil, el tallado de archivos, cifrados de sustitución y una variante de RC4 implementada en AWK, todo se hizo solo con herramientas estándar de línea de comando. Y todo esto en 3 etapas de ejecución, y con un sistema de 'extensión' para hacer las cosas a prueba de futuros cambios y no tener que cambiar los archivos de prueba binarios de nuevo".
DESCARGA: Glosario rápido de código abierto de TechRepublic Premium
Martin Zugec, director de soluciones técnicas de Bitdefender, dijo en una declaración proporcionada a TechRepublic que "esto parece ser un ataque meticulosamente planeado de varios años, posiblemente respaldado por un actor estatal. Teniendo en cuenta los enormes esfuerzos invertidos y la baja prevalencia de sistemas vulnerables que estamos viendo, los actores de amenazas responsables deben estar extremadamente disgustados en este momento de que su nueva arma haya sido descubierta antes de poder ser ampliamente desplegada".
¿Qué sistemas operativos se ven afectados por la puerta trasera de XZ?
Gracias al descubrimiento de Freund, el ataque fue detenido antes de propagarse a mayor escala. La empresa de ciberseguridad Tenable expuso los siguientes sistemas operativos conocidos por estar afectados por la puerta trasera de XZ:
Fedora Rawhide.
Fedora 40 Beta.
Fedora 41.
Debian testing, distribuciones inestables y experimentales versiones 5.5.1alpha-01 a 5.6.1-1.
openSUSE Tumbleweed.
openSUSE MicroOS.
Kali Linux.
Arch Linux.
En una publicación de blog, Red Hat informó que ninguna versión de Red Hat Enterprise Linux está afectada por CVE-2024-3094.
Debian indicó que ninguna versión estable de la distribución está afectada, y Ubuntu anunció que ninguna versión lanzada de Ubuntu está afectada.
El gestor de paquetes Homebrew de MacOS revirtió XZ de 5.6.x a 5.4.6, una versión más antigua pero segura. Bo Anderson, mantenedor y miembro del comité directivo técnico de Homebrew, declaró que Homebrew no "… cree que las compilaciones de Homebrew hayan sido comprometidas (la puerta trasera solo se aplicaba a compilaciones de deb y rpm) pero 5.6.x se está considerando como no confiable y, como precaución, estamos obligando a degradaciones a 5.4.6".
Cómo mitigar y protegerse de esta amenaza de puerta trasera de XZ
Más sistemas podrían verse afectados, especialmente aquellos en los que los desarrolladores compilaron las versiones vulnerables de XZ. La empresa de seguridad Binarly ofrece una herramienta de detección en línea que podría usarse para probar sistemas y ver si están afectados por la puerta trasera de XZ.
Se recomienda verificar cuidadosamente la versión de XZ, ya que las versiones 5.6.0 y 5.6.1 contienen la puerta trasera. Se aconseja revertir a una versión anterior conocida y segura de XZ Utils, como la 5.4.
Los ataques en la cadena de suministro de software están aumentando
Como se informó anteriormente en TechRepublic, los ataques en la cadena de suministro de software están siendo utilizados cada vez más por actores de amenazas.
Sin embargo, los ataques habituales en la cadena de suministro de software consisten principalmente en lograr comprometer una cuenta clave en el proceso de desarrollo de software y utilizar la cuenta para enviar contenido malicioso a software legítimo, lo cual suele detectarse bastante rápidamente. En el caso de XZ Utils, es muy diferente porque el actor de amenazas logró cuidadosamente ganar la confianza de desarrolladores legítimos y convertirse en uno de los mantenedores de la herramienta, lo que le permitió introducir lentamente diferentes partes vulnerables de código en el software sin ser detectado.
Los ataques en la cadena de suministro de software no son las únicas amenazas en aumento; también están aumentando otros ataques en la cadena de suministro basados en productos de TI.
Por lo tanto, las empresas deben asegurarse de que se tengan en cuenta a terceros en el monitoreo de la superficie de ataque.
Divulgación: Trabajo para Trend Micro, pero las opiniones expresadas en este artículo son mías.