Las alarmas han saltado en las últimas horas. El pasado 29 de marzo, un desarrollador de Microsoft, Andres Freund, descubrió que un código malicioso en versiones beta había sido introducido a través de la background de XZ Utils. El acceso a esta aplicación de compresión de datos de código abierto de Linux permitiría llegar a otras distribuciones como Debian o Red Hat, entre otras.

Las investigaciones señalan que, de no haber sido descubierto a tiempo, podrían haberse generados problemas catastróficos para millones de usuarios en todo el mundo. Los cambios fueron publicados por JiaT75, uno de los desarrolladores del proyecto xz Utils. Desde febrero se vienen detectando instalaciones de script malicioso y su inyección en funciones claves como sshd.

¿Qué ha sucedido exactamente?

Freund se sirvió de la herramienta valgrind, una utilidad para monitorear la memoria de la computadora, para detectar que los inicios de sesión de SSH consumían demasiados ciclos de CPU. Fue un hallazgo accidental, aunque gracias a eso pudo detectar que los problemas eran el resultado de las actualizaciones que se habían venido realizando en xz Utils.

Al recurrir a la Lista de Seguridad de Código Abierto, fue capaz de percibir que las actualizaciones habían sido el resultado de que alguien había estado colocando una puerta trasera, de manera intencional, en el software de compresión.

Para ser más exactos, Freund se percató que el proceso SSH estaba consumiendo demasiados recursos, pues la conexión con ssh tardaba 500.000 milisegundos más en realizarse de lo que debería. El problema, por tanto, residía en las últimas actualizaciones acometidas en el paquete xz Utils.

Al introducirse un código malicioso en la background, en concreto en las versiones 5.6.0 y 5.6.1 de XZ Utils, se modificó el método de funcionamiento del software. Se manipuló el sshd y, desde entonces, cualquiera con una clave de cifrado podría guardar código en un certificado de inicio de sesión SSH, cargarlo y ejecutarlo en el dispositivo con puerta trasera. A partir de ahí, ese código podía robar claves de cifrado o instalar malware.

Se demuestra que la filosofía Open Source conlleva un gran peligro. Estos proyectos, aunque incluyan un código malicioso, siguen estando disponibles para que cualquiera los analice. Eso fue lo que permitió descubrir la vulnerabilidad por casualidad.

Llama la atención que un proceso tan sensible como la seguridad SSH pueda ser vulnerada. El desarrollador del ejecutable suele establecer un enlace a una biblioteca necesaria para que funcione correctamente. Gracias a OpenSSH, la implementación sshd más popular, no se vincula la biblioteca liblzma, pero Debian y otras distribuciones de Linux agregan un parche para vincular sshd a systemd. Éste se vincula a liblzma y permite a xz Utils ejercer control sobre ssd.

Hay que recordar que la puerta trasera es capaz de permitir a alguien encontrar la clave privada correcta para secuestrar sshd y desde allí ejecutar nuevos comandos maliciosos. La puerta trasera, a su vez, se implementa mediante un cargador de cinco etapas que emplea una serie de técnicas simples e inteligentes para ocultarse.

No obstante, puede aclararse que el ataque fue furtivo, ya que solo realizó los pasos finales de la puerta trasera si se estaba contribuyendo a la biblioteca en AMD64 y se estaba construyendo un paquete Debian o RPM, en lugar de usarlo para una instalación local.

¿Quién está detrás de este ataque?

Con las investigaciones aún en curso, todo hace indicar que JiaT75 es la identidad de quien está detrás. Aunque no se trataría de una persona, sino que se especula con que fuese un grupo de criminales apoyados por algún gobierno que durante mucho tiempo se han dedicado a construir un perfil de aparente desarrollador Open Source.

Tras convertirse en pieza clave del proyecto, habría dejado de lado su versión desinteresada para actuar de forma maliciosa e infiltrarse en millones sistemas por medio de la puerta trasera creada en xz Utils.

Ya en 2022, en un foro de opinión pudo leerse que un tal ‘Jia Tan’, seguía al frente del proyecto, pese a que aparentemente parecía abandonado. Fue en 2021 cuando un usuario llamado ‘JiaT75’ realizó su primer compromiso con un proyecto de código abierto. Logró reemplazar la función safe frprint con una variante que durante mucho tiempo es menos segura.

Posteriormente, enviaría un parche a la lista de correo de xzUtils y, a continuación, un participante llamado Jigar Kumar argumentó que con anterioridad nunca se había actualizado el software con frecuencia o lo suficientemente rápido.

Fue en enero de 2023 cuando JiaT75 empezó a ganar más involucración en los asuntos relativos a xz Utils. Fue precisamente él quien solicitó que se deshabilitase la función ifunc durante las pruebas, impidiendo la detección de cambios maliciosos realizados a posteriori en xz Utils.

La vulnerabilidad de XZ Utils abre la puerta a otros problemas vigentes en la verificación de claves públicas SSH, que si coinciden con una determinada función de huella digital, se puede llegar a descifrar el contenido.

Deja un comentario

Por favor, introduce tu comentario
Por favor, introduce tu nombre