Sabotaje en un proyecto de código abierto
Un incidente realmente sorprendente que ha sucedido en los últimos días ha puesto de manifiesto lo vulnerable que puede ser la cadena de suministro de SW/HW y el poco apoyo que tienen algunos proyectos abiertos (pese a su importancia). Y es que Marak Squires, un programador y encargado de mantener un proyecto de código abierto, saboteó su propio repositorio en forma de protesta por trabajo no remunerado y por los intentos fallidos de monetizar los paquetes faker.js y color.js de NPM que se emplean en gran variedad de proyectos, y estos a su vez son interdependientes de otros ecosistemas o recursos.
Este incidente pone en evidencia un problema grave que sigue sin resolverse para la cadena de suministro de software, y es que no se puede controlar al 100% el código que terminará en computadoras de todo el mundo. Pero esto no es un problema del código abierto, en el software propietario el control es aún menor, y la posibilidad de corregirlo si se ha hecho de forma intencionada por el desarrollador es nula.
Como sabes, NPM no es cosa menor, se trata del administrador de paquetes de Node.js, es el registro de software más grande del mundo, con cientos de miles de paquetes. Es de uso gratuito y con él se pueden descargar toneladas de escripts y bibliotecas de terceros.
En el caso de los paquetes afectados, colors.js es un paquete que cuenta con millones de descargas, usado por desarrolladores de JavaScript y Node.js para obtener colores y estilos personalizados en la consola. En GitHub hay 4.3 millones de proyectos que lo usan. En este caso, se introdujo un código malicioso que producía un bucle infinito.
Por otro lado, faker.js es otro paquete usado por unos 168.000 proyectos. En él puso un mensaje: endgame (fin del juego). Por otro lado, también se borró la página, aunque una solución fue recuperarlos de archive.org.
Esto, que puede parecer una broma pesada a primera vista, tuvo consecuencias para los proyectos dependientes. Además, Squires no es el único que mantiene este repo, pero bloqueó el acceso a otros mantenedores para asegurarse de que nadie pudiera corregir su acción.
GitHub y NPM reaccionaron rápidamente, eliminando los paquetes y suspendiendo temporalmente la cuenta del autor, pero el daño ya estaba hecho.El desarrollador causante del sabotaje de este código abierto publicó en su blog personal que lo había hecho porque ninguna empresa había apoyado financieramente a color.js y faker.js. Los planes de suscripción mensuales que inició no funcionaron, y solo recibió unas cuantas donaciones a través de patrocinios de GitHub y de algunos compañeros. Una situación difícil que terminó con un problema para muchos.
Todo esto produjo un debate en Twitter con detractores y simpatizantes del código abierto. Muchos también temen que los mantenedores de código abierto lo tomen de ejemplo y hagan lo mismo con otros proyectos si las organizaciones privadas que se aprovechan del código no ayudan económicamente.