Si bien Windows es el sistema operativo dominante en España y en el resto del mundo, el sistema de código abierto que impera es Linux. Sus numerosos sistemas e instancias son ampliamente usados por organizaciones, ámbitos empresariales y por un buen nicho de usuarios. Un único voluntario evitó que millones de equipos con Linux quedasen expuestos a un ciberataque masivo.
Así lo revela The Verge, relatando cómo Andrés Freud, desarrollador de Microsoft se dio cuenta de cómo los sistemas Linux de todo el mundo podrían haberse visto gravemente comprometidos, debido a una "backdoor", o puerta trasera, ingeniosamente aplicada para que fuera difícilmente descubierta.
Para que entendamos la importancia del suceso, hay que aclarar que de haberse producido este ataque con éxito, la mayoría de los equipos tanto personales como profesionales que usasen las utilidades afectadas serían vulnerables, sin que siquiera sus usuarios se dieran cuenta. Una historia que recuerda lo frágil que en ocasiones puede ser el mundo del software, especialmente en estos tiempos.
Un voluntario evita un desastre informático
Andrés Freund, originario de Alemania, es actualmente desarrollador en Microsoft. Además de su empleo en la compañía de Redmond, Freund es voluntario en la base de datos de Linux PostgreSQL, siendo uno de sus desarrolladores. La historia comienza el pasado 29 de marzo, por la mañana.
Freund posteaba en Mastodon lo siguiente: "He descubierto un problema de seguridad de forma accidental mientras evaluaba cambios en Postgres. Si ejecuta Debian 'testing', 'unstable' o alguna distribución más de "última generación", le recomiendo encarecidamente que actualice lo antes posible". Además, el desarrollador envió un correo a la lista de corre de seguridad de OpenWall avisando de esta puerta trasera.
La clave estaba en XZ Utils, un conjunto de herramientas usadas para comprimir y descomprimir datos en sistemas Linux y similares a Unix. Dicha suite de herramientas es increíblemente popular en Linux, hasta el punto de que se usa en prácticamente todas las distribuciones —o distros— del sistema de código abierto. Se usa para comprimir archivos tar, paquetes de software, y un largo etcétera. La puerta trasera se había insertado en una de sus últimas versiones en forma de código malicioso.
La idea es que esta puerta trasera servía como vía para acceder a los sistemas afectados por esta vulnerabilidad. Estaba integrada de tal forma que podía pasar desapercibida por los análisis convencionales. Tanto es así que tal y como asegura Sam James, también desarrollador, esta backdoor solo se activa cuando se cumplen una serie de criterios muy concretos.
Freund descubrió que en las versiones 5.6.0 y 5.6.1 de XZ Utils se introdujo código malicioso, permitiendo de forma potencial acceso remoto y no autorizado a través de SSH. La 'carga' maliciosa se ejecutaba en el mismo proceso que el servidor SSHD, modificando las rutinas de descifrado en el mismo.
De esta forma y mediante claves privadas específicas, la backdoor permitía a un atacante enviar payloads arbitrarias maliciosas a través de SSH. Estas se ejecutaban antes de que se realizara la comprobación de autenticación pertinente, consiguiendo que el equipo afectado por la vulnerabilidad quedase a merced del atacante, según recoge el Instituto Nacional de Ciberseguridad (INCIBE).
¿Cómo la descubrió? Realizando pruebas, el desarrollador notó algunas cosas raras en un sistema Debian, en el que estaba trabajando con SSH. Los inicios de sesión, que estaban cifrados en liblzma, una parte de la biblioteca de compresión XZ, consumían una importantísima cantidad de CPU, algo inusual. Lo siguiente que hizo fue usar una serie de herramientas de interpretación que no revelaron nada en ese momento. Afortunadamente y según cuenta el propio desarrollador, sospechó de la situación.
"Recordé que había visto una extraña queja de Valgrind —un conjunto de herramientas de Linux para depurar problemas de memoria y rendimiento— en las pruebas automatizadas de Postgres, unas semanas antes, después de las actualizaciones de paquetes", cuenta Freund. Esto le llevó a descubrir que el problema estaba en las actualizaciones del paquete XZ Utils. "El repositorio xz ascendente y los archivos tar xz tienen una puerta trasera", escribió en el correo.
Una vez dado el aviso, la compañía open source Red Hat envió una alerta de seguridad para los usuarios de Fedora Linux 40 y Fedora Rawhide, una versión de desarrollo de la distribución de Linux Fedora, advirtiendo de la backdoor. Determinaron que al menos la versión beta de Fedora Linux 40 tenía dos versiones afectadas de las bibliotecas xz, y que Rawhide recibió probablemente las versiones 5.6.0 y 5.6.1 de XZ Utils.
Esto llegó al punto de que una versión beta de Debian, la versión totalmente libre y desarrollada por voluntarios de Linux, contenía dicha backdoor. Afortunadamente, eliminaron el código poco después de la alerta; se cree que las versiones estables actuales de Debian no contienen los paquetes maliciosos.
¿Quién fue?
Las averiguaciones del desarrollador de Microsoft dieron con el usuario JiaT75 o Jia Tan, uno de los dos desarrolladores principales de XZ Utils. Tan había trabajado con el desarrollador Lasse Collin, responsable del formato de archivo .xz, y desde al menos octubre 2021 había estado enviando parches no problemáticos a la lista de correo de XZ. Es decir, llevaba años contribuyendo al desarrollo de XZ Utils.
[Alerta de seguridad en estos populares routers: un grave fallo permite a los hackers controlarlos
Aparentemente, habría sido Jia Tan el que habría introducido de manera deliberada dicha backdoor. Algo extraño, ya que Tan había sido mantenedor del proyecto durante varios años. La teoría principal que manejan tanto Freund como otras entidades es que este desarrollador no sea siquiera una única persona, sino que sea un grupo de hackers camuflado.
Según relata el portal Akamai, se especula con la idea de que Jia Tan no sea más que una tapadera, que habría recurrido a ciertas argucias para hacerse con una posición de poder y confianza en el proyecto y así implementar la backdoor. Y es que Tan habría abierto numerosas solicitudes de correcciones de errores y mejoras, mediante cuentas falsas. Posteriormente, recibió permisos para gestionar el repositorio.
Se cree que Tan habría usado cuentas falsas para enviar quejas sobre errores y funciones del repositorio y así presionar a Lasse Collin para que añadiera a Tan como comantenedor, dándole finalmente derechos de administrador. Con esta posición, Tan —o al menos, los hackers detrás de su cuenta— habrían intentado infiltrarse en los millones de sistemas que habrían sido afectados por este suceso.
Lejos de todo esto, el suceso ha puesto de manifiesto el problema intrínseco del código abierto y la ciberseguridad. La dependencia de actores voluntarios que no están remunerados puede provocar auténticos problemas, sobre todo si se usan técnicas de ingeniería social como las que habría usado supuestamente el grupo de hackers de Jia Tan.
Un desarrollador del paquete de medios FFmpeg se lamenta de esto. "La lección del fiasco de xz es que las inversiones en mantenimiento y sostenibilidad no son atractivas, y probablemente no le darán un ascenso a un gerente intermedio, pero se amortizarán mil veces a lo largo de muchos años", dice en un post en X.
Andrés aclara posteriormente que todo se debió a un cúmulo de casualidades. Por ejemplo, si no hubiese sido por aquella queja de Valgrind, no habría detectado la vulnerabilidad. "Elegí usar Debian Unstable para encontrar posibles problemas de portabilidad antes. Sin eso Valgrind no habría tenido nada de qué quejarse", relata.