Centraliser l'analyse de vos données avec Dependency-Track

On vous en dit plus sur Dependency-track, une plateforme d'analyse de composants qui liste les dépendances de chaque projet.
Eglantine KREMET-COCHETMis à jour le 23 Sept 2022
dependency-track
  • Vous gérez plusieurs projets et vous vous emmêlez les pinceaux entre les dépendances ?
  • Vous ne savez plus quelle application utilise quelle librairie qui a besoin d'être montée de version ou si votre projet est exposé à telle ou telle vulnérabilité ? Dependency-track est fait pour vous !

Dependency-track, c'est quoi ?

Dependency-track est une plateforme permettant d'analyser des composants (applications, dépendances, librairies...). Elle liste les dépendances de chaque projet et indique, pour chacune d'entre elles, s'il faut faire une mise à jour ou s'il existe une vulnérabilité associée.

Dependency-track peut notamment être intégré dans une pipeline.

Dependency-track, comment ça marche ?

Installation

Dependency-Track est une plateforme comprenant une interface utilisateur et une API. Il est possible d'installer les deux mais on peut aussi choisir qu'une seule des deux options. De notre côté, on préconise d'utiliser les deux solutions : l'interface utilisateur qui est plus user-friendly et l'APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. qui nous permettra d'intégrer Dependency-track à nos pipelines.

Deux solutions sont possibles pour la mise en place de Dependency-track :

1 / Il peut être déployé sur un conteneur Docker

2 / à partir d'un exécutable WAR

  • Exécuter Dependency-track avec les options par défaut java -Xmx8G -jar dependency-track-bundled.war

Un compte par défaut sera créé avec le username "admin" et le password "admin". À la première connexion, il vous sera demandé de modifier le mot de passe.

Ajout d'un projet

L'ajout d'un projet peut se faire manuellement depuis l'interface utilisateur, mais nous préférons automatiser ce processus en l'intégrant à une pipeline.

Dependency-track analyse des fichiers XML correspondant à la nomenclature de CycloneDX BOMs. Il vous faudra donc intégrer CycloneDX à votre pipeline pour pouvoir intégrer votre projet à Dependency-track. Une fois le fichier XML obtenu, celui-ci est transmis à l'API (grâce à une API Key propre à notre compte).

Sur l'interface utilisateur, le projet est ajouté à la liste puis actualisé à chaque pipeline. Un Risk Score lui est associé, qui est la somme des scores de chaque vulnérabilité présente dans ses dépendances. En fonction de la gravité d'une vulnérabilité, elle aura un score plus ou moins élevé. On peut manuellement retirer une vulnérabilité d'un composant pour un projet en particulier si nous savons que le contexte n'est pas concerné.

Par défaut, Dependency-track envoie des alertes par mail lorsqu'une nouvelle vulnérabilité est détectée. Des notifications peuvent être configurées, sur Teams notamment.

Où Dependency-track récupère-t-il la liste des vulnérabilités ?

Par défaut, Dependency-track actualise les vulnérabilités en cours à partir du service CVE Details. Cependant, il est tout à fait possible d'ajouter ses propres sources.

Exploit Predictions

Dependency-track met à disposition une nouvelle fonctionnalité depuis peu : l'exploit predictions. Pour chaque projet, un tableau à double entrée est généré, vous indiquant le poids d'une vulnérabilité en abcisse et l'EPSS (Exploit Prediction Scoring System) en ordonnée. L'EPSS correspond à un score d'estimation du risque que la vulnérabilité soit exploitée dans le projet en question.

Les points forts de Dependency-track

Dependency-track présente des points forts non négligeables :

  • Il centralise les données de tous les composants de nos divers projets.
  • Il permet de rester à jour sur les vulnérabilités et les montées de version.
  • Les exploit predictions.

Les points faibles de Dependency-track

  • il est assez lourd (il faut au minimum 4Gb de RAM pour le lancer).
  • Il ne fait qu'interpréter les fichiers générés par CycloneDX, mais ne propose pas de vraies solutions pour intégrer un projet à partir de sa phase de build. CycloneDX propose des outils et des méthodes différentes en fonction des langages pour générer ses fichiers ; si vous avez l'habitude d'utiliser beaucoup de langages différents, il faudra un script différent pour chaque langage.
  • L'intégration de l'authentification à partir d'un compte autre que Dependency-track lui-même (via des comptes Google par exemple) est assez fastidieuse à mettre en place.
  • La documentation est trop superficielle.

Est-ce qu'AXOPEN recommande Dependency-track ?

Oui, ses avantages sont indéniables.

Cependant, il est important de garder en tête que l'objectif n'est pas de monter de versions les composants d'une application dès que cela est possible et de passer du temps à résoudre les moindres vulnérabilités, au risque de perdre plus de temps que d'en gagner. Il est nécessaire de s'interroger sur la pertinence du traitement de chaque information.

Dependency-track est-il pertinent pour vos applications web ? Le mieux est d'en discuter avec nos experts ! Pour nous contacter, c'est par ici !