Jump to content

Linux XZ Backdoor Explicado (XZ Utils) CVE-2024-3094


 Share

Recommended Posts

Muy buenas, seguramente escucharon como un programador trabajo en los últimos años contribuyendo en el código abierto de Linux específicamente en las librerías XZ Utils sembrando código específico para generar un BackDoor en las conexiones SSH permitiendo a los atacantes eludir la Autentificación.

 

Los invito a ver el próximo video donde queda el principio de este tema explicado.

 

 

 

 

Leído en Wired:

 

El viernes, un desarrollador solitario de Microsoft sacudió al mundo cuando reveló que se había colocado intencionalmente una puerta trasera en XZ Utils, una utilidad de compresión de datos de código abierto disponible en casi todas las instalaciones de Linux y otros sistemas operativos similares a Unix. La persona o personas detrás de este proyecto probablemente pasaron años en él. Probablemente estaban muy cerca de ver la actualización de puerta trasera fusionada con Debian y Red Hat, las dos distribuciones más grandes de Linux, cuando un desarrollador de software con vista de águila vio algo sospechoso.

 

"Este podría ser el ataque a la cadena de suministro mejor ejecutado que hemos visto descrito abiertamente, y es un escenario de pesadilla: malicioso, competente, autorizado en una biblioteca ampliamente utilizada", dijo el ingeniero de software y criptografía Filippo Valsorda sobre el esfuerzo, que estuvo terriblemente cerca de lograrlo.

 

Los investigadores han pasado el fin de semana reuniendo pistas. Esto es lo que sabemos hasta ahora.


¿Qué son las utilidades XZ?

 

XZ Utils es casi omnipresente en Linux. Proporciona compresión de datos sin pérdidas en prácticamente todos los sistemas operativos tipo Unix, incluido Linux. XZ Utils proporciona funciones críticas para comprimir y descomprimir datos durante todo tipo de operaciones. XZ Utils también admite el formato heredado .lzma, lo que hace que este componente sea aún más crucial.


¿Qué pasó?

 

Andrés Freund, un desarrollador e ingeniero que trabaja en las ofertas PostgreSQL de Microsoft, estaba recientemente solucionando problemas de rendimiento que estaba experimentando un sistema Debian con SSH, el protocolo más utilizado para iniciar sesión de forma remota en dispositivos a través de Internet. Específicamente, los inicios de sesión SSH consumían demasiados ciclos de CPU y generaban errores con valgrind, una utilidad para monitorear la memoria de la computadora.

 

Por pura suerte y la cuidadosa mirada de Freund, finalmente descubrió que los problemas eran el resultado de las actualizaciones que se habían realizado en XZ Utils. El viernes, Freund recurrió a la Lista de seguridad de código abierto para revelar que las actualizaciones fueron el resultado de que alguien colocó intencionalmente una puerta trasera en el software de compresión.

 

Es difícil exagerar la complejidad de la ingeniería social y el funcionamiento interno de la puerta trasera. Thomas Roccia, investigador de Microsoft, publicó un gráfico en Mastodon que ayuda a visualizar el alcance del intento casi exitoso de difundir una puerta trasera con un alcance que habría eclipsado el evento SolarWinds de 2020.

 

¿Qué hace la puerta trasera?

 

El código malicioso agregado a las versiones 5.6.0 y 5.6.1 de xz Utils modificó la forma en que funciona el software. La puerta trasera manipuló sshd, el archivo ejecutable utilizado para realizar conexiones SSH remotas. Cualquiera que posea una clave de cifrado predeterminada podría guardar cualquier código de su elección en un certificado de inicio de sesión SSH, cargarlo y ejecutarlo en el dispositivo con puerta trasera. En realidad, nadie ha visto el código cargado, por lo que no se sabe qué código planeaba ejecutar el atacante. En teoría, el código podría permitir casi cualquier cosa, incluido el robo de claves de cifrado o la instalación de malware.


Espera, ¿cómo puede una utilidad de compresión manipular un proceso tan sensible a la seguridad como SSH?

Cualquier biblioteca puede alterar el funcionamiento interno de cualquier ejecutable al que esté vinculado. A menudo, el desarrollador del ejecutable establecerá un enlace a una biblioteca necesaria para que funcione correctamente. OpenSSH, la implementación sshd más popular, no vincula la biblioteca liblzma, pero Debian y muchas otras distribuciones de Linux agregan un parche para vincular sshd a systemd, un programa que carga una variedad de servicios durante el inicio del sistema. Systemd, a su vez, se vincula a liblzma, y esto permite a XZ Utils ejercer control sobre sshd.


¿Cómo surgió esta puerta trasera?

 

Parecería que esta puerta trasera tardó años en desarrollarse. En 2021, alguien con el nombre de usuario JiaT75 hizo su primer compromiso conocido con un proyecto de código abierto. En retrospectiva, el cambio en el proyecto libarchive es sospechoso, porque reemplazó la función safe_fprint con una variante que durante mucho tiempo se ha reconocido como menos segura. Nadie se dio cuenta en ese momento.

 

Al año siguiente, JiaT75 envió un parche a la lista de correo de XZ Utils y, casi de inmediato, un participante nunca antes visto llamado Jigar Kumar se unió a la discusión y argumentó que Lasse Collin, el antiguo mantenedor de XZ Utils, no había sido actualizar el software con frecuencia o lo suficientemente rápido. Kumar, con el apoyo de Dennis Ens y varias otras personas que nunca habían estado presentes en la lista, presionó a Collin para que contratara a un desarrollador adicional para mantener el proyecto.

 

En enero de 2023, JiaT75 hizo su primer compromiso con XZ Utils. En los meses siguientes, JiaT75, que usaba el nombre de Jia Tan, se involucró cada vez más en los asuntos de XZ Utils. Por ejemplo, Tan reemplazó la información de contacto de Collins con la suya propia en oss-fuzz, un proyecto que escanea software de código abierto en busca de vulnerabilidades que puedan explotarse. Tan también solicitó que oss-fuzz deshabilitara la función ifunc durante las pruebas, un cambio que le impidió detectar los cambios maliciosos que Tan pronto haría en XZ Utils.

 

En febrero de este año, Tan emitió confirmaciones para las versiones 5.6.0 y 5.6.1 de XZ Utils. Las actualizaciones implementaron la puerta trasera. En las semanas siguientes, Tan u otros pidieron a los desarrolladores de Ubuntu, Red Hat y Debian que fusionaran las actualizaciones en sus sistemas operativos. Finalmente, una de las dos actualizaciones llegó a varias versiones, según la firma de seguridad Tenable. Hay más información sobre Tan y la línea de tiempo aquí.


¿Puede decirnos más sobre lo que hace esta puerta trasera?

 

En pocas palabras, permite a alguien con la clave privada correcta secuestrar sshd, el archivo ejecutable responsable de realizar conexiones SSH, y desde allí ejecutar comandos maliciosos. La puerta trasera se implementa a través de un cargador de cinco etapas que utiliza una serie de técnicas simples pero inteligentes para ocultarse. También proporciona los medios para entregar nuevas cargas útiles sin que se requieran cambios importantes.

 

En una entrevista en línea, el desarrollador e ingeniero inverso HD Moore confirmó la sospecha de Sam James de que la puerta trasera apuntaba a distribuciones Debian o Red Hat.

 

“El ataque fue furtivo porque solo realizó los pasos finales de la puerta trasera si estabas construyendo la biblioteca en AMD64 (Intel x86 de 64 bits) y estabas construyendo un paquete Debian o RPM (en lugar de usarlo para una instalación local).

 

¿Qué más sabemos sobre Jia Tan?

 

Por el momento, extremadamente poco, especialmente para alguien a quien se le ha confiado la administración de un software tan ubicuo y sensible como XZ Utils. Esta personalidad de desarrollador ha tocado docenas de otras piezas de software de código abierto en los últimos años. Por el momento, se desconoce si alguna vez hubo una persona del mundo real detrás de este nombre de usuario o si Jia Tan es un individuo completamente inventado.

 

Hay análisis técnicos adicionales disponibles en el hilo Bluesky anterior de Valsorda, el investigador Kevin Beaumont y la divulgación del viernes de Freund.


¿Existe una designación de seguimiento CVE?

 

Sí, es CVE-2024-3094.

  • Upvote 2
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...