OWASP Dependency Check

OWASP Dependency Check
Es una utilidad que identifica las dependencias del proyecto y comprueba si hay vulnerabilidades conocidas. Actualmente soporta Java y .NET

El plugin en Jenkins, analiza las dependencias y genera reportes para el OWASP.


 * 1) Base de datos de evidencias de problemas https://cve.mitre.org
 * 2) Sitio del proyecto open source: https://www.owasp.org/index.php/OWASP_Dependency_Check
 * 3) Dependency Check en Github: https://github.com/jeremylong/DependencyCheck

En las configuraciones globales de Jenkins, se debe configurar el directorio, dentro del servidor del Jenkins, en que se guardarán los resultados de los analisis realizados.



Luego, para terminar su configuración se debe correr un job creado para actualizar el owasp (por ejemplo, un job "owasp-update" que no tendrá otra función mas que actualizar la configuración del plugin), en el que se debe agregar el Build-step Invoke OWASP Dependency-Check NVD Update Only. Guardar el job y ejecutarlo una única vez.



Configurar OWASP en el job
Se deberá agregar en Post-Build Step el Invoke OWASP Dependency-Check analysis, que deberá quedar de la siguiente manera:



Luego, se debe agregar en Post-Build Action el Publish OWASP Dependency-Check Analysis results. Aqui se deben ajustar los parámetros a su necesidad. En este caso, los dejamos como están.



Una vez que el job fue ejecutado, se puede ver el reporte del OWASP, entrando en el número de Build y luego en Dependency-Check Warnings.



Cómo leer el reporte de dependency check: https://jeremylong.github.io/DependencyCheck/general/thereport.html

Integrar el OWASP al SonarQube
Para integrar los resultados del Análisis del OWASP al análisis en el SonarQube, se debe añadir el Dependency-Check Plugin al SonarQube. Se debe descargar el jar y moverlo al $SONAR_HOME/extensions/plugins. Descargar de: http://www.sonarplugins.com/owaspdependencycheck

Integración Manual
Clonar el repositorio que contiene el/los proyectos sobre los cuales se quiere correr estos análisis. Agregar el sonar.host.url y asegurarse de que la versión del sonar-maven-plugin y el dependency-check plugin sea el correcto en el pom del proyecto. Debe ser parecido al siguiente:   //AQUI TODO LO DEMAS DEL POM pom //AQUI TODO LO DEMAS DEL POM //properties //properties //properties target/dependency-check URL DEL SONAR src/main/java ${project.groupId}:${project.artifactId} ${dependency.check.report.dir}/dependency-check-report.xml FindBugs-Security-Audit FindBugs Security Audit QualityProfileTwo</id> MyQualityProfile2</sonar.profile> //AQUI TODO LO DEMAS DEL POM //AQUI TODO LO DEMAS DEL POM <pluginManagement> //AQUI TODO LO DEMAS DEL POM //AQUI TODO LO DEMAS DEL POM <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-maven-plugin</artifactId> 3.0.2                    <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> 3.1.2                        XML <outputDirectory>${dependency.check.report.dir}</outputDirectory> </pluginManagement>

Se debe entrar al directorio donde se clonó el repositorio y compilarlo. cd DIR_DEL_PROYECTO mvn package

Luego, se debe correr el dependency-check y el sonar sobre el proyecto

mvn compile dependency-check:check mvn sonar:sonar
 * Si el repositorio tiene un solo módulo, se pueden ejecutar con los comandos:

mvn clean compile dependency-check:aggregate mvn sonar:sonar
 * Si el repositorio tiene mas de un módulo, se debe generar un reporte en cada módulo del proyecto y en el Parent Project. Para esto, se debe correr el dependency-check con el siguiente comando:

mvn compile -DautoUpdate=false dependency-check:aggregate
 * Para desactivar la actualización automática del NVD, se puede agregar esta configuración:

Agregar resultados al Dashboard
Para agregar los resultados del Dependency-check al Dashboard del SonarQube, se debe crear uno nuevo o agregar el widget al dashboard que ya tiene.

Ir a la sección Configure Widgets y agregar el de Known Vulnerabilities in Dependencies. Si el dashboard es global, deberá elegir el o los proyectos sobre los cuales se hizo el análisis de vulnerabilidades.



Uso de Base de Datos NVD externa

 * Se debe crear la Base de Datos y el usuario, en el Postgres con acceso remoto habilitado.
 * Conectarse a la BD Postgres y ejecutar este script
 * Configurar el proyecto siguiendo esta guía

La primera vez que se actualiza la Base de Datos, puede tardar mucho tiempo, debido a la cantidad de filas (millones) que debe insertar a la Base de Datos, que al realizarse por una conexión de red, tomará su tiempo.