Dependency-Track - Guide d’analyse continue d’SBOM
Dependency-Track (un projet phare OWASP) est une plateforme pour la gestion continue du risque de chaîne d’approvisionnement logicielle. Son idée définissante : au lieu de scanner vos dépendances une fois au build time, vous uploadez un SBOM CycloneDX par projet et la plateforme réévalue continuellement ces composants au fur et à mesure que de nouvelles vulnérabilités sont divulguées. Quand un CVE sort, vous savez immédiatement quelles applications contiennent le composant affecté — sans reconstruire ou rescanner quoi que ce soit.
Déploiement
| Méthode | Commande |
|---|
| Docker Compose | curl -LO https://dependencytrack.org/docker-compose.yml && docker compose up -d |
| Container (API) | docker run -p 8081:8080 dependencytrack/apiserver |
| Frontend | conteneur dependencytrack/frontend (UI par défaut sur 8080) |
| Kubernetes | Helm chart disponible |
| Requirements | ~4GB+ RAM ; PostgreSQL pour la production |
Concepts de base
| Terme | Signification |
|---|
| Projet | Une application/service que vous suivez |
| Composant | Une dépendance au sein d’un projet |
| SBOM | Bill of materials CycloneDX que vous uploadez |
| Vulnérabilité | Un CVE/advisory affectant un composant |
| Policy | Règles qui gèrent le risque (license, severity, age) |
| Portefeuille | Tous les projets, agrégés |
Uploader un SBOM
Générez avec Syft ou des outils cyclonedx-*, puis uploadez via API :
# Générer un SBOM CycloneDX
syft dir:. -o cyclonedx-json > bom.json
# Uploader vers Dependency-Track
curl -X POST "http://localhost:8081/api/v1/bom" \
-H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" \
-F "bom=@bom.json"
| Endpoint | Objectif |
|---|
POST /api/v1/bom | Uploader un SBOM |
GET /api/v1/project | Lister les projets |
PUT /api/v1/project | Créer un projet |
GET /api/v1/vulnerability/project/{uuid} | Vulnérabilités pour un projet |
GET /api/v1/metrics/project/{uuid}/current | Métriques de risque actuelles |
Sources de renseignements sur les vulnérabilités
| Source | Fournit |
|---|
| NVD | Données CVE |
| GitHub Advisories | Advisories spécifiques à l’écosystème |
| OSV | Base de données Open Source Vulnerabilities |
| VulnDB | Commercial (optionnel) |
| Interne | Vos propres advisories |
La plateforme miroir ces flux et réanalyse chaque composant stocké contre eux selon un calendrier.
Moteur de policy
| Condition de policy | Exemple |
|---|
| Severity | Échouer si une vulnérabilité CRITICAL existe |
| License | Bloquer GPL dans les produits propriétaires |
| Âge du composant | Signaler les dépendances non-maintenées depuis N ans |
| Coordonnées | Interdire un package/version spécifique |
| CWE | Signaler des classes de faiblesse spécifiques |
Les policies produisent des violations qui apparaissent à côté des vulnérabilités, donc le risque de license et d’hygiène sont suivis au même endroit.
Intégration CI/CD
# Dans un pipeline : build → générer SBOM → uploader → gater
syft dir:. -o cyclonedx-json > bom.json
curl -X POST "$DT_URL/api/v1/bom" -H "X-Api-Key: $DT_API_KEY" \
-F "project=$PROJECT_UUID" -F "bom=@bom.json"
# Sonder le résultat de l'analyse et échouer sur les violations de policy
| Intégration | Note |
|---|
| Jenkins/GitHub Actions | Plugins/actions officiels disponibles |
| Webhooks | Notifier Slack/Teams/Jira sur les nouvelles découvertes |
| VEX | Enregistrer les décisions d’exploitabilité (not affected, etc.) |
Triage & VEX
| Action | Signification |
|---|
| Not Affected | Le chemin de code vulnérable n’est pas accessible |
| False Positive | La détection est incorrecte |
| Resolved | Fixé dans ce projet |
| Suppressed | Risque accepté avec justification |
Enregistrer ceux-ci comme VEX réduit le bruit et documente les décisions pour les auditeurs.
Dependency-Track vs Point Scanners
| Aspect | Dependency-Track | Grype/Trivy | Socket |
|---|
| Modèle | Plateforme SBOM continue | Scan point-in-time | Détection de malware comportemental |
| Réévaluation | Automatique sur nouveaux CVEs | Uniquement quand vous relancez | Sur les changements de dépendance |
| Vue portefeuille | Oui (tous les projets) | Par scan | Par PR |
| Idéal pour | Risque supply chain org-wide | Scanning CI | Détection de package malveillant |
Alimentez-le avec les SBOMs de Syft ; associez-le à Grype pour le scanning au build et Socket pour la détection de package malveillant.
Ressources