El creciente riesgo que implica el uso de códigos open source y de bibliotecas abiertas
La comunidad de desarrolladores ha adoptado ampliamente las bibliotecas open source (de código abierto) y las API de uso libre debido a lo fácil que es acceder a ellas y también a la flexibilidad que ofrecen y a la colaboración que permiten entre los miembros del sector. Esas herramientas proporcionan una amplia gama de funcionalidades prediseñadas y, así, les permiten a los desarrolladores ahorrar tiempo y esfuerzo en sus proyectos. Sin embargo, la adopción generalizada de esos recursos también ha generado un aumento en el número de riesgos cibernéticos asociados a ellos.
De acuerdo con un relevamiento realizado por Synopsys, el 97% de las aplicaciones existentes adoptan al menos un trecho de un proyecto de código abierto y el 90% de las corporaciones emplean ese tipo de recurso en productos comerciales destinados al público final, ya sea B2B (empresarial) o B2C (persona física). La idea es acelerar el pipeline de desarrollo, automatizando gran parte del trabajo de los desarrolladores utilizando funcionalidades y recursos ya existentes.
Desgraciadamente, los delincuentes cibernéticos también han identificado esa tendencia y están sacándole provecho a ese escenario, encendiendo, de esa forma, la señal de alerta con respecto a la conveniencia de usar los códigos abiertos de una forma más consciente.
Envenenando el aljibe
Una de las principales preocupaciones relacionadas al uso de bibliotecas y API open source es la relativa a la posibilidad de que contengan vulnerabilidades y brechas de seguridad desconocidas. En virtud de la naturaleza abierta de esos recursos, cualquier persona puede contribuir con el código, lo que significa que no siempre hay un control riguroso sobre la calidad de la seguridad. Los atacantes pueden explotar una vulnerabilidad no detectada en una biblioteca de código abierto para comprometer la seguridad de un sistema o aplicación que la utilice.
Otro punto crítico es el relacionado a la complejidad de las dependencias entre bibliotecas y API. Muchas veces, un software puede depender de varias bibliotecas de código abierto que, a su vez, pueden depender de otras bibliotecas. De esa manera, se crea una cadena de confianza en la cual cualquier vulnerabilidad en una biblioteca puede propagarse hacia otras partes del sistema. Además, es común que los desarrolladores no actualicen regularmente sus bibliotecas y dependencias, dejando al sistema vulnerable a amenazas conocidas y corregidas.
Por último, debemos preocuparnos con la posibilidad de inclusión de un código malicioso. Aunque la mayoría de los aportes sean legítimos y bien intencionados, un desarrollador malicioso, con la finalidad de envenenar proyectos, puede introducir un código comprometido en una biblioteca que, entonces, se distribuirá ampliamente entre los usuarios. Además, los delincuentes pueden explorar las API para realizar ataques de inyección de código, como SQL injection o cross-site scripting (XSS), comprometiendo la integridad de los sistemas.
Tips de buenas prácticas
Ante esos riesgos, es fundamental adoptar medidas de seguridad para mitigar las amenazas cibernéticas. Algunas buenas prácticas incluyen:
-
evaluar la reputación y la comunidad de desarrolladores de la biblioteca o API antes de adoptarla;
-
mantener todas las bibliotecas y dependencias actualizadas, aplicando patches de seguridad regularmente;
-
realizar auditorías de seguridad en el código fuente de las bibliotecas de código abierto;
-
implementar mecanismos de control de acceso y autenticación adecuados en las API abiertas;
-
utilizar herramientas de análisis estático de código y escaneos de vulnerabilidades para identificar posibles problemas de seguridad;
-
establecer políticas de revisión de código y pruebas rigurosas para todas las bibliotecas y API que se utilicen.
Con algunas medidas sencillas, es posible aprovechar los beneficios de esos recursos de manera consciente y segura sin poner toda tu cadena de desarrollo en riesgo.