📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

BACKDOOR de XZ | Todos los detalles del MAYOR ATAQUE a LINUX de la Historia

Webkind - Javascript y Otras Cosas10:05

Transcription

El 29 de marzo de 2024, mientras realizaba micro benchmarks en su computadora, Andre Fre notó un comportamiento inusual. Al revisar el uso de la CPU, observó que un proceso llamado LP lzma, parte de la biblioteca xz, estaba consumiendo más recursos de lo habitual. Sin saberlo, estaba a punto de descubrir y prevenir uno de los mayores ataques informáticos de la historia.

En este video hablaremos de este caso muy complejo y super interesante, y cómo fue que el mundo tuvo suerte de salvarse. Además de entender qué exactamente fue lo que sucedió, quiénes fueron los responsables de este ataque, y cómo es que este ataque informático es un plan maestro de ingeniería social.

La historia comienza el 26 de enero de 2021. El usuario jatan crea su cuenta en GitHub y realiza su primera contribución el 2 de noviembre de 2021. La librería libarchive, la cual se utiliza en sistemas Unix como Mac y Linux, así como también en sistemas Windows. Libarchive es una biblioteca escrita en C, diseñada para detectar y leer diversos tipos de archivos, así como para gestionar automáticamente varios formatos de compresión, incluido 7z y .zip. La actualización realizada por Jia añadió una función de error al modificar archivos, en donde modificaba una función llamada safe_print por una versión insegura, e_print, lo que potencialmente introducía una vulnerabilidad. A pesar de esto, el código fue aprobado sin ningún tipo de discusión y estuvo presente hasta el 12 de marzo de 2024, cuando fue [Música] corregido.

En abril de 2022, jatan envía un parche a través de una lista de correos para la librería xz. Xz es una suite de software de código abierto y gratuita que da a los desarrolladores una manera de comprimir el tamaño de archivo sin pérdida de información en el proceso. En otras palabras, un algoritmo de compresión sin pérdida, comúnmente muy utilizado para comprimir paquetes de software o imágenes de kernels. Es una herramienta muy distribuida, siendo utilizada por sistemas como Linux o Mac.

Aunque el contenido del parche no es relevante, los eventos siguientes son muy interesantes. Se presenta una nueva figura, Jiaqiang Kumar, quien comienza a presionar para que se acepte el parche enviado por Jia. En sus correos, expresa su frustración por la demora en la liberación de parches. Poco después, en junio del mismo año, observamos cómo Jiaqiang incrementa la presión, afirmando que el mantenedor principal del proyecto, encargado de mantener y desarrollar el repositorio, ha perdido el interés y ya no se preocupa por él.

En respuesta, lz-colin, el principal mantenedor, aclara que no ha perdido el interés en el proyecto, sino que se ha visto limitado debido a problemas de salud mental que arrastra desde hace tiempo, entre otras cuestiones. Además, subraya la importancia de recordar que el proyecto es meramente voluntario y no conlleva ninguna remuneración. Destaca que ha colaborado en cierta medida con jatan y sugiere que podría desempeñar un papel significativo en el futuro de la librería. Asimismo, señala que tras la liberación de la versión 5.4.0, podría ser oportuno considerar cambios en la lista de mantenedores del proyecto.

Jiaqiang persiste en ejercer presión, señalando que, dada la velocidad actual, es poco probable que sea liberada la versión 5.4.0 del proyecto ese año. Además, expresa su preocupación de que esta demora esté obstaculizando el progreso del proyecto, insistiendo en saber por qué hay tantos retrasos en el repositorio.

Otro participante, Denis, quien envió el primer correo de la discusión donde simplemente preguntaba si el repositorio seguía activo, tras la presión ejercida por Jiaqiang, Denis también intensifica su presión. Lamenta los problemas mentales de colin y le menciona que debe ser consciente de sus límites personales. Reconoce que el proyecto es un pasatiempo, pero señala que la comunidad espera más. Nuevamente insiste en la necesidad de que el rol de mantenimiento sea asumido por otra persona.

El último mensaje de la discusión lo envía colin en respuesta a los mensajes anteriores. En él, menciona que ha considerado durante algún tiempo la posibilidad de buscar ayuda adicional para el mantenimiento del proyecto o incluso transferirlo a otra persona. Sin embargo, enfatiza que esta decisión no puede tomarse a la ligera y es fundamental encontrar a alguien con las habilidades, el tiempo y el compromiso a largo plazo necesarios para llevar a cabo esta tarea. Finalmente, vuelve a hacer mención de jatan, sugiriendo una vez más que podría desempeñar un papel más significativo en el futuro del proyecto.

Lo más interesante de todo esto es que estas dos cuentas no volvieron a comentar en ningún otro tema aparte de estas discusiones sobre xz. El 6 de enero de 2023, jatan completa su primera contribución, lo que nos da una buena indicación del momento en que se ganó la confianza total del repositorio. Y el 20 de marzo, el contacto principal por email de la librería oss-fuzz de Google es actualizado para que sea Jia en lugar de lz-colin.

Como un poco de contexto, oss-fuzz es una herramienta para realizar fuzz testing, el cual es una técnica de prueba de software automatizadas, las cuales generan datos inválidos, inesperados y aleatorios como inputs para algún programa o software, descubriendo así posibles errores y vulnerabilidades de software.

El 23 de junio se introduce la infraestructura que introduce la vulnerabilidad que será explotada. Aunque lz-colin figura como el autor de estos cambios, en realidad fueron realizados por jatan, y originalmente la infraestructura fue escrita por Hans Jensen. En junio, lo extraño es que parece que la cuenta de Hans Jensen se creó únicamente con el propósito de sus cambios, ya que después no tuvo actividad.

El 7 de julio de 2023, un Pull Request, es decir, una solicitud para introducir código nuevo, fue abierto en el repositorio de oss-fuzz para deshabilitar unas funciones llamadas ifunc, justificando que era necesario porque no era compatible con ciertos cambios introducidos en la librería de xz. Sin embargo, de manera muy simplificada, estos cambios harían que la herramienta oss-fuzz, básicamente la herramienta de pruebas, no diera ningún tipo de advertencias para estas funciones ifunc durante la ejecución de las pruebas. Aparentemente, este Pull Request fue usado para ocultar los cambios maliciosos que pronto se iban a introducir.

También Jia abrió un reporte de error en el repositorio de LLVM debido a una advertencia relacionada con la función ifunc. Aunque esta advertencia era incorrecta, comenzó a llamar la atención sobre las funciones [Música] ifunc.

El 10 de febrero de 2024, se abre un nuevo Pull Request para la librería oss-fuzz que modifica la URL del proyecto de tuka.org/xz a xz.tuka.org/xz-utils. El dominio principal tuka.org está alojado en Finlandia, en la dirección IP 5.44.245.25, en la compañía de hosting Soner. Por otro lado, el subdominio xz está alojado directamente en GitHub Pages, lo que otorga un mayor control a Jia sobre el proyecto.

Entre el 23 de febrero y el 28 de marzo, son agregados los últimos cambios para completar el backdoor. El 29 de marzo de 2024, se envió un correo electrónico a openwall-oss-security, un portal que ofrece información sobre recursos de ciberseguridad de código abierto, explicando que se había descubierto un backdoor en el repositorio de xz. El correo electrónico fue enviado por Andres Freint.

En una publicación en la red social Mastodon, una red social descentralizada, nos relata que mientras realizaba micro benchmarks para intentar reducir el ruido en su sistema, notó un proceso llamado liblzma, parte de la librería xz, estaba utilizando más recursos del procesador de lo habitual, lo que lo llevó a descubrir el backdoor.

Instalado el 25 de marzo de 2024, se abre una solicitud por Hans Jensen para incluir la versión de xz-utils vulnerable para la distribución de Linux Debian. Esta solicitud fue abierta la misma semana en que se creó la cuenta de GitHub de Hans, quien también generó otras solicitudes de actualización en repositorios más pequeños para aumentar su credibilidad. Además, otras cuentas sospechosas con un formato similar de correo electrónico, compuesto por un nombre más un número y con muy poca actividad previa, comenzaron a respaldar la solicitud para su inclusión en el repositorio.

Un empleado de 1Password abrió un Pull Request solicitando la actualización de la librería xz en la versión vulnerable. Sin embargo, explicó que fue un malentendido, ya que en realidad estaba actualizando la librería por motivos de optimización. Poco después, cerró el Pull Request para evitar malentendidos hasta que se resolviera el problema del backdoor.

Un colaborador de la distribución de Linux Fedora testifica que jatan estaba presionando por incluir la versión vulnerable de xz, argumentando que contenía grandes mejoras. Jatan también intentó agregar el backdoor en .NET unos días antes del congelamiento de la versión beta. Poco después, la cuenta de Jiaqiang fue suspendida y también se suspendió el repositorio, lo que causó descontento entre la comunidad, ya que no podían auditar los cambios sin recurrir a repositorios espejo. La cuenta de GitHub de lz-colin también fue suspendida debido a esto. Posteriormente, la cuenta de colin fue reactivada y comenzó a revertir los cambios realizados por Jia, incluyendo aquellos que agregaban el [Música] backdoor.

Hasta la fecha, han surgido diversas hipótesis sobre la verdadera identidad del usuario jatan. Dado el extremo nivel de sofisticación del ataque, algunos sospechan que podría tratarse de un grupo de hackers respaldado por un estado o nación, como China, Rusia o Corea del Norte. Un descubrimiento reciente reveló que al revisar la historia de contribuciones, el nombre registrado de Jia era Jia Cheonan. Sin embargo, al analizar las direcciones IP asociadas, se encontró que pertenecían a una VPN en particular, a Ptopia VPN, lo que dificulta determinar su ubicación. Además, los horarios de las contribuciones no coinciden con la zona horaria de China, ya que varios commits fueron realizados durante días festivos.

Las últimas conclusiones de varios investigadores sugieren que es probable que jatan ni siquiera sea una persona real, sino un personaje ficticio creado con el único propósito de ganarse la confianza de la comunidad y llevar a cabo uno de los mayores ataques informáticos de la historia.

Muchas gracias por ver el video. La verdad es que este video costó muchísimo trabajo de realizar. De verdad te agradecería mucho que me apoyaras suscribiéndote, con un me gusta o con un comentario. Nuevamente, muchas gracias y espero poder verte en el próximo video.