En 1786 el filósofo escocés Thomas Reid publicó sus "Ensayos sobre los poderes activos de la mente humana". En él apareció por primera vez la frase: "una cadena es tan fuerte como su eslabón más débil". Y estos días el mundo de la ciberseguridad, que entiende muy bien su sentido, se ha visto sacudido por un eslabón especialmente débil. Uno que podría haber puesto en jaque a millones de ordenadores y servidores durante los dos últimos años.
Xz Utils. Así se llama el componente Open Source que se ha convertido en protagonista del panorama de ciberseguridad en los últimos días. Un desarrollador llamado Andres Freund descubrió código malicioso en versiones beta de distribuciones Linux como Red Hat o Debian muy populares en servidores, aunque al parecer dichas versiones no se usan en entornos de producción (es decir, aquellas a los que accedemos los usuarios). Tanto la una como la otra publicaron comunicados alertando del peligro. Como indican en Ars Technica, Will Dormann, de la firma de seguridad Analygence, asegura que gracias a eso el problema "no está afectando a nedia en el mundo real, pero solo porque se descubrió pronto debido a la dejadez de los malos actores. Si no se hubiera descubierto, habría sido catastrófico para el mundo".
Puerta trasera. Como explicaba el desarrollador Sam James, la vulnerabilidad se comporta como una puerta trasera que mostró ciertas señaes por primera vez en una actualización del pasado 23 de febrero que añadió código ofuscado. En una nueva actualización al día siguiente el script de instalación era malicioso y se inyectaba a sí mismo en funciones usadas en sshd, el binario que permite utilizar la conocida herramienta ssh de conexión segura (con ese componente ya no) a máquinas remotas. Los cambios fueron publicaods por JiaT75, uno de los dos desarrolladores del proyecto xz Utils, que llevaba años contribuyendo al desarrollo. Su primer 'commit' al proyecto data de noviembre de 2021, de hecho.
¿Quién es JiaT75? Eso ha hecho que aparezcan preocupantes teorías sobre la identidad real de JiaT75, y se especula con la posibilidad de que no sea un hacker aislado, sino un grupo de hackers apoyados por algún gobierno que durante mucho tiempo han ido construyendo un perfil que aparentemente era el de un desarrollador Open Source que ayudaba en este proyecto de forma desinteresada y beneficiosa, y que tras lograr convertirse en mantenedor del proyecto usó ese control para crear una versión maliciosa con la que infiltrarse luego en millones de sistemas de forma sencilla gracias a la puerta trasera creada en xz.
La soledad del programador Open Source. Todo empezó con una situación muy común entre los proyectos Open Source. Aunque la filosofía del software libre y el código abierto transmite que todo el mundo puede colaborar en los proyectos para mejorarlos, la realidad es que a menudo muchos de ellos están gestionados y mantenidos por una sola persona. Es la soledad del programador Open Source. Ese fue el caso de XZ para Java, la versión en este lenguaje de estas herramientas de compresión muy extendidas en sistemas Linux, en los que es un componente habitual. El repositorio está ahora deshabilitado.
¿Hay alguien ahí? En mayo de 2022 alguien preguntaba en un foro si alguien seguía a cargo del proyecto. Contestaba al respecto Lasse Collin, que en ese momento era el responsable, y confesaba que "sí, al menos por definición, como si alguien informa de un fallo que será corregido". Luego continuaba explicando que "el desarrollo de nuevas características desde luego no es muy activo", y de repente, en ese mensaje, Collin hablaba de una persona que últimamente se había implicado en el desarrollo y le había ofrecido ayuda. Un tal Jia Tan, del que decía que "podría tener un mayor protagonismo en el futuro, al menos con las XZ Utils".
Jia toma el control. Un tercer actor en esa discusión, llamado "Jigar Kumar", no para de presionar a Collins, instándole a ceder el testigo. No se sabe si el Kumar era un cómplice de este esfuerzo por lograr que Jia Tan consiguiese el control de ese paquete, pero el resultado acabó siendo precisamente ese. Collins además confesó tener problemas mentales y le recordó a todos que "es bueno tener en mente que este es un proyecto por el que no cobro y que hago por afición". Como decimos, Jia acabó tomando control del proyecto y recientemente introdujo esos cambios maliciosos que afortunadamente fueron detectados antes de amenazar millones de sistemas.
500 milisegundos. Lo sorprendente es también cómo se detectó la vulnerabilidad. Andres Freund, ingeniero y desarrollador de Microsoft que trbaaja en la versión de PostgreSQL para su empresa, estaba intentando detectar qué pasaba con un sistema con Debian en el que estaba trabajando con SSH. Por alguna razón el proceso SSH estaba consumiendo demasiados recursos. Notó que la conexión con ssh tardaba 500 milisegundos más en realizarse de lo que lo debería hacerlo, y tras analizar el problema descubrió que el problema estaba en las últimas actualizaciones que se habían hecho en el paquete xz Utils. Acabó publicando sus conclusiones y aquello permitió que los responsables de Red Hat o Debian comprobasen lo peligroso que habría sido incluir dicho componente en las versiones de producción de sus distribuciones.
El Open Source es prodigioso, pero también puede ser terrible. Sucesos como este demuestran las luces y sombras del Open Source. Por un lado, estos desarrollos ofrecen su código fuente y cualquiera puede contribuir. Incluidos, por supuesto, actores maliciosos que acaben aprovechándolos para infiltrarse en todo tipo de sistemas o intentarlo, como hemos visto. Eso es terrible, pero justamente la propia filosofía Open Source tiene su contrapunto: esos proyectos, incluyan código malicioso o no, siguen estando disponibles para que cualquiera los analice, y eso fue precisamente lo que permitió que la vulnerabilidad fuera descubierta. En este caso, eso sí, hubo suerte y sobre todo fue crucial el descubrimiento de Freund, que casi por casualidad se dedicó a analizar qué estaba pasando.
Imagen | Datarhys con Midjourney