«Archivos de prueba» asociados con el Puerta trasera de XZ Utils han llegado a una caja de Rust conocida como liblzma-sysnuevo recomendaciones de Phylum revelan.
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 de Utilidades XZ software de compresión de datos. 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», Phylum anotado en un problema de GitHub planteado el 9 de abril de 2024.
«Los archivos de prueba en sí no están incluidos ni en las etiquetas .tar.gz ni en las .zip. aquí en GitHub y sólo 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 fueron comprometido aguas arribapero debido a que las instrucciones de compilación maliciosas no están presentes en el repositorio ascendentenunca fueron llamados ni ejecutados», dijo Snyk. dicho en un aviso propio.
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», afirman los investigadores de SentinelOne Sarthak Misraa y Antonio Pirozzi. dicho 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),» dicho.
«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 introducida en liblzma es manipular Demonio de Shell seguro (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 títeres que orquestó 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 abordar 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», ReversingLabs dicho.
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 ha sido restaurado en GitHub, casi dos semanas después de que fuera desactivado 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.