«La naturaleza sofisticada de este ataque y el uso de algoritmos criptográficos altamente preparados para el futuro (Ed448 frente al más estándar Ed25519) llevaron a muchos a creer que el ataque puede ser un ciberataque a nivel de estado-nación», señalaron investigadores de la firma de seguridad JFrog en un análisis.
¿A quién afecta la puerta trasera de XZ Utils?
La puerta trasera está presente en las versiones 5.6.0 y 5.6.1 de xz-utils y particularmente en los paquetes .deb y .rpm distribuidos como parte de ciertas distribuciones de Linux, incluidas las siguientes: Fedora 40 y 41 Cuero crudo (desarrollo activo); Debian testing, inestable (sid) y experimental; Borde alpino (desarrollo activo); Planta rodadora openSUSE; así como KaliLinux y Arco Linux que siguen un modelo de lanzamiento o actualización continua en el que las actualizaciones no relacionadas con la seguridad de aplicaciones y paquetes se publican continuamente a medida que están disponibles en lugar de hacerlo de forma planificada como parte de las principales actualizaciones del sistema operativo.
Los usuarios deben consultar las directrices publicadas por los mantenedores de su distribución de Linux en sus respectivos avisos. En algunos casos, se podría recomendar reinstalar completamente el sistema operativo porque es difícil saber si la puerta trasera fue explotada activamente o si como resultado se ejecutaron comandos maliciosos en el sistema y qué hicieron esos comandos.
¿Cómo se agregó la puerta trasera?
XZ-Utils se remonta a 2009 y fue creado por un desarrollador llamado Lasse Collin, conocido como Larhzu en GitHub. También se desempeñó como único mantenedor del proyecto hasta aproximadamente 2023, cuando otro desarrollador identificado como Jia Tan (JiaT75) recibió permisos de confirmación y fue agregado como segundo mantenedor. Es la cuenta de Jia Tan la que introdujo el código malicioso y firmó los archivos tar con puerta trasera para las versiones 5.6.0 y 5.6.1.
Si bien existe una posibilidad teórica de que la cuenta de Jia Tan haya sido comprometida, la creciente evidencia sugiere que es más probable que se trate de una identidad falsa y parte de una campaña de cadena de suministro de software bien planificada y ejecutada que duró años.
La cuenta JiaT75 se creó en GitHub en 2021 y comenzó a realizar contribuciones a múltiples proyectos y presentaciones que ahora están siendo examinadas y, en retrospectiva, parecen muy sospechosas. Por ejemplo, un parche que envió al repositorio libarchive en 2021 reemplazó una función segura safe_fprintf() con la versión no segura fprintf() en el código, lo que podría introducir una vulnerabilidad de escape de caracteres. La cuestión actualmente está siendo investigado.
En febrero de 2022, JiaT75 envió un parche para XZ-Utils que recibió comentarios de cuentas nunca antes vistas quejándose de que XZ-Utils no se mantiene lo suficientemente bien y podría necesitar más desarrolladores. Estas podrían haber sido cuentas de marionetas creadas con el propósito de legitimar las contribuciones de Jia y presionar a Collin para que le otorgue derechos de compromiso.
A principios de 2023 se sentaron las bases para la puerta trasera
A partir de enero de 2023, Jia Tan comenzó a involucrarse más en el proyecto XZ-Utils y a lo largo del año realizó varias contribuciones, algunas de las cuales parecen haber sentado las bases para la puerta trasera y tenían como objetivo ganar más confianza. Finalmente, recibió permisos de compromiso directo y se hizo cargo de parte de la gestión de partes del proyecto.
También hizo una solicitud de extracción a oss-fuzz, un proyecto que realiza automáticamente pruebas de fuzz en XZ Utils y muchos otros proyectos de código abierto, con la intención de deshabilitar las pruebas de fuzz para ifunc, una característica agregada a XZ y que fue aprovechada por Puerta trasera. Ahora se cree que esto claramente tenía como objetivo evitar que OSS Fuzz pudiera detectar cualquier código malicioso posterior en XZ que aprovechara ifunc.
Jia agregó el código real que compone esta puerta trasera a lo largo de varios días en febrero de este año, culminando con el lanzamiento de la versión 5.6.0 con puerta trasera el 24 de febrero. Luego envió la nueva versión para su inclusión en varias distribuciones de Linux.
En una actualización en su sitio web personal Después de este incidente, Collin escribió: “Solo yo he tenido acceso al sitio web principal tukaani.org, a los repositorios git.tukaani.org y a los archivos relacionados. Jia Tan solo tenía acceso a cosas alojadas en GitHub, incluido el subdominio xz.tukaani.org (y solo ese subdominio)”.
Según los hallazgos de la comunidad hasta el momento, esto parece ser un ataque bien planeado, posiblemente una campaña dirigida a muchos proyectos de código abierto, que duró varios años y fue ejecutado pacientemente por un actor de amenazas sofisticado.
Compromisos similares podrían estar al acecho en otros proyectos
La preocupación es que tales compromisos puedan volver a ocurrir fácilmente o que ya hayan ocurrido en otros proyectos y aún no se hayan descubierto porque, desafortunadamente, muchas herramientas y bibliotecas de código abierto adolecen de una escasez de voluntarios y, a menudo, tienen un único mantenedor. Esto los hace más susceptibles a confiar y aceptar el trabajo de nuevas personas que muestran interés en ayudar en esos proyectos.
«Situaciones como esta nos recuerdan a todos que debemos permanecer alerta dentro del ecosistema de software de código abierto», dijo la Open Source Security Foundation (OpenSSF) en una declaración en su sitio web.
“El código abierto se trata de seres humanos bien intencionados que donan su tiempo y talento para ayudar a resolver problemas y, lamentablemente, esto puede verse comprometido. A medida que todos conozcamos más detalles sobre la anatomía de este ataque y la respuesta ascendente y descendente, nos dará tiempo para reflexionar sobre cómo todos podemos hacer más para proteger el software de código abierto y ayudar tanto a los mantenedores como a los consumidores”.