Los investigadores han encontrado una puerta trasera maliciosa en una herramienta de compresión que se coló en distribuciones de Linux muy utilizadas, incluidas las de Red Hat y Debian.
La utilidad de compresión, conocida como xz Utils, introdujo el código malicioso en las versiones 5.6.0 y 5.6.1, según Andres Freund, el desarrollador que lo descubrió. No se tiene constancia de que esas versiones se hayan incorporado a ninguna versión de producción de las principales distribuciones de Linux, pero tanto Red Hat como Debian informaron de que las versiones beta publicadas recientemente utilizaban al menos una de las versiones antedichas, concretamente en Fedora Rawhide y en las distribuciones de pruebas, inestables y experimentales de Debian. Una versión estable de Arch Linux también está afectada. Esa distribución, sin embargo, no se utiliza en sistemas de producción.
Puede leer también | Diez predicciones globales de Ciberseguridad para 2024
Dado que la puerta trasera se descubrió antes de que las versiones maliciosas de xz Utils se añadieran a las versiones de producción de Linux, "no está afectando realmente a nadie en el mundo real", dijo Will Dormann, analista principal de vulnerabilidades de la empresa de seguridad Analygence, en una entrevista en línea. "PERO eso es sólo porque se descubrió pronto debido a la dejadez de los malos actores. Si no se hubiera descubierto, habría sido catastrófico para el mundo".
Varias personas, entre ellas dos lectores de Ars, informaron de que las múltiples aplicaciones incluidas en el gestor de paquetes HomeBrew para macOS dependen de la versión 5.6.1 de xz Utils. HomeBrew ha revertido la utilidad a la versión 5.4.6. Los mantenedores tienen más detalles disponibles aquí.
Rompiendo la autenticación SSH
Los primeros indicios de la puerta trasera se introdujeron en una actualización del 23 de febrero que añadía código ofuscado, según informaron los responsables de Red Hat en un correo electrónico. Una actualización del día siguiente incluía un script de instalación malicioso que se inyectaba a sí mismo en funciones utilizadas por sshd, el archivo binario que hace funcionar SSH. El código malicioso sólo ha residido en las versiones archivadas -conocidas como tarballs- que se liberan aguas arriba. El llamado código GIT disponible en repositorios no está afectado, aunque sí contienen artefactos de segunda fase que permiten la inyección durante el tiempo de compilación. En el caso de que el código ofuscado introducido el 23 de febrero esté presente, los artefactos de la versión GIT permiten el funcionamiento de la puerta trasera.
Puede leer también | Las 10 razones por las cuales debes saber Python para la ciberseguridad
Los cambios maliciosos fueron enviados por JiaT75, uno de los dos principales desarrolladores de xz Utils con años de contribuciones al proyecto.
"Dada la actividad durante varias semanas, o bien el autor está directamente implicado, o bien su sistema se ha visto gravemente comprometido", escribió Freund. "Desafortunadamente, esta última parece la explicación menos probable, dado que se comunicaron en varias listas sobre las 'correcciones'" proporcionadas en actualizaciones recientes. Esas actualizaciones y correcciones se pueden encontrar aquí.
El jueves, alguien que utilizaba el nombre del desarrollador se dirigió a un sitio de desarrolladores de Ubuntu para pedir que la versión 5.6.1, que había quedado atrás, se incorporara a las versiones de producción porque corregía errores que hacían que una herramienta conocida como Valgrind no funcionara correctamente.
"Esto podría romper los scripts de compilación y las tuberías de prueba que esperan una salida específica de Valgrind para pasar", advirtió la persona, desde una cuenta que se creó el mismo día.
Puede leer también | ¿Es la inteligencia artificial la solución a las amenazas de ciberseguridad?
Uno de los mantenedores de Fedora dijo el viernes que el mismo desarrollador se puso en contacto con ellos en las últimas semanas para pedir que Fedora 40, una versión beta, incorporara una de las versiones de la utilidad backdoored.
Puede leer también | La herramienta de ciberseguridad GUAC, respaldada por Google, se convierte en un proyecto OpenSSF
"Incluso trabajamos con él para arreglar el problema de valgrind (que ahora resulta que fue causado por la puerta trasera que había añadido)", dijo el mantenedor de Ubuntu. "Ha formado parte del proyecto xz durante dos años, añadiendo todo tipo de archivos binarios de prueba, y con este nivel de sofisticación, sospecharíamos incluso de versiones más antiguas de xz hasta que se demuestre lo contrario".
Los responsables de xz Utils no respondieron de inmediato a los correos electrónicos con preguntas.
Según los investigadores, las versiones maliciosas interfieren intencionadamente con la autenticación realizada por SSH, un protocolo de uso común para conectarse remotamente a sistemas. SSH proporciona un cifrado robusto para garantizar que sólo las partes autorizadas se conectan a un sistema remoto. El backdoor está diseñado para permitir a un actor malicioso romper la autenticación y, a partir de ahí, obtener acceso no autorizado a todo el sistema. La puerta trasera funciona inyectando código durante una fase clave del proceso de inicio de sesión.
"Aún no he analizado con precisión qué se comprueba en el código inyectado para permitir el acceso no autorizado", escribió Freund. "Dado que se ejecuta en un contexto previo a la autenticación, parece probable que permita algún tipo de acceso u otra forma de ejecución remota de código".
En algunos casos, la puerta trasera no ha podido funcionar como se pretendía. El entorno de compilación de Fedora 40, por ejemplo, contiene incompatibilidades que impiden que la inyección se produzca correctamente. Fedora 40 ya ha revertido a las versiones 5.4.x de xz Utils.
Xz Utils está disponible para la mayoría, si no todas, las distribuciones de Linux, pero no todas lo incluyen por defecto. Cualquiera que utilice Linux debería comprobar inmediatamente con su distribuidor si su sistema está afectado. Freund proporcionó un script para detectar si un sistema SSH es vulnerable.