Skip to main content

5 posibles riesgos del software de código abierto

Escrito por
blog hero software supply chain security

29 de junio de 2021

0 minutos de lectura

Los argumentos a favor del software de código abierto son convincentes. Tanto es así que ahora se ha convertido en una parte estándar del proceso de desarrollo de aplicaciones.

El acceso a bibliotecas, frameworks y procesos gratuitos ahorra a las empresas modernas el tiempo y el costo de crear una pila de aplicaciones completa desde cero, lo que ayuda a acelerar el desarrollo e impulsar la innovación.

A diferencia del software propietario, el código abierto no está ofuscado. Por eso, también es fácil adaptar el código base a las necesidades específicas de tu negocio. Además, cualquiera puede encontrar errores y recomendar soluciones para los problemas del código. Esto significa que los problemas suelen identificarse más rápido y, en algunos casos, ayuda a que el software de código abierto sea más sólido y seguro que sus equivalentes propietarios.

Riesgos del software de código abierto

Sin embargo, todavía hay algunos riesgos del software de código abierto que debes considerar al seleccionar proyectos para tu pila tecnológica.

Por ejemplo, puede que algunas implementaciones sean difíciles de configurar y usar debido a su inmadurez o a la falta de documentación. También podrías tener problemas de compatibilidad de hardware por falta de solidez. Y, en algunos casos, quizás debas contratar a un proveedor externo de soporte, que puede ser costoso, para obtener asistencia técnica.

En esta publicación analizamos más de cerca cinco áreas de preocupación específicas, que representan los riesgos más importantes del uso de software de código abierto.

  1. Calidad del software

  2. Sostenibilidad a largo plazo

  3. Licencias de software

  4. Infracción de derechos de autor

  5. Seguridad del software

1. Calidad del software

Los proyectos de código abierto suelen ser iniciativas impulsadas por la comunidad, en las que el software se desarrolla, prueba y mejora mediante la colaboración. Por eso, a menudo se considera más confiable que las alternativas propietarias.

Sin embargo, nada está garantizado, sobre todo cuando los proyectos están a cargo de apenas un puñado de participantes.

Además, los colaboradores tienen distintos conocimientos, habilidades y experiencia. Algunos no pueden dedicar tanto tiempo como otros. Por eso, como ocurre con cualquier proyecto que no cuenta con los recursos suficientes, la calidad inevitablemente se verá afectada.

Una forma de evaluar un proyecto de código abierto es revisar métricas como el mantenimiento y la seguridad. Evaluar esos parámetros y comparar proyectos de código abierto similares te ayudará a tomar decisiones más informadas. Con Snyk Open Source Advisor, es fácil encontrar y evaluar el mejor paquete de código abierto para tu proyecto. La herramienta abarca más de 1 millón de paquetes de código abierto.

Resumen de Snyk Advisor para el paquete npm React v17.0.2, con una puntuación de salud de 95/100, estado de seguridad, popularidad de descargas y gráficos de mantenimiento.
Descripción general del estado del paquete de código abierto de React en Snyk Advisor

Y, a diferencia del software comercial, que suele estar respaldado por algún tipo de garantía, muy pocas licencias de código abierto ofrecen esa protección si el software no funciona como debería.

2. Sostenibilidad a largo plazo

Muchos tipos de software de código abierto son obra de un pequeño grupo de colaboradores. Como voluntarios, con demasiada frecuencia se ven presionados a mantener sus proyectos mientras tienen un trabajo de tiempo completo.

Esto puede provocar el agotamiento en la comunidad de código abierto, cuando un proyecto se estanca porque los colaboradores no pueden mantener el compromiso y, finalmente, termina por desaparecer.

Si dependes de componentes de código abierto que ya no reciben mantenimiento, podrías tener que hacerte responsable de corregir vulnerabilidades y otros defectos del código. Por eso, asegúrate de monitorear con qué frecuencia se actualizan los proyectos.

3. Licencias de software

Aunque la mayoría del software de código abierto es gratuito, prácticamente todo está sujeto a algún tipo de licencia.

Actualmente hay más de 100 licencias de código abierto aprobadas por la OSI. Por eso, una pila de aplicaciones o un entorno de desarrollo complejos pueden estar sujetos a una desconcertante variedad de acuerdos de licencias de código abierto, algunos de ellos muy complejos y detallados.

Infografía que compara cinco tipos de licencias de software, desde el dominio público hasta las propietarias, en una escala de restricciones crecientes.
Los 5 tipos de licencias de software

Las licencias de código abierto suelen pertenecer a una de dos categorías generales: licencias permisivas y licencias copyleft.

  • Las licencias permisivas, como la licencia MIT, por lo general te permiten usar el código como prefieras. Además, puedes incorporar el código en tus propias aplicaciones propietarias y distribuir software derivado, siempre que reconozcas al creador original.

  • Las licencias copyleft, como la Licencia Pública General de GNU y la Server Side Public License (SSPL), también te permiten modificar el código tanto como quieras. Sin embargo, si quieres reutilizarlo y distribuirlo, debes poner el nuevo código fuente a disposición de todos de forma gratuita. Esto puede ser especialmente problemático si quieres integrar componentes con licencia copyleft en tu software propietario, ya que quizás debas hacer público tu propio código para cumplir con la licencia de software.

Una forma de evitar problemas con las licencias es elaborar una lista de componentes de código abierto aprobados y llevar un inventario del software de código abierto que se usa en tus sistemas. Las políticas de código abierto son otra manera de garantizar el cumplimiento de las licencias.

Al mismo tiempo, antes de decidir qué componentes de código abierto usar, debes considerar debidamente los aspectos técnicos, como la interacción entre las distintas aplicaciones y servicios. También ten en cuenta que, aunque tus aplicaciones sean para uso interno, podrías decidir publicarlas en el futuro.

¡Cuidado!:

Una gran proporción del software disponible de forma gratuita en plataformas de desarrollo como GitHub no tiene ningún tipo de licencia.

Sin embargo, en muchos países, el código de las aplicaciones queda protegido automáticamente por derechos de autor exclusivos. Por eso, que sea de dominio público no significa que tengas derecho a usarlo. En otras palabras, evita usar este tipo de software si no tienes permiso.

4. Infracción de derechos de autor

Muchos desarrolladores de código abierto son aficionados. A menudo trabajan por su cuenta y es posible que no comprendan (o respeten) el concepto de propiedad intelectual protegida.

Esto supone un riesgo de infracción de derechos de autor, ya que un programador sin experiencia o negligente podría permitir que código propietario (o código copyleft) se incorpore a un proyecto. Por eso, las licencias de código abierto no asumen responsabilidad por infracciones de derechos de autor ni por otras violaciones de la propiedad intelectual.

Por lo tanto, asegúrate de hacer las comprobaciones debidas antes de adoptar cualquier software de código abierto para ayudar a evitar posibles demandas y reclamaciones por daños y perjuicios.

5. Seguridad del software

Por su naturaleza colaborativa y transparente, el código abierto suele tener mejor reputación en cuanto a la seguridad del software que el software propietario.

Cuando se descubre una falla de seguridad en una aplicación comercial, debes esperar a que el proveedor responda. En cambio, en el caso del software de código abierto, suele haber alguien disponible para corregirla de inmediato.

Sin embargo, no siempre es así, sobre todo en los proyectos pequeños.

Además, casi la mitad de todos los proyectos de código abierto todavía no cuentan con procedimientos de auditoría de seguridad.

Por eso, no debes confiar simplemente en la idea de que todos los integrantes de la comunidad de código abierto revisan continuamente sus proyectos para detectar problemas de seguridad del código abierto.

Además, mantenerse al día con las actualizaciones de software, los parches y las vulnerabilidades sin resolver no es tarea fácil.

Por ejemplo, puedes suscribirte a los feeds de distintas bases de datos de vulnerabilidades conocidas, incluida la base de datos de vulnerabilidades de Snyk. Sin embargo, ni siquiera los servicios más grandes y completos, como la National Vulnerability Database (NVD), incluyen todos los problemas reportados.

También debes tener en cuenta que estos servicios suelen retrasar las actualizaciones varias semanas para darles tiempo a los desarrolladores de código abierto de analizar, corregir y probar la vulnerabilidad antes de hacerla pública.

Aunque este enfoque tiene sentido, les da más tiempo a los hackers que cuentan con información interna para planificar y lanzar un ataque. Y, aunque se notifique a los usuarios sobre una vulnerabilidad, algunos tardarán demasiado en aplicar el parche o, peor aún, ni siquiera sabrán que usan el componente afectado.

State of Open Source Security 2022

A look at software supply chain complexity and risk in collaboration with the Linux Foundation.

Adelántate

A pesar de los beneficios ampliamente reconocidos del software de código abierto, todavía debes investigar para asegurarte de elegir la solución adecuada para tu organización.

Pero también necesitas adoptar herramientas que te ayuden a administrar tus implementaciones. Estas deben darte una visibilidad clara de tu inventario de código abierto. Así podrás llevar un registro de todos los frameworks y las bibliotecas que usas en tus aplicaciones y cumplir con los requisitos de las licencias de código abierto.

También debes buscar soluciones que te ayuden a mantenerte al día con la seguridad de las aplicaciones, mediante la detección temprana de vulnerabilidades de código abierto antes de que los atacantes puedan aprovecharlas.

Si administras cuidadosamente el uso de código abierto y prestas especial atención a los posibles riesgos legales y de seguridad, podrás disfrutar de todas las ventajas del modelo de código abierto con un riesgo mínimo de enfrentar problemas costosos más adelante.

Sin el respaldo de herramientas de seguridad automatizada y gobernanza, tendrás que hacer una cantidad considerable de trabajo manual para controlar el cumplimiento de las licencias y las vulnerabilidades más recientes de los paquetes.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.