La importancia de la gestión de dependencias de tercero en el desarrollo software
En el mundo del desarrollo actual, es común depender en gran medida de una variedad de componentes de terceros: librerías/paquetes y frameworks, para agilizar el trabajo de desarrollo .Si bien estos componentes pueden ser muy útiles, también supone una serie de riesgos utilizarlos en nuestras aplicaciones, por lo que podría hacer nuestra aplicación sea vulnerable a ciertos ataques.
La seguridad es un aspecto fundamental en el desarrollo de aplicaciones, especialmente en el contexto de la inminente Ley de Ciber Resiliencia Europea (CRA). Esta ley obligará a las empresas a tomar medidas de seguridad durante todo el ciclo de desarrollo de software. Por lo que desde Capitole consideramos que es extremadamente importante adoptar medidas para proteger nuestras aplicaciones de las amenazas que puedan surgir de estas dependencias de terceros
Aquí es donde entra en juego el Análisis de Composición de Software (Software Anlysis Component).
¿Qué es SCA?
SCA es un proceso de identificación y evaluación de los riesgos de seguridad asociados a las dependencias de software en nuestros proyectos. Su objetivo es ayudarnos a obtener un inventario de todos los componentes de terceros que se utilizan en nuestros proyectos. Gracias a este inventario podremos determinar qué dependencias podrían estar afectadas por vulnerabilidades conocidas, como las identificadas en el sistema de enumeración de vulnerabilidades comunes (CVE)
Como bien hemos comentado anteriormente el utilizar componentes de terceros puede presentar varios riesgos, incluidos:
– Componentes obsoletos: el no actualizar las dependencias de nuestros proyectos puede llevarnos a tener vulnerabilidades que han sido parcheadas en versiones más recientes.
– Vulnerabilidades conocidas: incluso en la versiones recientes pueden existir vulnerabilidades o que bien no han sido descubiertas o bien no han sido parcheadas todavía, por ello es importante conocerlas para poder mitigarlas
– Componentes de alto riesgo: son aquellos que tienen acceso a datos sensibles y, por lo tanto, son críticos para la seguridad de nuestra aplicación. El SCA nos ayuda a identificar estos componentes y a tomar medidas de seguridad adicionales para protegerlos adecuadamente.
Por ello es importante que integremos mecanismos en nuestro ciclo de desarrollo que nos haga tener una auditoría de estos componentes que no desarrollamos nosotros.
¿Cómo implementar SCA?
Para implementar el Análisis de Composición de Software (SCA) en nuestros proyectos, nos apoyaremos en las herramientas proporcionadas por OWASP (Open Web Application Security Project). Este proceso consta de tres pasos fundamentales:
Paso 1: Análisis
Se identifican todas las dependencias de software mediante el inventario o lista de materiales previamente mencionado, conocido como BOM (Bill Of Materials).
Paso 2: Identificación y Detección
Se detectan las vulnerabilidades conocidas (CVE) presentes en esas dependencias.
Paso 3: Mitigación
Se siguen las recomendaciones sugeridas para mitigar el riesgo asociado a estas vulnerabilidades y prevenir su explotación.
Para llevar a cabo este proceso, nos valdremos de tres herramientas de OWASP, todas ellas de código abierto y gratuitas:
- OWASP Dependency Check: Esta herramienta escanea nuestro proyecto en busca de dependencias, las compara con una base de datos de vulnerabilidades conocidas y genera un informe detallado que incluye la criticidad de las vulnerabilidades, su descripción y posibles soluciones. Para implementar esta herramienta en nuestro proyecto lo descargaremos desde https://owasp.org/www-project-dependency-check y ejecutaremos el comando en la raíz de nuestro proyecto, como resultado obtendremos un html con los resultados del análisis.
- OWASP Cyclone DX: Esta herramienta nos facilita la generación de nuestra lista de materiales (BOM), lo cual es esencial para el análisis de nuestras dependencias. Para ello utilizaremos su repositorio y elegiremos la versión dependiendo del proyecto en el que queramos correrlo (Node,Python,Maven) https://github.com/CycloneDX, cuando ejecutemos la herramienta obtendremos un JSON con la lista de materiales.
- OWASP Dependency Track: Por último, esta herramienta nos proporciona un panel de control donde podemos organizar nuestros proyectos. Se nutre de la lista de materiales (BOM) generada con Cyclone DX para identificar nuestras dependencias y gestionarlas de manera efectiva. Para utilizar Dependecy Track, por un lado necesitaremos una lista de materiales ( que puede haber sido generada previamente con CycloneDX) y desplegar el docker que nos preoporcioan en su web https://docs.dependencytrack.org/getting-started/deploy-docker
Estas herramientas que nos proporciona OWASP son herramientas multiplataformas por lo que podremos ejecutarlas en todo tipo de proyectos, además aparte de identificar las vulnerabilidades, como podría hacer NPM audit, también nos analiza la edad de los componentes y las licencias software de los mismos a parte que pueden ser integradas con herramientas como Jenkins y los resultados de los informes pueden generarse en diferentes formatos.
Recomendaciones
Siguiendo estas recomendaciones, estaremos asegurando la seguridad de nuestro proyecto en lo que respecta a la gestión de dependencias de terceros:
– Utilizar recursos de fuentes confiables: Al seleccionar librerías y frameworks, debemos asegurarnos que sean provenientes de fuentes confiables y mantenibles. Esto implica considerar aspectos como los tiempos de actualización, la reputación en plataformas como GitHub, así como la resolución efectiva de problemas reportados (issues). Optar por fuentes confiables reduce el riesgo de introducir vulnerabilidades en nuestro proyecto desde el inicio.
– Mantener componentes actualizados: Es recomendable realizar actualizaciones periódicas de nuestros componentes. De esta manera, podemos asegurarnos de que estemos al día con los parches de seguridad y las correcciones de errores, mitigando así el riesgo de explotación de vulnerabilidades conocidas.
Conclusión
En conclusión una gestión eficaz de las dependencias de terceros en el software es crucial para garantizar la seguridad e integridad de nuestros proyectos. Al integrar SCA en el ciclo de desarrollo de estos, podemos identificar y mitigar los riesgos asociados con el uso de componentes externos.
Bibliografía:
- https://digital-strategy.ec.europa.eu/en/library/cyber-resilience-act
- https://owasp.org/www-community/Component_Analysis
- https://owasp.org/www-project-cyclonedx/
- https://owasp.org/www-project-dependency-check
- https://owasp.org/www-project-dependency-track
Alberto Castillo Molina
Senior Back-end Developer at Capitole
Your Content Goes Here