[Dependency-Check (2/6)] Présentation et Fonctionement

http://owasp.org

Ma mission principale aujourd’hui en entreprise concerne l’intégration du plugin: Dependency-Check Maven développé par l’OWASP(voir cet article).

Dependency-check Maven est un plugin Open Source (comme tous les projets de l’OWASP) qui scanne les dépendances d’un projet pour ensuite générer un rapport sur leurs vulnérabilités. Tout cela sur du langage Java, PHP, Python, Ruby, .NET et Node.js.

Qu’est ce qu’une dépendance?

Une dépendance est extraite d’une bibliothèque. La bibliothèque est une collection de fonctions , qui peut être déjà compilée et prête à être utilisée par des programmes. Lorsque l’on fait appel à une ou plusieurs fonctions d’une bibliothèque on crée donc une dépendance, notre programme devient « dépendant » de telle ou telle fonction d’une certaine bibliothèque pour pouvoir fonctionner.

Cela permet au développeur d’éviter de devoir tout programmer depuis zéro dans son projet. Par exemple pour l’affichage d’une vidéo, le développeur ne va pas s’amuser à programmer cela, il fera appel à une bibliothèque contenant des fonctions disposées pour cela.

Pourquoi des dépendances vulnérables?

Comme tout, ces dépendances ont bien été développées par quelqu’un et les erreurs sont humaines. Le développeur a pu laisser des failles en développant. Lorsqu’une de ces failles est découverte (par exemple par un chercheur ou par un « hacker ») elle peut être remontée sur la National Vulnerability Database(NVD), qui est un site du gouvernement américain listant toutes les vulnérabilités connues.

Le nom d’une vulnérabilité répertoriée sur la NVD prend la forme CVE-AAAA-NNNN .

AAAA est l’année de publication de vulnérabilité et NNNN un numéro incrémenté pour l’identifier.

Exemple: CVE-2015-7886 ou CVE-2015-4988

 

Le risque d’utiliser des dépendances vulnérables:

  • Utiliser des composants vulnérables figure dans le top 10 des problèmes de sécurité majeur de l’OWASP
  • L’exploitation d’un composant vulnérable peut avoir un impact critique sur l’application concernée
  • Peut permettre la prise de contrôle de l’application, la manipulation des données, l’exécution arbitraire de code…
  • L’exploitation de ce genre de vulnérabilité ne nécessite pas forcément d’être un expert

 

Comment fonctionne le plugin Dependency-Check Maven?

Il fonctionne en extrayant des données sur les fichiers dépendances qu’il scanne en utilisant un analyseur.

La donnée extraite s’appelle une « preuve » (ou evidence) elle identifie un composant de la dépendance. Trois types de données « preuves » sont donc collectées à travers le scan :

  • Vendeur
  • Produit
  • Version

Se regroupant  sous la forme d’un CPE (Common Platform Enumeration à ne pas confondre avec CVE)  :

“cpe:/[ Entry Type]:[Vendeur]:[Produit]:[Version]…”

cpe:/a:apache:httpclient:3.1

cpe:/a:apache:struts:2.3.1.2

 

Les données « preuves » rassemblées dans un CPE sont ensuite stockées dans un index « Lucene » dont chaques données seront ensuite comparées à la base de donnée de vulnérabilités téléchargée depuis web.nvd.gov par le plugin.

Le plugin compare chaque CPE à la liste de vulnérabilité. En cas de « match » l’analyseur ajoute un identifiant à la dépendance vulnérable trouvée  et par la suite l’inscrit dans un rapport de vulnérabilité qu’il va générer à la fin de son cycle.

Un numéro CVE (Common Vulnerabilities and Exposures) est associé à chaque vulnérabilité répertoriée. Le  numéro CVE vous redirige vers web.nvd.gov qui vous donne une description complète de la vulnérabilité trouvée.

 

Par la suite je ferais un article sur comment configurer le plugin dans un projet Maven et comment lire les rapports qu’il génère.

Laisser un commentaire

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