Hace poco se dio a conocer la noticia de que en el paquete XZ Utils ha sido identificado un backdoor que permite a los atacantes interceptar y modificar datos procesados por aplicaciones asociadas a la biblioteca liblzma. La principal vulnerabilidad (ya catalogada bajo CVE-2024-3094) se encuentra en el servidor OpenSSH, que en algunas distribuciones utiliza la biblioteca libsystemd, que a su vez depende de liblzma. Al vincular sshd con una versión vulnerable de liblzma, los atacantes pueden acceder al servidor SSH sin autenticación.
El descubrimiento del backdoor en el proyecto XZ Utils ocurrió tras la detección de problemas como el consumo excesivo de CPU y errores generados por valgrind al conectarse a sistemas basados en Debian sid a través de SSH. Estos problemas llevaron a una investigación más profunda que reveló la presencia del backdoor.
El presunto autor del backdoor, Jia Tan, era un desarrollador activo y respetado en el proyecto xz, con el estatus de «co-mantenedor» durante varios años y contribuciones significativas al desarrollo de varias versiones. Además del proyecto xz, también contribuyó a otros paquetes relacionados, como xz-java y xz-embedded. Incluso fue incluido recientemente entre los mantenedores del proyecto XZ Embedded utilizado en el kernel de Linux.
El cambio malicioso fue descubierto después de quejas sobre problemas con la versión xz 5.6.0, que incluía el backdoor, como desaceleraciones y fallas en sshd. La versión siguiente, xz 5.6.1, incluyó cambios preparados por Jia Tan en respuesta a estas quejas, lo que posiblemente fue una forma de encubrir la presencia del backdoor
Además, se menciona que Jia Tan realizó cambios incompatibles con el modo de inspección «-fsanitize=address» el año pasado, lo que llevó a la deshabilitación de las pruebas fuzz en ese momento. Estos detalles sugieren que la introducción del backdoor fue una acción planeada y oculta dentro del desarrollo del proyecto, lo que podría haber comprometido a un número desconocido de usuarios y proyectos que utilizan XZ Utils.
Aunque esta vulnerabilidad afecta a sistemas x86_64 basados en el kernel de Linux y la biblioteca Glibc C que incluye sshd con libsystemd para admitir el mecanismo sd_notify, varios factores han atenuado el impacto. Por ejemplo, la versión de liblzma con el backdoor no se incluyó en las versiones estables de grandes distribuciones, y algunas distribuciones como Arch Linux y Gentoo usaron una versión vulnerable de xz pero no son susceptibles al ataque debido a ciertas configuraciones.
Se menciona que la activación del backdoor estaba oculto en macros m4 en el archivo build-to-host.m4 utilizado durante la compilación, lo que permitió la inserción de código malicioso en la biblioteca liblzma. Este código malicioso modificó la lógica de funcionamiento de algunas funciones en la biblioteca, lo que facilitó el acceso no autorizado al servidor SSH en sistemas afectados.
El proceso de implementación del backdoor en el paquete XZ Utils implicó varios pasos y técnicas para ocultar su presencia y activación. Se utilizaron macros m4 en el archivo build-to-host.m4 durante la compilación para introducir el código malicioso en la biblioteca liblzma. Estas macros estaban presentes en los archivos tar de la versión, pero no en el repositorio de Git, y se añadieron al .gitignore. Además, se incluyeron archivos de prueba maliciosos en el repositorio, lo que sugiere un acceso privilegiado al proceso de generación de versiones.
El backdoor se activaba mediante la ejecución del comando /usr/sbin/sshd y se ocultaba en entornos no depurados o de producción, evitando la detección en terminales normales. Se falsificó la función RSA_public_decrypt para eludir el proceso de autenticación sshd, lo que permitía a los atacantes obtener acceso no autorizado al servidor SSH.
Para ocultar aún más la presencia del backdoor, se incluyeron mecanismos de protección contra la detección y se verificó la ejecución en entornos de depuración. Todo esto demuestra un nivel avanzado de planificación y conocimiento técnico por parte de los responsables del backdoor para evadir la detección y llevar a cabo ataques exitosos en sistemas afectados.
Si estas interesado en poder conocer mas al respecto, puedes consultar los detalles en el siguiente enlace.