Red Hat advirtió a los usuarios que dejaran de usar inmediatamente sistemas que ejecutan versiones experimentales y de desarrollo de Fedora debido a una puerta trasera encontrada en las últimas bibliotecas y herramientas de compresión de datos de XZ Utils (previamente LZMA Utils).
XZ Utils es una herramienta de línea de comandos para comprimir y descomprimir datos en Linux y otros sistemas operativos similares a Unix. Por su parte, "xz"es un formato de compresión de datos de propósito general presente en casi todas las distribuciones de Linux, tanto en proyectos comunitarios como en distribuciones de productos comerciales. Básicamente, ayuda a comprimir formatos de archivos grandes en tamaños más pequeños y manejables para compartirlos mediante transferencias de archivos.
El ingeniero de software de Microsoft, Andrés Freund, descubrió el problema de seguridad mientras investigaba inicios de sesión SSH lentos en una máquina Linux que ejecutaba Debian Sid (la versión de desarrollo continuo de la distribución Debian).
El código del backdoor está presente en las versiones 5.6.0 de xz (lanzada el 24 de febrero) y 5.6.1 (lanzada el 9 de marzo). El compromiso de la cadena de suministro de software, rastreado como CVE-2024-3094, tiene una puntuación CVSS de 10,0, lo que indica una gravedad máxima.
La vulnerabilidad corresponde a CWE-506, Embedded Malicious Code (Código Malicioso Embebido) y el nivel de sofisticación del backdoor se puede ver en la infografía de Thomas Roccia (@fr0gger_).
A continuación se explica cómo saber si el sistema está ejecutando la versión afectada (se recomienda la segunda o tercera opción para evitar ejecutar la versión troyanizada):
xz --version
strings `which xz` | grep "(XZ Utils)"
strings `which xz` | grep '5\.6\.[01]'
Si el resultado dice xz (XZ UTILs) 5.6.1 o liblzma 5.6.1, entonces se debe aplicar la actualización para su distribución (si está disponible), realizar un downgrade a xz 5.6.0 o 5.4.6 o deshabilitar directamente ssh por el momento.
El equipo de seguridad de Debian también emitió un aviso advirtiendo a los usuarios sobre el problema. El aviso dice que ninguna versión estable de Debian está utilizando los paquetes comprometidos y que XZ ha sido revertido al código original 5.4.5 en las distribuciones experimentales, inestables y de prueba de Debian afectadas.
Si bien es grave, el impacto puede ser limitado. El código problemático se encuentra en las versiones más recientes de xz/liblzma, por lo que es posible que no se implemente tan ampliamente. Es menos probable que las distribuciones de Linux que aún no han lanzado las versiones más recientes se vean afectadas.
Por ahora las distribuciones afectadas son Debian Sid, Fedora 41 y Rawhide, Arch Linux 5.6.1x y NixoS unstable.
- Red Hat: los paquetes vulnerables están presentes en Fedora 41 y Fedora Rawhide. Ninguna versión de Red Hat Enterprise Linux (RHEL) se ve afectada. Red Hat dice que los usuarios deberían dejar de usar inmediatamente las versiones afectadas hasta que la empresa haya tenido la oportunidad de cambiar la versión "xz". "Ninguna versión de Red Hat Enterprise Linux (RHEL) se ve afectada. Tenemos informes y evidencia de las inyecciones creadas con éxito en versiones del paquete xz 5.6.x creadas para Debian inestable (Sid). Otras distribuciones también pueden verse afectadas".
- Debian Linux: ninguna versión estable de la distribución se ve afectada, pero los paquetes comprometidos formaban parte de las versiones de prueba, inestables y experimentales (de 5.5.1alpha-0.1 a 5.6.1-1). Los usuarios deben actualizar xz-utils.
- OpenSUSE: las versiones entre el 07 y el 28 de marzo son vulnerables. Hay una actualización disponible (Tumbleweed o MicroOS).
- Kali Linux: las versiones entre el 26 y el 29 de marzo son vulnerables y ya dispone de la solución. Si la última actualización de Kali fue antes del día 26, esta puerta trasera no la afecta.
- Ubuntu testing (por ejemplo 24.04): dispone de versiones de xz 5.6.x. Versiones anteriores no son vulnerables.
- Alpine: utiliza versiones de xz 5.6.x.
- Arch Linux: utiliza versiones de xz 5.6.x.
- Pueden aparecer otras.
En este momento no se ha demostrado que las compilaciones de Fedora Linux 40 estén comprometidas. Sin embargo, los usuarios de Fedora Linux 40 aún deben cambiar a una versión 5.4 para estar seguros. Los usuarios interesados pueden forzar la actualización siguiendo estas instrucciones.
Aún no ha encontrado el propósito exacto del código malicioso agregado a las versiones 5.6.0 y 5.6.1 de XZ. Red Hat ahora está rastreando este problema de seguridad de la cadena de suministro como CVE-2024-3094, le asignó una puntuación de gravedad crítica de 10/10 y volvió a las versiones 5.4.x de XZ en Fedora 40 beta.
El código malicioso está ofuscado y sólo se puede encontrar en el paquete de descarga completo, no en la distribución Git, que carece de la macro M4, que desencadena el proceso de compilación de la puerta trasera. Si la macro maliciosa está presente, los artefactos de la segunda etapa que se encuentran en el repositorio de Git se inyectan durante el tiempo de compilación.
A través de una serie de ofuscaciones complejas, el proceso de construcción de liblzma extrae un archivo objeto prediseñado de un archivo de prueba disfrazado existente en el código fuente, que luego se utiliza para modificar funciones específicas en el código de liblzma.
"La compilación maliciosa resultante interfiere con la autenticación en sshd a través de systemd. SSH es un protocolo comúnmente utilizado para conectarse remotamente a sistemas, y sshd es el servicio que permite el acceso", dijo Red Hat. "En las circunstancias adecuadas, esta interferencia podría permitir que un actor malicioso rompa la autenticación sshd y obtenga acceso no autorizado a todo el sistema de forma remota".
Esto da como resultado una biblioteca liblzma modificada que puede ser utilizada por cualquier software vinculado a esta biblioteca, interceptando y modificando la interacción de datos con esta biblioteca. Específicamente, el código dañino está diseñado para interferir con el proceso del demonio sshd para SSH (Secure Shell) a través del paquete de software systemd, y potencialmente permitir que un actor de amenazas rompa la autenticación sshd y obtenga acceso no autorizado al sistema de forma remota.
El código malicioso fuertemente ofuscado fue introducido durante una serie de cuatro confirmaciones en el Proyecto Tukaani en GitHub (ahora desactivado) por un usuario llamado JiaT75 (aka Jia Tan o Jia Cheong Tan). Actualmente, hay otros usuarios bajo sospecha de actividades similares en otros repositorios.
Un examen más profundo de la puerta trasera realizado por el 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 manera que eluda los protocolos de autenticación, tomando efectivamente el control sobre la máquina víctima. En otras palabras, la puerta trasera permite a un atacante remoto con una clave privada predeterminada secuestrar el demonio SSH para ejecutar comandos maliciosos.
CISA también publicó un aviso advirtiendo a los desarrolladores y usuarios que bajen a una versión XZ no comprometida (es decir, 5.4.6 Estable) y busquen cualquier actividad maliciosa o sospechosa en sus sistemas.
"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 trabajar en varios proyectos OSS y comprometió código en múltiples proyectos para para evitar la detección", dijo JFrog. The JFrog Research publicó un detector para el CVE-2024-3094.
Para la detección se puede utilizar este Script Bash creado por Andres Freund, descubridor del backdoor. O, se puede usar esta regla de Yara. Otro checker. La empresa Binarly publicó un scanner para detectar el código del backdoor y se publica un timeline de lo ocurrido.
Distribuciones afectadas confirmadas al 03/04
Proyecto | Versión afectada | Paquete afectado | Remediación | Comentarios |
---|---|---|---|---|
Fedora | 40, 41, Rawhide (active development) |
xz-5.6.0-*
xz-5.6.1-* |
Fedora 40 – Actualizar a v5.4.x.
Fedora 41 & Rawhide – NO USAR! |
|
Debian | testing, unstable (sid), experimental |
xz-utils 5.5.1alpha-0.1
Desde 2024-02-01 incluída 5.6.1-1 |
Actualizar a v5.6.1+really5.4.5-1 | Versión estable NO afectada |
Alpine | Edge (active development) | xz 5.6.1-r0, 5.6.1-r1 | Actualizar a v5.6.1-r2 | Versión estable NO afectada |
Kali | N/A |
xz-utils 5.6.0-0.2
Actualizaciones desde 26 al 29 de marzo |
Actualizar a v5.6.1+really5.4.5-1 | |
OpenSUSE | Tumbleweed | xz-5.6.0, xz-5.6.1 | Actualizar a v5.6.1.revertto5.4 | |
Arch Linux | N/A | xz 5.6.0-1 | Actualizar a v5.6.1-2 |
Actualización 12/04/2024: Backdoor de XZ encontrado de RUST
La puerta trasera XZ Utils llegó a una biblioteca de Rust conocida como liblzma-sys, según los hallazgos de Phylum. La versión afectada es la 0.3.2.
La biblioteca, 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.
Referencias
- https://seclists.org/oss-sec/2024/q1/268
- https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users
- https://access.redhat.com/security/cve/cve-2024-3094
- https://www.cisa.gov/news-events/alerts/2024/03/29/reported-supply-chain-compromise-affecting-xz-utils-data-compression-library-cve-2024-3094
- https://www.openwall.com/lists/oss-security/2024/03/29/4
- https://news.ycombinator.com/item?id=39865810
- https://lists.debian.org/debian-security-announce/2024/msg00057.html
- https://github.com/orgs/Homebrew/discussions/5243#discussioncomment-8954951
- https://thehackernews.com/2024/03/urgent-secret-backdoor-found-in-xz.html
- https://www.bleepingcomputer.com/news/security/red-hat-warns-of-backdoor-in-xz-tools-used-by-most-linux-distros/
- https://dmntr.news/archive/31-de-marzo-esto-no-estaba-planificado
- https://bsky.app/profile/filippo.abyssdomain.expert/post/3kowjkx2njy2b
- https://doublepulsar.com/inside-the-failed-attempt-to-backdoor-ssh-globally-that-got-caught-by-chance-bbfe628fafdd
- https://jfrog.com/blog/xz-backdoor-attack-cve-2024-3094-all-you-need-to-know/
- https://www.reversinglabs.com/blog/a-software-supply-chain-meltdown-what-we-know-about-xz-trojan