CVE-2024-3094: todo lo que necesita saber sobre esta vulnerabilidad de XZ Utils

El viernes 29 de marzo de 2024, Andres Freund, ingeniero de Microsoft, identificó la presencia de una puerta trasera (backdoor) en el software XZ Utils. Esta puerta trasera fue publicada por la National Vulnerability Database el mismo día, bajo la referencia CVE-2024-3094. El código malicioso fue detectado por casualidad durante una serie de pruebas realizadas en un servidor que contaba con una versión infectada: Andres observó un pico de carga en el procesador en la biblioteca liblzma, utilizada por XZ Utils.

¿Qué es XZ Utils?

XZ Utils, anteriormente conocido como LZMA Utils, es una herramienta de compresión cuyo rendimiento suele ser superior al de GZIP o BZip2. XZ es muy utilizado en las distribuciones de Linux.

XZ Utils consta de xz, una herramienta de compresión y descompresión, y liblzma, una biblioteca que puede ser cargada por otras herramientas para trabajar con el formato lzma.

¿Qué es la vulnerabilidad CVE-2024-3094?

La CVE-2024-3094 es una vulnerabilidad crítica que permite a un atacante ejecutar comandos de forma remota en una máquina afectada.

Esta vulnerabilidad es una puerta trasera, es decir, un fragmento de código malicioso introducido en el código de XZ Utils por desarrolladores con intenciones malintencionadas. Este tipo de vulnerabilidad pertenece a la familia de ataques a la cadena de suministro (supply chain), ya que la CVE-2024-3094 se insertó en el código del proyecto XZ Utils a través de los procesos de desarrollo de código abierto.

En otras palabras, la CVE-2024-3094 está relacionada con la inserción deliberada de código malicioso por parte de atacantes en el proyecto XZ Utils.

Afortunadamente, la vulnerabilidad se detectó rápidamente, antes de que el código malicioso llegara a producción en la mayoría de las distribuciones de Linux.

Esta CVE es crítica, con un puntuación de 10/10 según Red Hat.

¿Cómo funciona la CVE-2024-3094?

La CVE-2024-3094 se basa en el hecho de que Debian, SUSE, Fedora y Kali Linux utilizan las notificaciones de systemd al gestionar las conexiones SSH entrantes, y que systemd utiliza liblzma.

Cualquier intento de conexión al servicio SSH de un servidor vulnerable es ligeramente más lento (aproximadamente 500 ms) debido a la ejecución del código de la puerta trasera.

Según Filippo Valsorda, conocido por su trabajo en la vulnerabilidad Heartbleed:

  • El código malicioso solo se activa realmente si el atacante se conecta a SSH con un certificado OpenSSH especialmente diseñado para explotar la CVE-2024-3094;
  • El código malicioso se desactiva cuando se realiza una autenticación con certificado OpenSSH y el proceso no culmina en un ataque.

La capacidad del código malicioso para desactivarse en caso de un ataque fallido dificulta la detección de esta vulnerabilidad mediante escaneos de red, así como su uso por parte de atacantes oportunistas.

¿Cómo explotar la CVE-2024-3094 de XZ Utils?

La explotación de la CVE-2024-3094 requiere preparar un certificado OpenSSH malicioso con propiedades criptográficas específicas.

Según la información de la que disponemos, parece que solo el equipo responsable de insertar la puerta trasera en el código de XZ Utils puede explotar esta vulnerabilidad de manera efectiva.

¿Cómo insertó el atacante el código de la puerta trasera en XZ Utils?

El ataque se desarrolló a lo largo de varios años a través de la cuenta de GitHub JiaT75 (Jia Tan). Thomas Roccia, ingeniero de Microsoft, elaboró un esquema detallado que traza la cronología del ataque, el cual fue ampliamente compartido por la comunidad de seguridad tras su descubrimiento.

CVE-2024-3094: ¿qué sistemas están afectados por esta vulnerabilidad?

El código malicioso que originó la CVE-2024-3094 fue detectado antes de entrar en producción en la mayoría de las principales distribuciones de Linux del mercado.

En consecuencia, las ramas de desarrollo como Debian SID o Alpine Linux Edge son las principales versiones afectadas.

Los sistemas vulnerables son:

  • Debian SID / Debian Unstable / Debian 13 (versión de desarrollo): xz-utils versiones anteriores a 5.6.1+really5.4.5-1 (fuente).
  • Alpine Linux Edge : xz-utils versiones anteriores a 5.6.1-r2 (fuente).
  • ArchLinux : xz versiones 5.6.0-1 y 5.6.1-1; la vulnerabilidad se ha corregido en la versión 5.6.1-2 (fuente).
  • Fedora 40 Linux beta / Fedora Rawhide : xz-libs versiones 5.6.0-1 y 5.6.0-2; no hay parche disponible para Fedora 40 Linux beta, Red Hat recomienda volver a xz-libs 5.4.X; Fedora 40 Linux no está afectada (fuente).

Las distribuciones no mencionadas en esta lista no están, según la información disponible públicamente, afectadas por esta vulnerabilidad.

Utilizo un sistema afectado por CVE-2024-3094, ¿qué debo hacer?

Cyberwatch recomienda aplicar lo antes posible los parches de seguridad proporcionados por su distribución.

Además, Cyberwatch recomienda revisar los registros de SSHD para controlar todas las conexiones entrantes, e incluso los registros del sistema para verificar la carga de la biblioteca liblzma durante una conexión SSH entrante.

Para los sistemas afectados, lo mejor es partir de la premisa de que el sistema ha sido comprometido y reinstalarlo por completo si fuera necesario.

Cabe señalar también que las distribuciones de desarrollo como Fedora Rawhide o Debian SID no están recomendadas para entornos de producción habituales.

¿Cómo detectar la CVE-2024-3094?

Compruebe si utiliza alguna de las versiones de XZ Utils mencionadas anteriormente en este artículo.

Los usuarios de la plataforma de gestión de vulnerabilidades Cyberwatch ya pueden detectar esta vulnerabilidad desde el 29 de marzo de 2024. No dude en contactar con nuestro equipo para cualquier solicitud de información.

Seguimiento de cambios

31/03/2024 a las 14:39 GMT+2: versión inicial

Gracias por enviar el formulario.