Los «archivos de prueba» asociados con la puerta trasera XZ Utils llegaron a una caja de Rust conocida como liblzma-sys, revelan nuevos hallazgos de Phylum. liblzma-sys, que se ha descargado más de 21.000 veces hasta la fecha, proporciona a los desarrolladores de Rust enlaces a la implementación de liblzma, una biblioteca subyacente que forma parte del software de compresión de datos XZ Utils. La versión afectada en cuestión es 0.3.2. «La distribución actual (v0.3.2) en Crates.io contiene los archivos de prueba para XZ que contienen la puerta trasera», señaló Phylum en una edición de GitHub planteada el 9 de abril de 2024. «Los archivos de prueba en sí no están incluidos en ninguno de los archivos . tar.gz ni las etiquetas .zip aquí en GitHub y solo están presentes en liblzma-sys_0.3.2.crate que se instala desde Crates.io». Tras una divulgación responsable, los archivos en cuestión («tests/files/bad-3-corrupt_lzma2.xz» y «tests/files/good-large_compressed.lzma») se han eliminado de la versión 0.3.3 de liblzma-sys lanzada en abril. 10. La versión anterior de la caja se extrajo del registro. «Los archivos de prueba maliciosos se enviaron en sentido ascendente, pero debido a que las instrucciones de compilación maliciosas no estaban presentes en el repositorio ascendente, nunca fueron llamados ni ejecutados», dijo Snyk en su propio aviso. La puerta trasera en XZ Utils se descubrió a finales de marzo cuando el ingeniero de Microsoft, Andrés Freund, identificó confirmaciones maliciosas en la utilidad de línea de comandos que afectaban a las versiones 5.6.0 y 5.6.1 lanzadas en febrero y marzo de 2024, respectivamente. El popular paquete está integrado en muchas distribuciones de Linux. Las confirmaciones de código, realizadas por un usuario de GitHub ahora suspendido llamado JiaT75 (también conocido como Jia Tan), esencialmente hicieron posible eludir los controles de autenticación dentro de SSH para ejecutar código de forma remota, lo que podría permitir que los operadores se hicieran cargo del sistema. «El compromiso general duró más de dos años», dijeron los investigadores de SentinelOne Sarthak Misraa y Antonio Pirozzi en un análisis publicado esta semana. «Bajo el alias Jia Tan, el actor comenzó a contribuir al proyecto xz el 29 de octubre de 2021». «Al principio, los compromisos eran inofensivos y menores. Sin embargo, el actor gradualmente se convirtió en un colaborador más activo del proyecto, ganando constantemente reputación y confianza dentro de la comunidad». Según la empresa rusa de ciberseguridad Kaspersky, los cambios troyanizados adoptan la forma de una operación de varias etapas. «El código fuente de la infraestructura de compilación que generó los paquetes finales se modificó ligeramente (al introducir un archivo adicional build-to-host.m4) para extraer el script de la siguiente etapa que estaba oculto en un archivo de caso de prueba (bad-3-corrupt_lzma2 .xz)», decía. «Estos scripts, a su vez, extrajeron un componente binario malicioso de otro archivo de caso de prueba (good-large_compressed.lzma) que estaba vinculado con la biblioteca legítima durante el proceso de compilación para enviarse a los repositorios de Linux». La carga útil, un script de shell, es responsable de la extracción y ejecución de la puerta trasera, que, a su vez, se conecta a funciones específicas (RSA_public_decrypt, EVP_PKEY_set1_RSA y RSA_get0_key) que le permitirán monitorear cada conexión SSH a la máquina infectada. El objetivo principal de la puerta trasera insertada en liblzma es manipular Secure Shell Daemon (sshd) y monitorear los comandos enviados por un atacante al inicio de una sesión SSH, introduciendo efectivamente una forma de lograr la ejecución remota de código. Si bien el descubrimiento temprano de la puerta trasera evitó lo que podría haber sido un compromiso generalizado del ecosistema Linux, el desarrollo es una vez más una señal de que los mantenedores de paquetes de código abierto están siendo blanco de campañas de ingeniería social con el objetivo de organizar ataques a la cadena de suministro de software. En este caso, se materializó en forma de una actividad coordinada que presumiblemente incluía varias cuentas de sockpuppet que orquestaron una campaña de presión destinada a obligar al mantenedor del proyecto desde hace mucho tiempo a incorporar a un co-mantenedor para agregar más funciones y solucionar problemas. «La avalancha de contribuciones de código abierto y campañas de presión relacionadas de cuentas de desarrolladores previamente desconocidas sugiere que se utilizó una campaña coordinada de ingeniería social utilizando cuentas de desarrolladores falsas para introducir código malicioso en un proyecto de código abierto ampliamente utilizado», dijo ReversingLabs. Los investigadores de SentinelOne revelaron que los sutiles cambios de código realizados por JiaT75 entre las versiones 5.6.0 y 5.6.1 sugieren que las modificaciones fueron diseñadas para mejorar la modularidad de la puerta trasera y plantar más malware. A partir del 9 de abril de 2024, el repositorio de código fuente asociado con XZ Utils se restauró en GitHub, casi dos semanas después de que se deshabilitara por una violación de los términos de servicio de la empresa. Actualmente se desconoce la atribución de la operación y los objetivos previstos, aunque a la luz de la planificación y la sofisticación detrás de ella, se sospecha que el actor de la amenaza es una entidad patrocinada por el estado. «Es evidente que esta puerta trasera es muy compleja y emplea métodos sofisticados para evadir la detección», dijo Kaspersky. ¿Encontró interesante este artículo? Síguenos en Twitter  y LinkedIn para leer más contenido exclusivo que publicamos.