Hoy hablaré de un tema que lleva un tiempo tocandome la moral, y lo que ha pasado con xz y el exploit solo ha hecho que reforzar mi opinión.
Índice
1 - Qué es open source?
Vamos a empezar por qué es open source; Por definición Open source o código abierto es código que tiene el código fuente disponible para cualquier persona que lo quiera inspeccionar, modificar o incluso cambiar.
No voy a entrar mucho más en detalle, porque tener una comunidad de código abierto como la que tenemos actualmente es muy bueno para el desarrollo, pero se puede resumir a que tenemos más ojos para ver cualquier código lo que implica que hay más ojos para detectar errores o controlar lo que pasa.
Como nota final, decir que la gran mayoría de este código libre, no solo es libre sino gratuito, y es aquí donde viene el principal problema.
2 - El caso Moq
Hace unos meses (agosto 2023) la famosa librería Moq de C# la cual utilizamos para crear dobles en nuestros test de C# hizo un cambio que no gustó a la comunidad.
El cambio era tan simple como añadir una dependencia a otra librería llamada SponsorLink, y si bien yo pienso que no fue la mejor forma de comunicarlo (porque no fue comunicado), no estoy completamente en contra de lo que hizo. Ese cambio lo que hacía era coger el email del usuario de git, hacerle un hash y enviarlo a la api de Sponsorlink, con el único objetivo de que tuvieras un mensajito que te dijera gracias por apoyar el proyecto o por favor apoya el proyecto si no lo hacías ya.
El cambio fue minúsculo y el drama que se montó fue apoteósico. Como digo yo no concuerdo en las formas pero si en el objetivo final. Intentar ganar algo de dinero con un software que es utilizado por cientos sino miles de empresas, las cuales generan cientos de miles de millones de euros en beneficios.
Al final se cambió cómo funciona SponsorLink y solo envía el email si así está configurado en el propio repo.
Nota: yo sigo utilizando moq.
3 - El caso xz
El caso xz es mucho más reciente (Marzo/Abril 2024) y técnicamente no tienen nada que ver, pero el motivo por el que pasó es lo mismo que el motivo por el que el cambio de moq sucedió.
Podemos resumir el caso de xz en que un actor malicioso (un hacker) incluyó una backdoor o puerta trasera en el código de la famosa librería de linux de ssh. Para que veáis el alcance del problema, la librería xz es utilizada por distribuciones como fedora, debian, opensuse, kali linux, arch además de todos aquellos que se han instalado dicha librería de forma manual.
No voy a entrar en muchos detalles técnicos sobre lo que ha pasado, pero recomiendo a todo el mundo que se documente sobre el tema, pues técnicamente es super interesante.
Aquí tienes un artículo sobre el tema .
El motivo por el que está backdoor paso a “producción” es porque estaba muy ofuscado, lo que hace que dicho código no se pueda ver a simple vista, y las personas que mantienen xz son personas normales como tú y como yo que lo hacen en su tiempo libre.
Hemos tenido suerte de que este hack no ha llegado a estar instalado por defecto en las grandes distribuciones de Linux, ya que fue encontrado en una versión preview de Debian, por un desarrollador de Microsoft mientras trabajaba en el rendimiento de otra aplicación.
No se sabe quien és el hacker, pero solo podemos decir que el motivo por el que dicho software pasó a producción es debido a que los desarrolladores de xz tienen un trabajo normal, unas labores normales y su tiempo libre lo dedican a dicha librería para uso y disfrute de todo el mundo. Este hacker llevaba años trabajando con ellos y se había ganado la confianza del grupo, lo que le permitió instalar la backdoor.
4 - Sostenibilidad del código abierto
Si os fijáis ambos problemas o escenarios viene por el mismo motivo, los desarrolladores tienen un trabajo de 8 horas como la gran mayoría de personas y en su tiempo libre y de forma desinteresada.
En el primer caso (moq) era para ganar algo de dinero y en el segundo es porque los desarrolladores están muy estresados y no dan para todo.
Los casos expuestos en este blog, son dos casos de miles que tenemos similares en el mundo del Open Source.
Mi opinión es que el Open source de forma gratuita es completamente insostenible. Yo lo vivo en mis carnes cuando todas las semanas tengo gente pidiéndome que haga X o Y porque en su empresa lo quieren implementar y no saben cómo. Cuando les comento que está bien, que lo hago, pero que les voy a cobrar las horas me dicen que no y así con todo. En el mundo del Open source tenemos voluntarios que crean software el cual es utilizado por grandes empresas para enriquecerse y no solo no dan las gracias, sino que meten presión.
Estos dias tambien ha salido el autor de FFmpeg el cual es utilizado por microsoft teams diciendo que microsoft le metió presión para arreglar un cambio o mirar cierta funcionalidad porque teams se había roto debido a ello.
Si bien es cierto que no es para tanto, la persona de Microsoft es educada en como pide las cosas. Hay una parte que chirría, y es que esta persona menciona que este bug es de prioridad máxima para el equipo de teams.
Vamos a ver, si es prioridad máxima, pon a alguien a leer el código y arreglar dicho problema o paga al autor un sueldo mensual para que trabaje en como ellos mismos indican una funcionalidad clave dentro de Teams.
NOTA: Además Microsoft tiene la .NET Foundation donde se da soporte a las librerías populares de .NET.
Y en mi opinión este es el problema principal. Hacer open source no es sostenible.
Empresas que facturan millones de euros dependen y exigen contenido a personas individuales que trabajan por amor al arte, y eso no puede ser.
Si eres una de estas empresas y no te gusta lo que hay, puedes coger y hacerlo tú mismo, pero no, mejor quejarse o montar la de díos. El caso de moq fue bochornoso por parte de la comunidad en ese aspecto.
4.1 - Cambio de licencias
Desde mi punto de vista solo hay una opción para solucionar este problema. Y es cambiar las licencias. No me malinterpretes, la solución ideal sería que las empresas donaran dinero a los desarrolladores del código que utilizan, y algunas lo hacen, pero son la excepción.
Luego tenemos el caso de empresas que ofrecen el código abierto y luego ofrecen soporte o venden productos relacionados, pero esto no funciona para todos los casos, y para quienes lo hacen suele ser como un ingreso secundario, no el principal.
Yo suelo ser más drástico en las opiniones, y voy directo a lo que opino, todo creador de código libre que tenga una librería popular, debería cambiar la licencia.
Algo sencillo, algo que obligue a toda aquella organización a pagar por una licencia una vez ganen más de X dinero. Incluso ponerlo por tramos.
Ni el autor de moq, ni yo, ni nadie quiere trabajar gratis, y esperar que estudiantes o desarrolladores profesionales, paguen tu sueldo no es realista, pero las empresas que facturan, por ejemplo, más de 1 millón de euros pueden apoyar con 1000 o 2000€; Sí, por cada librería de código abierto que usan. ¿Cuánto les costaría el tiempo de desarrollo de una librería similar? Y mantenerla? Pues eso.
Que sí, que habrá empresas que se salten la licencia y punto, pero no deja de ser ilegal y la gran mayoría de las empresas grandes tienen mucho cuidado con el tema licencias.