Skip to main content

Se necesita una comunidad: cómo responder a las críticas al open source tras Log4Shell

Escrito por
Open Source Blog

24 de diciembre de 2021

0 minutos de lectura

La última semana ha sido una montaña rusa para casi todos en el mundo tecnológico debido a la divulgación pública de la vulnerabilidad Log4Shell. Como empresa de seguridad para desarrolladores, en Snyk hemos construido nuestro negocio en torno a la automatización proactiva para identificar y corregir problemas de seguridad en las aplicaciones. Decir que tuvimos mucho trabajo esta semana sería quedarse corto.

Dicho esto, uno de los argumentos que hemos visto esta semana en relación con Log4Shell es que el open source está fundamentalmente roto: no hay suficientes colaboradores para crear software «confiable», no hay suficientes controles de seguridad y no hay suficiente financiamiento para garantizar que el software open source sea sostenible.

Y aunque estos argumentos tienen algo de fundamento, no estamos de acuerdo en absoluto con la idea de que el open source esté roto. El open source es increíble. Impulsa a la comunidad de desarrollo, nos permite «subirnos a hombros de gigantes» y, francamente, significa que podemos actuar como comunidad para mantenerlo seguro, algo que no es posible con el software de código cerrado.

Para detenernos un momento en este último punto, el open source se construye sobre la comunidad. Cuando surge un problema de seguridad urgente en el open source, la comunidad puede trabajar en conjunto para resolverlo, compartir la solución ampliamente y evaluar qué tan extendido está. Aunque las vulnerabilidades nunca son buenas, son una oportunidad para que la comunidad del open source fortalezca sus protocolos y prácticas. Cuando millones de personas se unen, pueden lograr cosas increíbles, ¡como resolver una vulnerabilidad de día cero con una puntuación de 10.0!

¿El open source es perfecto? Por supuesto que no: hay problemas reales de financiamiento, desequilibrios en las contribuciones, problemas de seguridad, etc. Pero personas como tú y yo podemos solucionar todo esto. Con el open source, ¡todos podemos hacer algo al respecto!

Problemas actuales del open source

Analicemos algunos de los problemas del open source que otras personas han señalado en las últimas semanas:

  • El software open source necesita financiamiento.

  • El software open source necesita más colaboradores para revisar, mejorar y más.

  • El software open source no se toma en serio la seguridad.

El software open source necesita financiamiento

¡Esto es totalmente cierto! Como señala Christine Dodrill en su artículo reciente, la biblioteca `log4j` (que usan innumerables aplicaciones Java) tenía tres patrocinadores remunerados antes de que la vulnerabilidad Log4Shell pusiera la situación en el centro de atención.

Este es un problema real. Las bibliotecas open source de las que depende la gente suelen necesitar financiamiento para que sus mantenedores tengan tiempo suficiente para dedicarse a corregir problemas y garantizar la estabilidad y seguridad de sus aplicaciones.

Al igual que Log4j, antes de que se anunciara la vulnerabilidad Heartbleed, el proyecto OpenSSL era mantenido por dos personas con un presupuesto combinado de ~$2,000 USD al año. No era ni de cerca suficiente para una pieza tan crítica de la infraestructura de Internet.

El software open source necesita más colaboradores

Aunque muchos proyectos conocidos sí cuentan con varios colaboradores, muchas bibliotecas open source críticas suelen ser obra de pocas personas. Esto siempre implica el riesgo de que los errores no se corrijan a tiempo, surjan problemas de seguridad sin mitigar o que los mantenedores simplemente pasen a otros proyectos y dejen un vacío en el mantenimiento.

Por ejemplo, la herramienta y biblioteca curl, que se usa ampliamente desde 1998 para obtener datos, fue mantenida por una sola persona durante muchos años.

El open source no se toma en serio la seguridad

Esta afirmación se ha repetido mucho últimamente. Aunque es cierto que el open source tiene una buena cantidad de vulnerabilidades de seguridad, muchos expertos creen que el software open source ofrece varias ventajas frente al software propietario en cuanto a seguridad. Además, como los acontecimientos recientes han demostrado, cuando surgen vulnerabilidades de seguridad, la comunidad del open source suele encontrar maneras de corregirlas, incluso con financiamiento y colaboradores limitados.

El problema más grande es que la mayoría de los desarrolladores (trabajen o no en proyectos open source) no tienen los conocimientos, la capacitación ni las herramientas de seguridad necesarios para «tomarse en serio la seguridad». Nuestro Informe sobre el estado de la seguridad del open source de 2019 reveló que solo tres de cada diez mantenedores de proyectos open source consideraban tener «amplios conocimientos de seguridad».

Esto no es culpa de los desarrolladores de open source, sino una falla de todo el ecosistema de desarrollo: la seguridad ha sido una rama aparte de la industria desde que tengo memoria. Sin embargo, si queremos crear software más confiable y seguro, la seguridad debe ser una parte central del proceso de desarrollo de software:

  • Las herramientas de seguridad deben formar parte del conjunto de herramientas de todo desarrollador (al igual que un IDE o editor).

  • Las alertas de seguridad deben ser relevantes, útiles y de alto valor (las alertas falsas o de poco valor son una distracción frustrante).

  • La seguridad debe integrarse bien en los flujos de trabajo y las herramientas de desarrollo (canalizaciones de CI/CD, procesos de revisión de código, etc.).

  • La seguridad debe enseñarse en los programas de ciencias de la computación e incluirse como parte central del plan de estudios.

Lo mejor del open source hoy

Ahora que hemos analizado algunas de las principales críticas al open source, hablemos de algunos de sus aspectos positivos.

El open source está en auge

Hoy hay más desarrolladores de open source que nunca. En 2018, GitHub publicó un excelente artículo en el que detalló la cantidad de desarrolladores de open source en su sitio, después de alcanzar los 100 millones de repositorios.

En ese momento, GitHub informó que tenía 31 millones de desarrolladores en total, de casi todos los países del mundo, que colaboraban en 1,100 millones de contribuciones.

También ha aumentado considerablemente la cantidad de colaboradores de open source que participan por primera vez: en 2019, GitHub registró casi 2 millones de colaboradores nuevos y, solo dos años después (en 2021), esa cifra se disparó a más de 3 millones.

En resumen: hay muchísimos desarrolladores de todo el mundo que trabajan en proyectos open source y contribuyen a ellos.

El open source es la base de… prácticamente todo

Independientemente de lo que pienses sobre el open source, su impacto en el mundo moderno es innegable. El open source es la base de casi todas las empresas, aplicaciones y proyectos importantes que se han creado en los últimos 20 años o más.

Imagina crear una aplicación web hoy sin depender de un framework web open source (como Django) o crear una aplicación de escritorio sin usar al menos unas cuantas bibliotecas open source. Para un desarrollador, es casi imposible de imaginar.

Te guste o no, el open source se usa en todas partes, desde los proyectos personales más pequeños hasta las aplicaciones web más grandes del planeta (e incluso fuera del planeta, ¡también!). Un informe reveló que el 98 % de todas las bases de código dependen de software open source. El mundo funciona gracias al open source.

Se está trabajando para financiar el open source

A pesar de que muchos proyectos open source necesitan financiamiento con urgencia (y esto es muy real), hay muchas iniciativas y cambios sociales que están abordando estos problemas.

Por ejemplo, actualmente hay 105 patrocinadores de Ralph Goers, mantenedor principal del proyecto Log4j. Habría sido ideal contar con este financiamiento antes de Log4Shell, pero la comunidad reconoció el problema y muchas personas y organizaciones han tomado la iniciativa para ofrecer financiamiento donde hace falta. Es un gran ejemplo de cómo la comunidad se une para ayudar a resolver un problema.

Las fundaciones, como The Linux Foundation (The Apache Foundation, The Python Foundation, etc.), ofrecen muchos recursos a los proyectos open source que necesitan ayuda (tanto financiera como de otro tipo). Aunque todavía queda mucho por hacer, estas organizaciones tienen un impacto directo en proyectos open source de gran valor y ayudan a garantizar que cuenten con el financiamiento, los recursos y la visibilidad adecuados.

Lo mismo ocurre con muchas empresas: hay muchas organizaciones que apoyan proyectos open source de forma directa o indirecta (por medio del tiempo que dedican sus empleados) para ayudar a satisfacer sus necesidades. La lista es demasiado extensa para incluirla en una entrada de blog, pero la mayoría de las grandes empresas tecnológicas financian el open source de una forma u otra.

La seguridad del open source mejora rápidamente

Como mencioné antes, no es fácil abordar la seguridad del open source de forma aislada, ya que es un problema que afecta a toda la industria y repercute por igual en las aplicaciones open source y de código cerrado.

La buena noticia es que la seguridad del open source está mejorando rápidamente. Esto se debe a muchos factores:

  • En los últimos 10 años, ha crecido el interés por la ciberseguridad.

  • En los últimos cuatro años, el gasto mundial en ciberseguridad casi se ha duplicado.

  • Ahora, los desarrolladores de open source tienen acceso a servicios potentes y gratuitos que les ayudan a detectar y corregir problemas de seguridad (como Snyk, que es 100 % gratuito para proyectos open source).

  • Hay esfuerzos organizados de entidades como OpenSSF (The Open Source Security Foundation), dedicadas específicamente a proteger todos los proyectos open source.

  • Cada vez hay más recursos de capacitación gratuita en seguridad para enseñar a los desarrolladores (¡y a otras personas!) a crear aplicaciones de forma segura, sean open source o no.

Cómo mejorar el open source

La realidad es esta: el open source nunca será perfecto (¡nada lo es!). Depende de nosotros, como miembros de la comunidad, dejar las cosas mejor de como las encontramos y ayudar a mejorar el estado del open source.

Hay un antiguo proverbio griego que dice: «Una sociedad crece cuando los ancianos plantan árboles a cuya sombra saben que nunca se sentarán». Aunque este proverbio sin duda se aplica a las sociedades en general, como comunidad tecnológica podemos plantar árboles y sentarnos a su sombra gracias a la rapidez con la que avanza la tecnología.

A continuación, te comparto algunas sugerencias para que puedas ayudar personalmente a mejorar un poco el open source:

  1. Considera donar dinero a los proyectos open source que más usas para apoyar a sus mantenedores. Puedes hacerlo a través de GitHub Sponsors, OpenCollective o de muchas otras maneras.

  2. Dedica tiempo a los proyectos open source sobre los que construyes. Por ejemplo, si estás creando una aplicación web con Django y agregas una función nueva y útil, ¡intenta contribuirla al proyecto! Participar en el desarrollo de open source podría ser más fácil de lo que piensas.

  3. Usa herramientas de seguridad gratuitas comoSnyk para identificar y corregir problemas de seguridad en tus proyectos. Herramientas como Snyk te permiten:

    • Analizar tus repositorios de código en busca de vulnerabilidades y recibir alertas automáticas cuando se detecten nuevos problemas

    • Corregir al instante varias vulnerabilidades comunes y mantener tus dependencias actualizadas

    • Integrarte directamente en tu IDE para ayudar a detectar problemas de seguridad antes de que lleguen a tu repositorio

    • Analizar contenedores y configuraciones de infraestructura para garantizar que tu infraestructura sea segura

    • Integrarte en las canalizaciones de CI/CD para garantizar que los problemas de seguridad críticos se detecten antes de la puesta en producción

Por último, cuando ocurran problemas graves (como vulnerabilidades de seguridad críticas), no entres en pánico. No hay forma de crear software perfectamente seguro: siempre se desarrollarán nuevos vectores y técnicas de ataque, y hasta el código que hoy se considera perfectamente seguro podría dejar de serlo el próximo año.

Lo mejor que puedes hacer es respirar profundo y atender los problemas urgentes a medida que surjan, manteniendo la calma. Y… ¡no olvides mantenerte en contacto con la comunidad! Comparte tus conocimientos y buenas prácticas con tus colegas: eso ayuda a que todos mejoremos.

Por mi parte, estoy agradecido con toda la comunidad de código abierto y con todas las personas increíbles que forman parte de ella (¡incluyéndote a ti!). Sé que a veces las cosas pueden parecer difíciles, pero recuerda que hay avances, que todo está mejorando y que túpuedes generar un impacto positivo de forma directa.

¡Felices fiestas!

Leer más

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.

feature insights context
Blog

¿La prevención es, en esencia, un problema ya resuelto?

La prevención en el código generado por agentes está resuelta desde el punto de vista arquitectónico, pero elegir controles que protejan la seguridad sin ralentizar el desarrollo sigue siendo el desafío.

Live Stream

Agentes de remediación, sin misterios: por qué solucionar es mejor que encontrar

Descubre cómo el agente de remediación de Snyk utiliza inteligencia de seguridad, análisis de explotabilidad y validación para convertir las vulnerabilidades en solicitudes de incorporación de cambios listas para fusionarse.