¿Cómo fue posible que Debian pasara por alto el backdoor en XZ? Un breve análisis del caso
En días anteriores compartimos aquí en el blog la noticia sobre el caso del backdoor que fue detectado en la utilidad XZ, la cual es utilizada en una gran cantidad de distribuciones de Linux y que por ende afecta a todas estas. Lo interesante del caso para muchos y entre los cuales me incluyo, es el cómo se fue preparando la inclusión del backdoor y el cómo género, o se fueron dando las circunstancias para favorecer la introduccion del código y fuera pasado por alto.
En la publicación de blog de Evan Boehs (un programado y hacker), compartió un pequeño análisis cronológico del caso del backdoor en XZ. En la publicacion menciona que el desarrollador Jia Tan fue el responsable de introducir el backdoor en el paquete xz, ya que Jia Tan obtuvo el estatus de mantenedor en 2022 y comenzó a lanzar versiones desde la 5.4.2 del proyecto xz. Además de trabajar en xz, Jia Tan también contribuyó a los paquetes xz-java y xz-embedded, y fue reconocido como mantenedor del proyecto XZ Embedded utilizado en el kernel de Linux.
Además de Jia Tan, se mencionó la participación de dos usuarios más, Jigar Kumar y Hans Jansen, quienes muchos suponen que aparentemente podrían ser personajes virtuales. Jigar Kumar estuvo involucrado en la promoción de los primeros parches de Jia Tan en xz presionando al entonces mantenedor Lasse Collin para que aceptara cambios útiles e implementar el soporte para filtros de cadena en abril de 2022.
En junio de 2022, Lasse Collin cedió el rol de mantenedor a Jia Tan, reconociendo el agotamiento y los problemas de salud mental. Después de estos eventos, Jigar Kumar ya no apareció en la lista de correo del proyecto.
Con el nuevo estatus de mantenedor, Jia Tan comenzó a realizar activamente cambios en el proyecto xz y, según las estadísticas, ocupó el segundo lugar entre los desarrolladores en términos de número de cambios durante dos años.
En marzo de 2023, Lasse Collin reemplazó a la persona responsable de probar el paquete xz en el servicio oss-fuzz por Jia Tan, y en junio se implementaron cambios en la composición de xz, incluyendo el soporte para el mecanismo IFUNC en liblzma, que luego se utilizó para organizar la interceptación de funciones en el backdoor. La sugerencia para este cambio provino de Hans Jansen, cuya cuenta se creó justo antes de enviar la solicitud de extracción relacionada con estos cambios.
En julio de 2023, Jia Tan solicitó a los desarrolladores de oss-fuzz deshabilitar la verificación ifunc debido a su incompatibilidad con el modo «-fsanitize=address». En febrero de 2024, se modificó el enlace al sitio web del proyecto xz en oss-fuzz y tukaani.org, trasladándose de «tukaani.org/xz/» a «xz.tukaani.org». Este último subdominio estaba alojado en GitHub Pages y era controlado personalmente por Jia Tan.
El 23 de febrero, se publicaron en el repositorio xz archivos para probar el decodificador, incluyendo archivos con un backdoor y las macros M4 para activar el backdoor se incluyeron solo en el tarball de la versión 5.6.0 y se excluyeron del repositorio de Git, pero aparecieron en el archivo .gitignore.
El 17 de marzo, Hans Jansen, previamente involucrado en parches con soporte IFUNC, se registró como colaborador en el proyecto Debian. El 25 de marzo, recibió una solicitud para actualizar la versión del paquete xz-utils en el repositorio de Debian. Cabe mencionar que llegaron solicitudes similares, de desarrolladores de Fedora y Ubuntu (aunque en Ubuntu, el cambio fue rechazado debido a la congelación del repositorio).
Varios usuarios se unieron a las solicitudes de actualización de xz, argumentando que la nueva versión solucionaba errores detectados durante la depuración en valgrind. Estos problemas surgieron debido a una determinación incorrecta del diseño de la pila en el controlador del backdoor, intentando resolverlos en la versión xz 5.6.1.
Sobre esto, Lasse Collin, emitió una declaración confirmando que los archivos que contienen las versiones del backdoor fueron creados y firmados por Jia Tan. Además, anunció la eliminación del subdominio xz.tukaani.org, indicando que el sitio xz volverá al servidor principal tukaani.org. También mencionó que su cuenta de GitHub fue bloqueada. Es importante destacar que Lasse Collin tiene control únicamente sobre el sitio web tukaani.org y los repositorios git.tukaani.org. Por otro lado, Jia Tan solo controlaba el proyecto en GitHub y el host xz.tukaani.org, pero no tenía acceso al servidor tukaani.org.
Si estas interesado en conocer más al respecto, puedes consultar los detalles en el siguiente enlace.