vendredi 8 juin 2018

Mettre en place le plugin OWASP dependency check dans les projets SONAR

Problématique

Comment mesurer les potentielles failles de sécurité induites par les dépendances présentes dans le projet Java que je développe ? 

Solution 

Utilisation du plugin maven dependency check et du plugin sonar associé afin d'avoir un indicateur dans sonarqube :



Cette solution a été sur les version de composants suivants : 
  • Sonarqube 1.1
  • Maven 3.3.9
  • dependency-check-maven 3.2.1
  • sonar-maven-plugin 3.2
  • sonar-dependency-check-plugin 1.1.0

Mise en place dans Maven

Dans le pom du projet ajouter les plugin suivants ainsi que les propriétés : 

<properties> ... <sonar.dependencyCheck.reportPath>${dependency.check.report.dir}/dependency-check-report.xml</sonar.dependencyCheck.reportPath> <sonar.dependencyCheck.htmlReportPath>${dependency.check.report.dir}/dependency-check-report.html</sonar.dependencyCheck.htmlReportPath> </properties> <build> ... <plugins> ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.2</version> </plugin> <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> <version>3.2.1</version> <configuration> <format>ALL</format> <outputDirectory>${dependency.check.report.dir}</outputDirectory> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>check</goal> </goals> </execution> </executions> </plugin> </plugins> </build>




Mise en place dans Sonarqube

1. Cloner le dépôt GIT :
git clone git@github.com:stevespringett/dependency-check-sonar-plugin.git
2. Se positionner sur le tag 1.1.0 :
git checkout 1.1.0
3. Builder le plugin :
mvn clean package
4. Dans le répertoire {project_dir}/sonar-dependency-check-plugin/target doit se trouver le plugin : 
sonar-dependency-check-plugin-1.1.0.jar
5. Copier le jar dans le répertoire {sonarqube_install}/extensions/plugins/ de sonarqube

6. Redémarrer Sonarqube

 Création du rapport contenant les vulnérabilités 

mvn clean package
Une fois le build effectué vous trouverez dans le /target du projet les fichiers dependency-check-report.* contenant les informations sur les vulnérabilités potentiellement présentes dans le projet.
 

 Création du rapport contenant les vulnérabilités dans sonar

Il faut que maven soit paramétré et configuré pour accéder à sonarqube.
mvn clean package sonar:sonar
Une fois le build effectué vous trouverez dans sonar un nouvel onglet sur le projet contenant le rapport html de l'analyse:

Dans 'Measures' se trouvera une nouvelle 'rubrique' OWASP-Dependency-Check (provenant du rapport xml) :

Pour aller plus loin

Il est tout a fait possible d'intégrer ce process dans une usine logicielle afin de bénéficier de l'intégration continue (au sein de jenkins par exemple) . 

Le plugin dependency check peut être paramétré pour terminer le build en erreur si une dépendance critique est détectée. 

Il est aussi possible sur SonarQube de créer des Quality gates contenant des contraintes de sécurité ce qui permettrait de détecter rapidement les failles de sécurité et statuer sur une éventuelle mise en production (selon criticité et choix entre les différents acteurs métiers) du produit logiciel.