[Dependency-Check (3/6)]Première utilisation du plugin

http://owasp.org

Après vous avoir  présenté le plugin Dependency-Check je vais maintenant vous montrer comment l’utiliser dans Maven. Je vous conseille fortement de vous renseigner auparavant sur ce qu’est Maven, est de vous familiariser avec cet outil.

Nous l’avons vu, la configuration d’un projet Maven, se fait depuis le POM.XML à la racine du projet. C’est donc aussi ici que nous allons y ajouter notre plugin.

 

Configuration du plugin Dependency-check dans le fichier pom.xml :

Dans Maven, un plugin s’intègre entre les balises:

<plugins>

<plugin>Donc ici</plugin>

</plugins>

Chaque plugin possède une structure différente qui lui est propre (selon ses paramètres, son but, sa configuration…).

Au cas où aucun plugin n’était présent auparavant il faut ajouter les balises <plugins> dans votre POM soit entre les balises <build></build> ou entre les balises <reporting>reporting> (selon l’usage voulu) se trouvant entre les balises <project></project>.

Nous verrons par la suite le choix d’integrer le plugin entre les balises <reporting> plutôt que les balises <build>.

 

Exemple de configuration dans la balise <reporting>:

</project>

<reporting> //(ici j’ai fait le choix de placer le plugin dans les balises reporting)

<plugins>

<plugin>

<groupId>org.owasp</groupId>

<artifactId>dependency-check-maven</artifactId>

<version>1.3.3</version>

</plugin>

</plugins>

</reporting>

</project>

Ici vu que le plugin se trouve entre les balises <reporting>, on va utiser la commande « site » à travers l’executeur de commande Maven.

Rappel: la commande « site » génère un « site html » contenant toutes les informations du projet, la commande « site » execute par défaut tous les plugins présents dans les balises <reporting> du pom.xml.

L’interet ici d’implanter le plugin au travers des balises <reporting> est que le rapport qu’il va générer sera présent dans le site généré par la commande maven « site« , le plugin peut tout à fait s’implanter dans les balises de <build>, mais ne sera pas présent dans le site.

 

Exemple de configuration dans la balise <build>:

<project>

<build>

<plugins>

<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<version>1.3.3</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>

</plugins>

</build>

</project>

Ici <goal> contient l’action que l’on veut faire executer au plugin. Voici les différents <goals> existant pour le plugin Dependency-check:

aggregate Lance Dependency-check sur le projet « enfant » et génère un rapport unique.
check Lance Dependency-Check sur le projet et génère un rapport.
update-only Met à jour la BDD locale contenant les vulnérabilités.
purge Supprime la BDD locale contenant les vulnérabilités.

Ici on peut aussi lancer uniquement le plugin, sans aucune autre phase (build ou site) avec la commande: « Dependency-check:check »  à travers l’executeur de commande Maven.

Lancement du plugin :

Une fois le plugin correctement placé dans le POM.XML de votre projet Maven, vous pourrez l’utiliser avec l’executeur de commande Maven avec l’une des commandes cité ci-dessus.

Maintenant le plugin lancé, observons son comportement au travers de la console:

1)Le plugin télécharge tous les fichiers contenant les vulnérabilités à partir de: nvd.nist.gov :

[...]
[INFO] Download Started for NVD CVE - 2006
[INFO] Download Complete for NVD CVE - 2002 (453 ms)
[INFO] Download Started for NVD CVE - 2007
[INFO] Download Complete for NVD CVE - 2005 (359 ms)
[INFO] Download Started for NVD CVE - 2008
[INFO] Download Complete for NVD CVE - 2007 (809 ms)
[INFO] Download Started for NVD CVE - 2009
[INFO] Download Complete for NVD CVE - 2006 (1186 ms)
[...]

 

2) Le plugin construit une base de données en local contenant toutes les vulnérabilités :

[...]
[INFO] Processing Started for NVD CVE - 2002
[INFO] Processing Complete for NVD CVE - 2002 (2877 ms)
[INFO] Processing Started for NVD CVE - 2005
[INFO] Processing Complete for NVD CVE - 2005 (3618 ms)
[INFO] Processing Started for NVD CVE - 2007
[...]

 

3)Le plugin scan les dépendances du projet :

[...]
[INFO] Generating "dependency-check:aggregate" report --- dependency-check-maven:1.3.3
[INFO] Analysis Starting
[INFO] Analysis Complete (20528 ms)
[...]

 

4)Le plugin génère un rapport « Dependency-check-report.html » dans le repertoire target/site du projet :

[...]
[WARNING]
One or more dependencies were identified with known vulnerabilities in Projet "calculette":
poi-3.7.jar (cpe:/a:apache:poi:3.7, org.apache.poi:poi:3.7) : CVE-2014-9527, CVE-2014-3574, CVE-2014-3529, CVE-2012-0213
spring-core-3.1.4.RELEASE.jar (cpe:/a:pivotal:spring_framework:3.1.4, cpe:/a:springsource:spring_framework:3.1.4, cpe:/a:vmware:springsource_spring_framework:3.1.4, org.springframework:spring-core:3.1.4.RELEASE) : CVE-2014-3625, CVE-2014-3578, CVE-2014-1904, CVE-2014-0054, CVE-2013-7315, CVE-2013-6429, CVE-2013-4152
See the dependency-check report for more details.
[...]

 

5) Et si tout s’est bien passé :

...
[INFO] calculette project ................. SUCCESS [ 12.574 s]
[INFO] ---------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ----------------------------------------------
[INFO] Total time: 59.625 s
[INFO] Finished at: 2016-01-25T15:12:32+01:00
[INFO] Final Memory: 26M/226M
[INFO] ----------------------------------------------

 

Votre rapport s’est normalement généré dans dans target/site si vous avez utilisé la commande « site ». Il est par déffaut généré en HTML, il se lit donc à travers un navigateur internet.

Voici celui correspondant au projet « Calculette »:

Rapport de vulnérabiltié du projet « Calculette ».

 

Ce sera dans le prochain article que je vous expliquerai comment lire ces rapports de vulnérabilité.

Sachez que nous avons vu la configuration de base du plugin et qu’il en existe des plus avancées, d’autres articles seront donc consacrés à une paramètrie plus complexe du plugin pour un usage spécifique en entreprise.

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *