CVE-2024-3094: La puerta trasera XZ descubierta por un 500 milisegundos

El 29 de marzo se informó de la detección de código malicioso que permite acceso remoto no autorizado mediante SSH dentro de XZ Utils, un paquete ampliamente utilizado en las principales distribuciones de Linux (el proyecto de GitHub originalmente alojado aquí ahora está suspendido). Afortunadamente, el código malicioso fue descubierto rápidamente por la comunidad de software de código abierto (OSS, por sus siglas en inglés) y logró infectar solo dos de las versiones más recientes del paquete, 5.6.0 y 5.6.1, que se lanzaron en el último mes. Las versiones estables de la mayoría de las distribuciones de Linux no se vieron afectadas.

El sofisticado código malicioso que acompañaba a las versiones afectadas de XZ Utils se ejecutaba en el mismo proceso que el servidor OpenSSH (SSHD) y modificaba las rutinas de descifrado en el servidor OpenSSH para permitir que atacantes remotos específicos (que poseen una clave privada específica) enviaran cargas útiles arbitrarias a través de SSH, que se ejecutarían antes del paso de autenticación, secuestrando efectivamente toda la máquina víctima.

Este ataque a la cadena de suministro fue un shock para la comunidad OSS, ya que XZ Utils se consideraba un proyecto confiable y examinado. El atacante construyó una reputación creíble como desarrollador de OSS a lo largo de varios años y utilizó código altamente ofuscado para evadir la detección por revisiones de código. Siguiendo nuestra comunicación inicial de investigación, esta publicación detallará sus fundamentos e impacto.

¿Quién está afectado por CVE-2024-3094?

Las siguientes distribuciones fueron afectadas por el ataque:

  • Fedora: Versiones 40, 41, Rawhide (desarrollo activo) – Se recomienda actualizar a la última versión (5.4.x) o dejar de usar inmediatamente para Fedora 41 y Rawhide.
  • Debian: Ramas testing, unstable (sid), experimental – Se recomienda actualizar a la versión más reciente (5.6.1+really5.4.5-1).
  • Alpine: Edge (desarrollo activo) – Actualizar a la última versión (5.6.1-r2).
  • Kali: Instalaciones actualizadas entre el 26 y el 29 de marzo – Actualizar a la última versión (5.6.1+really5.4.5-1).
  • OpenSUSE: Tumbleweed – Actualizar a la última versión (5.6.1.revertto5.4).
  • Arch Linux: Actualizar a la última versión (5.6.1-2).

Las siguientes distribuciones no se vieron afectadas:

  • Red Hat Enterprise Linux, Ubuntu, Amazon Linux, Wolfi, y Gentoo (aunque Gentoo retiró la versión vulnerable, su OpenSSH no se ve afectado).

¿Cómo detectar CVE-2024-3094?

Para verificar si tu versión de «xz» es una de las afectadas (5.6.0 o 5.6.1), puedes usar el comando strings \which xz` | grep ‘5.6.[01]’`. Una salida vulnerable mostrará la versión afectada, mientras que una salida segura no mostrará nada.

¿Cómo remediar CVE-2024-3094?

Debes degradar inmediatamente tu versión de xz a una versión anterior no afectada (5.4.6 es la última versión no afectada en la mayoría de las distribuciones). Después de degradar xz, reinicia tu máquina o el servidor OpenSSH para eliminar el código parcheado de la memoria.

Herramientas OSS de JFrog para la detección de CVE-2024-3094

El equipo de investigación de JFrog publicó un detector de código abierto para CVE-2024-3094 que verifica si la máquina local es vulnerable y está actualmente afectada por CVE-2024-3094.

Análisis técnico de CVE-2024-3094

El objetivo final del backdoor malicioso introducido por CVE-2024-3094 es inyectar código en el servidor OpenSSH (proceso sshd) que se ejecuta en la máquina víctima y permitir que atacantes remotos específicos envíen cargas útiles arbitrarias a través de SSH, que se ejecutarán antes del paso de autenticación. La carga útil del backdoor está bajo análisis, pero se basa en análisis preliminares y en herramientas de código abierto iniciales, parece que la carga útil es altamente sofisticada.

Cronología del ataque

El aspecto más notable de este ataque a la cadena de suministro es el extremo nivel de dedicación del atacante, trabajando más de dos años para establecerse como un mantenedor legítimo, ofreciéndose a trabajar en varios proyectos OSS y comprometiendo código en múltiples proyectos para evitar la detección.

¿Fue solo XZ afectado por el actor malicioso?

Mientras que el código malicioso se detectó solo en el proyecto XZ, otras contribuciones de código de la cuenta del atacante están siendo investigadas. Hasta la fecha, se ha añadido código sospechoso a proyectos como libarchive y oss-fuzz.

JFrog Xray se puede utilizar para identificar cada ocurrencia vulnerable en toda la base de código y artefactos compilados, incluyendo contenedores Docker, paquetes de repositorio e incluso binarios independientes, facilitando la detección y resolución de CVE-2024-3094.

Puedes ampliar información en el artículo original en inglés en jFrog.

Scroll al inicio