El software libre desempeña ahora un papel fundamental en todo el mundo informático... y, por tanto, en todo el mundo en general. La cuestión de cómo se mantiene ese software se ha ido convirtiendo poco a poco en motivo de preocupación, lo que ha llevado al Congreso de Estados Unidos a presentar un proyecto de ley en 2023: la "Ley para proteger el software de código abierto". El viaje del código abierto, de una impresora informática al Congreso de EE.UU., pasando por el compromiso de la biblioteca XZ: nos adentramos en una historia fascinante.
El tono de la "Ley para proteger el software de código abierto" se establece en sus primeras líneas: "El software de código abierto fomenta el desarrollo tecnológico y forma parte integral de la ciberseguridad general"; "un ecosistema de software de código abierto seguro, sano, dinámico y resiliente es crucial para garantizar la seguridad nacional y la vitalidad económica de Estados Unidos"; "el software de código abierto forma parte de los cimientos de la infraestructura digital que promueve una Internet libre y abierta". "Sin ese software 'libre', Internet tal y como la conocemos hoy no existiría, y nunca habría existido", afirma el responsable técnico de Stormshield, Yvan Vanhullebus. Pero la cuestión de la permutabilidad de los términos "software libre" y "software de código abierto" es siempre polémica.
Sin ese software 'libre', Internet tal y como la conocemos hoy no existiría, y nunca habría existido
Yvan Vanhullebus, Technical Leader Stormshield
Los orígenes del código abierto
El primer término que se adoptó fue "software libre". Este concepto nació en Estados Unidos en los años 80, bajo el impulso de Richard Stallman. Impulsado en un principio por el simple deseo de poder imprimir un documento, este ferviente defensor de la cultura "hacker" ha pasado a la historia como opositor a la privatización del software y a la aparición de una legislación cada vez más restrictiva para los usuarios. Por ejemplo, en 1980 se aprobó la "Ley de derechos de autor de programas informáticos".
Esto es lo que impulsó a Richard Stallman a crear en 1985 la Free Software Foundation (Fundación del software libre), una organización sin ánimo de lucro que establece los cuatro fundamentos del software libre: la libertad de ejecutar el programa como se desee, para cualquier propósito; la libertad de estudiar cómo funciona el programa, y modificarlo para que haga los procesos de computación como se desee; la libertad de redistribuir copias; y la libertad de distribuir copias de sus versiones modificadas a otros, dando a toda la comunidad la oportunidad de beneficiarse de sus cambios. Ante las posibles interpretaciones del término "libre", el mismo Richard Stallman respondía en su biografía autorizada "No pienses en 'libre' como en 'cerveza gratis'; piensa en 'libre' como en 'libertad de expresión'. En otras palabras, hablamos de libertad, no de regalos gratuitos. Pero esta aproximación ética al concepto dista mucho de ser unánimemente aceptada en la comunidad. Para acabar con esta ambigüedad lingüística, la científica estadounidense Christine Peterson, entonces directora ejecutiva del Foresight Institute, inventó el término "código abierto" en 1998. Peterson cuenta la historia de este cambio léxico de importancia crítica en un relato largo y fascinante. Junto a nombres como Eric Raymond y Bruce Perens, participó en la creación de la Iniciativa de Código Abierto (OSI) ese mismo año. Esta abandonó la terminología original de "software libre" en favor de "software de código abierto".
No pienses en 'libre' como en 'cerveza gratis'; piensa en 'libre' como en 'libertad de expresión
Richard Stallman, programador y activista del software libre
¿Cuáles son las diferencias entre software "libre" y "de código abierto"? En términos de definiciones, el software "libre" se refiere a la posibilidad de utilizarlo, estudiarlo, modificarlo o duplicarlo, mientras que el término software de "código abierto" se refiere a una filosofía de desarrollo según la cual se reutiliza todo o parte del código fuente. Los proyectos de código abierto suelen estar supervisados por uno o varios encargados de mantenerlo, pero fomentan las contribuciones externas, como la adición de nuevas funciones, los comentarios sobre errores (y su corrección) y las mejoras de seguridad. En otras palabras, el código abierto es un movimiento colaborativo de desarrollo de software.
Código abierto: un cambio hacia la colaboración en comunidad
Para garantizar que el software siga siendo abierto y libre, era necesario definir un marco jurídico. Esto llevó a la creación de varias licencias de usuario diferentes. La más conocida es la GNU GPL (General Public License), cuya primera versión se creó en 1989 bajo el impulso de las cuatro fundaciones creadas por Richard Stallman para especificar el marco legal de la distribución de software libre para el proyecto GNU. Después vendrían otras licencias, como Apache 2.0, MIT, BSD y Creative Commons, cada una de las cuales incorporaba sus propios niveles de permiso y reutilización del código.
El desarrollo de estas licencias permitiría la aparición de numerosos proyectos, como el lanzamiento del núcleo de Linux en 1991 o la licencia de código abierto para Netscape Navigator en 1998 (que sirvió de base para crear la suite Mozilla). En 2001, Wikipedia se convirtió en uno de los proyectos insignia del movimiento de código abierto, con el objetivo de utilizar la inteligencia colectiva para crear la mayor fuente de conocimiento en Internet. El posterior lanzamiento de Android por Google en 2008, y la creación de GitHub ese mismo año, dan fe de la creciente integración del código abierto en las tecnologías de consumo y en las infraestructuras de desarrollo de software. La culminación de esta adopción, al menos superficial, llegaría en 2014 en un discurso de Satya Nadella, CEO de Microsoft, que incluía la declaración "Microsoft ama Linux". En la comunidad del código abierto, sin embargo, muchos recuerdan las palabras de su predecesor Steve Ballmer describiendo Linux como "un cáncer que se adhiere en un sentido de propiedad intelectual a todo lo que toca".
Desde el punto de vista de negocio, el código abierto encarna un modelo específico. Si un proyecto es de código abierto, es posible crear variantes que existen fuera del control de la empresa; el modelo económico gira principalmente en torno a los servicios o el mantenimiento (todo menos las licencias). Esto hace que a las empresas les merezca la pena económicamente adoptar “Bricks” o aplicaciones de código abierto, siempre que conozcan bien las limitaciones de cada licencia.
Como señala David Gueluy, director de I+D y asesor técnico de Stormshield: "La licencia GPL es famosa por exigir la redistribución de cualquier cambio realizado en el código fuente. Esta obligación ha creado situaciones legales complejas para algunos desarrolladores, ante la exigencia de que publiquen todo su código fuente – incluso en casos en los que sólo se ha integrado un fragmento muy pequeño de código GPL en un programa muy grande".
En cambio, licencias como BSD, MIT y Apache ofrecen más flexibilidad, pues permiten a las empresas modificar y utilizar el código sin tener que compartir los cambios. Esto hace que resulte atractivo para las empresas utilizar y desarrollar proyectos de código abierto, como confirman las estadísticas de Microsoft, que revelan que el 60% de las imágenes alojadas en la nube Azure se basan en el núcleo Linux o en software libre. "Siempre sonrío cuando leo otro informe en el que se dice que el código abierto se utiliza cada vez más o que está adquiriendo un papel destacado en tal o cual ámbito", afirma Vanhullebus. "¿Se trata realmente de una tendencia actual, o es algo de lo que sólo empezamos a darnos cuenta ahora?”. Al fin y al cabo, la adopción del código abierto es un fenómeno que se está extendiendo en todos los sectores, incluido el diseño y desarrollo de productos de ciberseguridad.
Siempre sonrío cuando leo otro informe en el que se dice que el código abierto se utiliza cada vez más o que está adquiriendo un papel destacado en tal o cual ámbito. ¿Se trata realmente de una tendencia actual, o es algo de lo que sólo empezamos a darnos cuenta ahora?
Yvan Vanhullebus, Technical Leader Stormshield
La importancia de abrir los ecosistemas de forma segura
Como todo, el código abierto tiene partidarios y detractores – y los detractores del código abierto debaten sobre varios temas. El primer debate, que se remonta a hace unos treinta años, era si el propio enfoque del código abierto podía funcionar. "Desde el principio, y en los primeros proyectos, pudimos responder a esa pregunta y zanjar el debate con bastante rapidez", afirma Vanhullebus. Esto dio lugar al segundo debate sobre si el uso de herramientas de código abierto debía reservarse exclusivamente a los frikis de pelo largo con gafas". Este segundo debate aún persiste en determinados entornos y sectores, pero se ha calmado claramente con el acercamiento entre el código abierto y la experiencia del usuario. Por último, el tercer debate está más específicamente relacionado con el propio mundo ciber: ¿puede ser fiable un producto de ciberseguridad que utilice componentes de código abierto? El temor es que un ciberdelincuente descubra un fallo y se lo quede con la intención de explotarlo, como en el caso de vulnerabilidades como Heartbleed en el proyecto OpenSSL, descubierta en 2012, o Log4J, descubierta en 2021. Otro argumento esgrimido por los detractores del código abierto se refiere a la posibilidad de que actores malintencionados contribuyan a un proyecto de código abierto, introduciendo debilidades que podrían parecer simples errores... En un informe de 2020, GitHub afirmaba que el 17% de los errores de software de la plataforma habían sido colocados intencionadamente en el código por actores maliciosos. El compromiso de la biblioteca XZ, el bloque de construcción básico utilizado en el entorno Linux, se sumó a estas estadísticas unos años más tarde. A finales de marzo de 2024, un empleado de Microsoft emitió una alerta a la comunidad de código abierto tras descubrir una anomalía en los paquetes XZ. Denominado desde entonces CVE-2024-3094, este ataque por fases combina técnicas de ingeniería social y una preparación a largo plazo (entre varios meses y varios años), para insertar gradual y discretamente una puerta trasera. Un posible ataque a gran escala a la cadena de suministro frustrado justo a tiempo...
Pero el código abierto también cuenta con partidarios, en su inmensa mayoría. Explican que el código abierto mejora la seguridad gracias a su transparencia y a la colaboración de la comunidad. La razón es que el acceso al código fuente facilita la detección de vulnerabilidades y, por tanto, su corrección lo antes posible, en comparación con un enfoque de "caja negra" en el que la visibilidad es limitada. Gueluy está de acuerdo: "Lo notable del aspecto de seguridad de los proyectos de código abierto es el concepto de que puedes ir y comprobar por ti mismo que no hay nada anormal en el código... ninguna puerta trasera, o al menos, si encuentras algo, tienes la capacidad de corregirlo tú mismo".
Lo notable del aspecto de seguridad de los proyectos de código abierto es el concepto de que puedes ir y comprobar por ti mismo que no hay nada anormal en el código... ninguna puerta trasera, o al menos, si encuentras algo, tienes la capacidad de corregirlo tú mismo.
David Gueluy, Director de I+D y asesor técnico Stormshield
Y así ocurrió con Heartbleed, Log4J y el compromiso XZ: la capacidad de reacción y la colaboración de la comunidad del software libre fueron decisivas para resolverlos. Vale la pena señalar que a pesar del ruido que rodea el compromiso XZ, es importante señalar que esto no es ni un fenómeno nuevo, ni uno específico del mundo del código abierto. A finales de 2020, el malware Sunburst se introdujo en la cadena de desarrollo de software Orion en SolarWinds. En total, más de 18.000 empresas e instituciones de todo el mundo se habrían visto afectadas por este ataque. Un episodio que ilustra claramente que incluso las soluciones que no son de código abierto siguen siendo susceptibles a las vulnerabilidades.
Este enfoque también cuenta con el apoyo de entidades públicas, como la ANSSI en Francia. La agencia francesa participa en numerosos proyectos de código abierto, tanto a través de las contribuciones de sus agentes como de la publicación de varias herramientas. Esta inversión "responde a una verdadera cuestión de seguridad y soberanía, la de proteger los bienes comunes e invertir en tecnologías y soluciones de futuro". Y al hacerlo, contribuye activamente al desarrollo de software libre como Linux, la distribución Debian y el motor Suricata. Al fin y al cabo, no faltan proyectos de ciberseguridad de código abierto. Gueluy cita Vault, "una solución producida por HashiCorp, una empresa basada en los principios del código abierto, que permite el almacenamiento seguro de secretos", KeePass (gestor de contraseñas), TheHive (plataforma de respuesta frente a Incidentes), Metasploit Framework (una herramienta de test de penetración) y MISP (una plataforma de intercambio de inteligencia sobre ciberamenazas), que muestran el impacto que ha tenido el código abierto en el desarrollo de soluciones robustas de ciberseguridad. Por ejemplo, OpenSSL, clasificado entre los 10 primeros por el índice de seguridad de código abierto, es uno de los principales proyectos de seguridad de las comunicaciones, y se utiliza tanto en productos comerciales como en soluciones de código abierto. "Las empresas se sienten atraídas por la oferta de OpenSSL de acceder a una criptobiblioteca ya probada y ampliamente validada por la comunidad, por lo que no necesitan empezar de cero", explica Gueluy. Y aquí llegamos al meollo del asunto: crear un nuevo producto (que no sea un producto de nicho) no basado en ninguna tecnología de código abierto sería totalmente inviable, ya que se necesitaría una inversión sustancial para (re)desarrollar los componentes existentes disponibles que han tardado años en construirse. Teniendo en cuenta este estado de cosas, es posible establecer un círculo virtuoso auditando escrupulosamente las versiones de los componentes de código abierto para descubrir posibles vulnerabilidades, publicando rápidamente parches cuando se descubran estas posibles vulnerabilidades y contribuyendo a los proyectos (parches, funcionalidades, financiación, etc.).
El código abierto, con su enfoque basado en la transparencia y la colaboración, está demostrando ser un motor de innovación en el ámbito de la ciberseguridad. Sin embargo, hay que tener cuidado con el nuevo reto normativo que plantea la Ley de Ciberresiliencia (CRA), que entrará en vigor en 2024. El objetivo de esta normativa es obligar a los desarrolladores a responsabilizarse en caso de defecto de seguridad en el código; sin embargo, aunque esta evolución es necesaria para combatir el enfoque de caja negra, todavía no satisface plenamente a la comunidad... y el debate seguirá abierto.