Skip to main content

Aperçu

  • Fonctionnement: l’analyse des dépendances, également appelée analyse de la composition logicielle (SCA), identifie automatiquement les vulnérabilités connues dans les dépendances et bibliothèques tierces de votre projet. Elle scanne les manifestes de dépendances (tels que package.json, requirements.txt et pom.xml) et fournit des informations détaillées, notamment les identifiants CVE, les scores CVSS et des recommandations de remédiation.
  • Public concerné: cette fonctionnalité s’adresse aux équipes de sécurité, aux développeurs, aux ingénieurs DevOps et à toute personne chargée de maintenir des applications sécurisées. Elle est particulièrement utile aux équipes qui gèrent de nombreuses dépendances tierces et doivent se tenir informées des vulnérabilités susceptibles d’affecter leurs applications.

Principales fonctionnalités et avantages

  • Couverture complète des écosystèmes: scanne les dépendances de plus de 25 langages et écosystèmes, notamment Python, JavaScript/Node.js, Java, Go, Ruby, PHP, C# et Swift
  • Sources de données faisant autorité : exploite plusieurs bases de données de vulnérabilités fiables, notamment :
    • GitHub Advisory Database (CC-BY 4.0)
    • PyPI Advisory Database (CC-BY 4.0)
    • Go Vulnerability Database (CC-BY 4.0)
    • Rust Advisory Database (CC0 1.0)
    • Global Security Database (CC0 1.0)
    • OSS-Fuzz (CC-BY 4.0)
    • Rocky Linux (BSD)
    • AlmaLinux (MIT)
    • Haskell Security Advisories (CC0 1.0)
    • RConsortium Advisory Database (Apache 2.0)
    • OpenSSF Malicious Packages (Apache 2.0)
    • Python Software Foundation Database (CC-BY 4.0)
    • Bitnami Vulnerability Database (Apache 2.0)
    • Ubuntu (GPL v3)
    • Et bien d’autres sources faisant autorité
  • Renseignements détaillés sur les vulnérabilités: fournit notamment :
    • Identifiants CVE et autres identifiants de vulnérabilité
    • Scores CVSS et niveaux de sévérité (critique, élevée, moyenne, faible)
    • Versions du package concernées et correctifs disponibles
    • Descriptions détaillées des vulnérabilités et références
    • Liens vers les avis de sources telles que GitHub Advisory Database, NVD et, lorsqu’ils sont disponibles, les avis de sécurité des fournisseurs
    • Dates de publication et liens externes
  • Logique de scan intelligente : détecte automatiquement la présence de fichiers de dépendances et optimise les performances du scan

Instructions de configuration

Le projet doit contenir au moins un fichier de dépendance pris en charge et les autorisations appropriées pour effectuer des analyses de sécurité.

Étapes de configuration

1

Vérifier les fichiers de dépendance

Assurez-vous que votre projet contient des fichiers de dépendances pris en charge :
2

Configurer le périmètre du scan

Choisissez d’inclure l’analyse des dépendances dans les scans complets ou partiels
3

Configurer les notifications

Configurez comment vous souhaitez être informé des nouvelles vulnérabilités

Guide d’utilisation

L’affichage des dépendances d’un scan, le téléchargement des fichiers SBOM et l’export des dépendances au format CSV nécessitent l’autorisation Afficher les problèmes SCA. Si le contrôle d’accès aux projets est activé, vous devez également avoir accès au projet concerné.

Principaux workflows

  1. Détection automatique : le système identifie automatiquement les fichiers de dépendances dans le répertoire de votre projet
  2. Scan complet : analyse tous les fichiers de dépendances pris en charge et les compare aux bases de données de vulnérabilités
  3. Traitement des vulnérabilités : traite les résultats du scan et les enrichit avec des renseignements de sécurité supplémentaires
  4. Création des problèmes : crée un problème de sécurité traçable pour chaque vulnérabilité détectée
  5. Rapports : génère des rapports complets sur les vulnérabilités avec des recommandations de remédiation exploitables

Filtres de la vue Dépendances

Vue des dépendances Utilisez les filtres de la vue Dépendances pour affiner les résultats SCA :
  • Recherche: recherchez les problèmes par CVE, nom de paquet ou résumé
  • Sévérité: limitez les résultats aux niveaux critique, élevé, moyen ou faible
  • Statut du SLA: affichez les problèmes de dépendances en retard ou ayant fait l’objet d’une escalade lorsqu’un SLA SCA s’applique
  • Écosystème : limitez les résultats à un écosystème de paquets donné
  • Projet : filtrez les résultats sur un projet par son nom (seuls les projets auxquels vous avez accès apparaissent)
  • Licence : filtrez les résultats par licence de dépendance
  • Type de dépendance : affichez les dépendances directes, transitives, de développement ou facultatives
  • Accessibilité: affichez les problèmes accessibles, inaccessibles, inutilisés ou encore en cours d’analyse (voir Analyse d’accessibilité)
  • Correctif disponible: affichez uniquement les problèmes pour lesquels un correctif est connu
Scans affectés correspond au nombre de scans distincts dans lesquels une vulnérabilité a été détectée, même si un même scan la trouve dans plusieurs paquets ou manifestes.

Exporter les dépendances au format CSV

Dans la vue Dépendances, cliquez sur Exporter au format CSV pour télécharger les résultats correspondant à la recherche et aux filtres actifs. L’export contient les informations sur les paquets et les vulnérabilités, le type et l’accessibilité des dépendances, le projet, la branche et le chemin du manifeste concerné. Lorsque le contrôle d’accès aux projets est activé, seuls les projets auxquels vous avez accès sont inclus.

Dépendances transitives

Dans les projets modernes, la plupart des vulnérabilités se trouvent dans des dépendances transitives : des paquets que vous n’avez pas ajoutés directement, mais qui sont requis par ceux que vous avez ajoutés. Corgea résout l’intégralité du graphe de dépendances afin de montrer précisément les dépendances de votre application et leur origine.

Types de dépendances

Dans les résultats de scan, les groupes de paquets incluent des badges indiquant d’où vient une dépendance vulnérable :
  • Directe : le paquet vulnérable est une dépendance directe déclarée dans votre manifeste (par exemple, package.json ou pom.xml).
  • Transitive : le paquet vulnérable est intégré indirectement par une autre dépendance.
  • Développement : le paquet vulnérable est utilisé comme dépendance de développement (compilation, test ou outils) plutôt qu’à l’exécution.
  • Facultative : le paquet vulnérable est marqué comme une dépendance facultative.
Sur la page de détails d’un problème SCA, le type de dépendance apparaît avec les autres informations sur le problème. Un badge Sous-dépendances est affiché lorsque le paquet sélectionné contient des dépendances imbriquées.

Construction du graphe de dépendances

Corgea construit l’arbre de dépendances en combinant les paquets que vous déclarez avec ceux que votre build résout réellement :
  1. Les dépendances directes sont lues dans vos manifestes (package.json, pom.xml, requirements.txt, go.mod, Gemfile, entre autres).
  2. Les dépendances transitives sont résolues à partir des lockfiles (tels que package-lock.json, yarn.lock, poetry.lock et go.sum) et d’une nomenclature logicielle (SBOM) générée. Ces fichiers indiquent les versions exactes résolues et leurs relations parent-enfant.
  3. En l’absence de lockfile, Corgea tente d’en générer un automatiquement pour les écosystèmes pris en charge, par exemple en résolvant les dépendances Python ou .NET, afin que les paquets transitifs puissent tout de même être analysés.
Chaque dépendance enregistre le parent qui l’a introduite et la dépendance directe racine dont elle provient. Corgea peut ainsi afficher le chemin complet entre votre manifeste et le paquet vulnérable.

Vue arbre de dépendances

La vue Dépendances peut afficher vos dépendances sous la forme d’un arbre repliable. Développez une dépendance directe pour voir tous les paquets qu’elle introduit :
Une recherche dans l’arborescence met en évidence les paquets correspondants et conserve leurs ancêtres à l’écran, de sorte que vous puissiez toujours comprendre pourquoi un paquet vulnérable est présent. Pour des raisons de performance, l’arborescence n’est pas générée pour les très grands projets (plus de 10 000 dépendances environ) ; utilisez alors la liste et la recherche.

Écosystèmes pris en charge

La fonction d’analyse des dépendances prend en charge les écosystèmes suivants :
  • AlmaLinux - Paquets Linux d’entreprise
  • Alpine - Paquets Alpine Linux
  • Android - Dépendances des applications Android
  • Bitnami - Packages d’applications Bitnami
  • crates.io - Paquets Rust
  • Curl - vulnérabilités des bibliothèques cURL
  • Debian GNU/Linux - Paquets Debian
  • Git - Dépôts Git (y compris C/C++)
  • GitHub Actions - Workflows GitHub Actions
  • Go - Modules et paquets Go
  • Haskell - Paquets de Haskell
  • Hex - Paquets Elixir
  • Linux kernel - Vulnérabilités du noyau Linux
  • Maven - Dépendances Java Maven
  • npm - Paquets Node.js
  • NuGet - Paquets .NET
  • OSS-Fuzz - Le service de fuzzing continu de Google
  • Packagist - Paquets PHP
  • Pub - Paquets Dart
  • PyPI - Paquets Python
  • Python - Vulnérabilités du langage Python
  • R - Paquets R (CRAN et Bioconductor)
  • Rocky Linux - Paquets Linux Rocky
  • RubyGems - Paquets Ruby
  • SwiftURL - Paquets Swift
  • Ubuntu OS - Paquets Ubuntu

Exemple de projet multi-écosystème

Enterprise Application Structure

Répartition par sévérité

Critique: Action immédiate requise, risque de compromission complète du système
  • Élevée: doit être traitée rapidement en raison de son impact important sur la sécurité
  • Moyenne : doit être traitée lors des cycles de maintenance habituels
  • Faible: problème mineur qui peut être traité ultérieurement

Analyse d’accessibilité

La présence d’un paquet vulnérable dans votre arbre de dépendances ne signifie pas nécessairement que votre application est exposée. L’analyse d’accessibilité aide à établir les priorités en déterminant si votre code peut réellement déclencher la vulnérabilité. Pour chaque dépendance directe vulnérable, Corgea répond à deux questions :
  1. Le paquet est-il utilisé ? Corgea recherche les imports et les utilisations du paquet dans votre code. Un paquet déclaré mais jamais importé présente un risque beaucoup plus faible.
  2. La fonction vulnérable est-elle accessible ? Pour les paquets utilisés, Corgea détermine si votre code appelle réellement les fonctions concernées par la vulnérabilité.
Corgea traite différemment les bibliothèques utilitaires et les frameworks. Pour les bibliothèques utilitaires, il peut rechercher des appels directs aux fonctions vulnérables. Pour les frameworks, dans lesquels le code vulnérable s’exécute au cœur du framework plutôt que par l’intermédiaire d’une fonction directement appelée, l’accessibilité est indiquée comme incertaine, car votre code seul ne permet pas de donner une réponse définitive.
L’analyse d’accessibilité porte sur les dépendances directes. Les vulnérabilités des dépendances transitives sont signalées et peuvent être corrigées (voir Recommandations de correctifs), mais leur accessibilité n’est pas analysée individuellement.

États d’accessibilité

Chaque problème analysé se résout à l’un des états suivants, que vous pouvez également utiliser comme filtres dans la vue Dépendances :
  • Accessible: votre code appelle la fonctionnalité vulnérable. Ces problèmes sont prioritaires, en particulier pour les dépendances directes.
  • Inaccessible: le paquet est utilisé, mais les fonctions vulnérables ne sont pas appelées.
  • Inutilisé: le paquet est déclaré, mais n’est pas utilisé dans votre code.
  • En cours d’analyse: l’analyse d’accessibilité du problème n’est pas terminée.

Visualisation de l’accessibilité

Pour les problèmes accessibles, Corgea peut représenter le chemin entre les points d’entrée de votre application et le code vulnérable. Le parcours montre comment l’exécution passe des endpoints aux fonctions intermédiaires, puis à la fonction vulnérable. Vous pouvez ainsi comprendre et vérifier précisément pourquoi un problème est accessible.

Recommandations de correctifs

Lorsqu’un correctif est disponible, Corgea recommande la version corrigée la plus proche, c’est-à-dire la version minimale qui résout la vulnérabilité. Elle est affichée à côté de la version actuellement installée. Cette recommandation limite l’ampleur de la mise à niveau et réduit le risque de changements incompatibles. Pour les dépendances directes, appliquez le correctif en mettant à jour la version dans votre manifeste. Pour les dépendances transitives, vous ne pouvez généralement pas modifier directement la version, car elle est contrôlée par un paquet parent. Corgea affiche alors le chemin de dépendance et la dépendance parente à mettre à niveau pour récupérer la version transitive corrigée. Consultez Dépendances transitives pour comprendre la construction de ce chemin.
Les recommandations de correction pour les dépendances sont des conseils pour y remédier. Vérifiez la compatibilité des mises à jour avant de les appliquer.

Analyse des licences

Pendant l’analyse des dépendances, Corgea identifie la licence logicielle associée à chaque dépendance afin de fournir une vue d’ensemble des licences présentes dans votre projet. Les licences sont présentées de deux manières :
Le scan des licences fournit un inventaire destiné à la visibilité et au reporting. Il n’applique pas automatiquement de politiques de conformité des licences.

Analyse d’images conteneurs

Corgea analyse également les images conteneurs dont dépend votre projet, identifiant les vulnérabilités dans les paquets de base du système d’exploitation et autres logiciels installés dans les couches d’image. Les images sont automatiquement découvertes depuis Dockerfile et Docker Compose — aucune configuration requise. Pour en savoir plus sur la détection des images, les registres pris en charge et les limites, consultez Analyse d’images conteneurs.

Détection de paquets malveillants

Dans le cadre de l’analyse des dépendances, Corgea signale les paquets malveillants ou compromis connus, tels que les typosquats, les versions détournées et les versions contenant une backdoor, à partir de la base OpenSSF Malicious Packages et de flux d’avis connexes. Pour plus de détails, voir Détection de paquets malveillants.

Bonnes pratiques

Activez l’analyse automatique pour détecter les nouvelles vulnérabilités dès leur publication.
  • Scans réguliers: activez le scan automatique pour détecter les nouvelles vulnérabilités dès leur divulgation
  • Mises à jour des dépendances : mettez rapidement à jour les dépendances lorsqu’un correctif est disponible pour une vulnérabilité détectée
  • Priorisation par sévérité : traitez en priorité les vulnérabilités de sévérité critique et élevée
  • Évaluation des risques : déterminez si les vulnérabilités affectent réellement la surface d’attaque de votre application
  • Hygiène des dépendances : examinez et supprimez régulièrement les dépendances inutilisées afin de réduire la surface d’attaque
  • Verrouillage des versions : utilisez des numéros de version précis dans les fichiers de dépendances afin d’obtenir des résultats de scan cohérents
  • Surveillance : configurez des alertes pour les nouvelles vulnérabilités découvertes dans vos dépendances
  • Documentation : conservez une trace des risques acceptés et des décisions de remédiation

Dépannage

Solution : vérifiez que les fichiers de dépendances utilisent un format pris en charge et contiennent des informations valides sur les paquetsVérification: assurez-vous que les fichiers de dépendances ne sont pas corrompus et ne contiennent pas d’erreurs de syntaxe
Solution : vérifiez que tous les fichiers de dépendances sont inclus dans le périmètre du scanVérification: vérifiez que les fichiers de dépendances sont correctement formatés et accessibles
Solution : examinez les vulnérabilités en détail afin de déterminer si elles affectent réellement votre applicationVérification: tenez compte des modes d’utilisation et des vecteurs d’attaque propres à votre application
Solution : ce comportement est normal pour les grands projets comportant de nombreuses dépendancesVérification: envisagez un scan incrémental limité aux fichiers modifiés