'XZ-utils' es un paquete de aplicaciones open source que permiten gestionar archivos comprimidos en el formato '.xz'. La cuestión es que este formato ofrece mayores tasas de compresión que, por ejemplo, los .zip. Y eso lo ha convertido en un proyecto muy popular en entornos Linux, tanto que hasta el kernel de Linux lo usa para distribuir sus archivos.
Y esto, claro, ha llevado a que la práctica totalidad de distribuciones Linux incluyan esta herramienta por defecto. Así que imagínate por un momento que un ciberdelincuente se dedica a aportar código a este proyecto abierto durante dos largos años, código malicioso que, poco a poco y sin que nadie se dé cuenta, va construyendo una 'puerta trasera' en XZ.
Imagina que esta puerta trasera permite modificar el SSH (sistema de acceso remoto) de Linux, lo que a su vez proporciona potencialmente el control de cualquier dispositivo infectado. Y ahora recuerda que, a la larga, la mayoría de los dispositivos Linux del planeta (que son minoría en escritorio, sí, pero mayoría aplastante en servidores de Internet) estaban destinados a actualizarse a esta versión maliciosa de XZ.
Algunos han descrito este plan como 'hackear el planeta'. Quizá suene exagerado, pero no tanto como crees.
Pues bien, deja de imaginarte este escenario, porque ha ocurrido realmente. O más bien, estaba a punto de ocurrir: varias distribuciones ya habían empezado a distribuir en las últimas semanas la versión maliciosa de XZ... hasta que, este fin de semana, un desarrollador de Microsoft ha salvado al mundo. Así, como suena.
"Tenemos una puerta trasera"
Lo más curioso es que descubrió lo que estaba pasando porque notó que un proceso de su ordenador iba más lento de lo esperado. 0,5 segundos más lento, para ser precisos. Demos la palabra al héroe del día, Andres Freund:
"En ese momento estaba realizando algunas microevaluaciones y necesitaba apaciguar el sistema para reducir el ruido. Vi que los procesos de sshd estaban utilizando una cantidad sorprendente de CPU, a pesar de que fallaban inmediatamente debido a nombres de usuario incorrectos, etc.
Al hacer el perfil de 'sshd', mostraba que se dedicaba mucho tiempo de CPU en liblzma, pero [la herramienta] 'perf' era incapaz de atribuirlo a una función concreta. Empecé a sospechar. Recordé que había visto un aviso extraño de [la herramienta] Valgrind en las pruebas automatizadas de postgres, unas semanas antes, después de las actualizaciones de paquetes. Realmente requirió muchas coincidencias".
Pero, ¿qué había encontrado exactamente?
"Después de observar algunos síntomas extraños en torno a liblzma (parte del paquete xz) en instalaciones de Debian Sid durante las últimas semanas (los inicios de sesión con ssh requieren mucha CPU, errores de valgrind) descubrí la respuesta: El repositorio de XZ y sus archivos tar tienen una puerta trasera".
Tras dejar caer esta bomba, la comunidad open source se ha puesto a revisar con detenimiento las aportaciones de código al repositorio de XZ, y las ha rastreado hasta un usuario llamado 'Jia Tian' o 'JiaT75', quien aparentemente hizo uso de varias cuentas falsas con poca actividad para presionar en favor de que sus contribuciones se incorporasen al código de XZ, primero, y para lograr situarse como co-mantenedor del repositorio, más tarde.
Tienes todo el rastro de actividad de Jia Tian en esta web, donde también relatan sus intentos de última hora para lograr que el XZ infectado se incorporase a diversas distribuciones Linux (como Ubuntu o Fedora).
Y por cierto: la vulnerabilidad, una vez identificada, ha sido puntuada con un 10 (sobre 10) en el índice de peligrosidad.
Por cierto, los paquetes infectados estaban disponibles en Fedora 40, Fedora Rawhide, Kali Linux, openSUSE Tumbleweed, openSUSE MicroOS y Debian (testing, unstable y experimental). Actualiza si usas cualquiera de estas distros.
Imagen | Marcos Merino mediante IA + Foto de avatar de Andres Freund (vía Mastodon)