> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Analyse des dépendances (SCA)

> L'analyse des dépendances, également appelée analyse de composition logicielle (SCA), identifie automatiquement les vulnérabilités de sécurité connues dans les dépendances et bibliothèques tierces de votre projet. Elle analyse les manifestes de dépendances (comme `package.json`, `requirements.txt`, `pom.xml`) et fournit des informations détaillées, notamment les identifiants CVE, les scores CVSS et des conseils de remédiation.

## 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

<Accordion title="Voir toutes les sources de données sur les vulnérabilités">
  - **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é
</Accordion>

* **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

<Info>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é.</Info>

### Étapes de configuration

<Steps>
  <Step title="Vérifier les fichiers de dépendance">
    Assurez-vous que votre projet contient des fichiers de dépendances pris en charge :

    <Tabs>
      <Tab title="Python">
        ```text theme={null}
        requirements.txt
        Pipfile
        Pipfile.lock
        pyproject.toml
        poetry.lock
        ```
      </Tab>

      <Tab title="JavaScript/Node.js">
        ```text theme={null}
        package.json
        package-lock.json
        yarn.lock
        pnpm-lock.yaml
        ```
      </Tab>

      <Tab title="Java">
        ```text theme={null}
        pom.xml
        build.gradle
        build.gradle.kts
        gradle.lockfile
        ```
      </Tab>

      <Tab title="Go">
        ```text theme={null}
        go.mod
        go.sum
        ```
      </Tab>

      <Tab title="Ruby">
        ```text theme={null}
        Gemfile
        Gemfile.lock
        ```
      </Tab>

      <Tab title="PHP">
        ```text theme={null}
        composer.json
        composer.lock
        ```
      </Tab>

      <Tab title="C#">
        ```text theme={null}
        *.csproj
        packages.config
        ```
      </Tab>

      <Tab title="Swift">
        ```text theme={null}
        Package.swift
        Package.resolved
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Configurer le périmètre du scan">
    Choisissez d’inclure l’analyse des dépendances dans les scans complets ou partiels
  </Step>

  <Step title="Configurer les notifications">
    Configurez comment vous souhaitez être informé des nouvelles vulnérabilités
  </Step>
</Steps>

## Guide d’utilisation

<Note>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é.</Note>

### 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

<img src="https://mintcdn.com/corgea/Ol14XvOQ0I7r7nLK/images/dependencies/dependencies_view.png?fit=max&auto=format&n=Ol14XvOQ0I7r7nLK&q=85&s=407616b72ca6c9419a9d4c7ae9ff35e3" alt="Vue des dépendances" width="3586" height="2066" data-path="images/dependencies/dependencies_view.png" />

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é](#reachability-analysis))
* **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 :

```text theme={null}
express@4.17.1 (direct)
├── lodash@4.17.15 (transitive)
└── qs@6.7.0 (transitive)
    └── side-channel@1.0.4 (transitive)
```

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

<Accordion title="Voir les 25+ é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
</Accordion>

### Exemple de projet multi-écosystème

```text Enterprise Application Structure theme={null}
Enterprise Application:
├── backend/
│   ├── requirements.txt        ✓ Python dependencies
│   ├── pom.xml                 ✓ Java dependencies
│   └── go.mod                  ✓ Go dependencies
├── frontend/
│   ├── package.json            ✓ Node.js dependencies
│   └── package-lock.json       ✓ Lock file
├── mobile/
│   └── Gemfile                 ✓ Ruby dependencies
└── infrastructure/
    └── docker-compose.yml      ✓ Container dependencies
```

### Répartition par sévérité

<Warning>**Critique**: Action immédiate requise, risque de compromission complète du système</Warning>

* **É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.

<Note>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](#fix-recommendations)), mais leur accessibilité n’est pas analysée individuellement.</Note>

### É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](#transitive-dependencies) pour comprendre la construction de ce chemin.

<Note>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.</Note>

## 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 :

* **Filtre de licence** : dans la vue Dépendances, filtrez les problèmes par licence (voir [Filtres de la vue Dépendances](#dependencies-view-filters)).
* **Export CSV** : les informations de licence sont incluses lorsque vous [exportez les dépendances au format CSV](#export-dependencies-to-csv).

<Note>Le scan des licences fournit un inventaire destiné à la visibilité et au reporting. Il n’applique pas automatiquement de politiques de conformité des licences.</Note>

## 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](/fr/container-scanning).

## 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](/fr/malware-scanning).

## Bonnes pratiques

<Tip>Activez l’analyse automatique pour détecter les nouvelles vulnérabilités dès leur publication.</Tip>

* **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

<AccordionGroup>
  <Accordion title="Aucune vulnérabilité trouvée mais des dépendances sont présentes">
    **Solution** : vérifiez que les fichiers de dépendances utilisent un format pris en charge et contiennent des informations valides sur les paquets

    **Vérification**: assurez-vous que les fichiers de dépendances ne sont pas corrompus et ne contiennent pas d’erreurs de syntaxe
  </Accordion>

  <Accordion title="Les résultats du scan semblent incomplets">
    **Solution** : vérifiez que tous les fichiers de dépendances sont inclus dans le périmètre du scan

    **Vérification**: vérifiez que les fichiers de dépendances sont correctement formatés et accessibles
  </Accordion>

  <Accordion title="Faux positifs signalés">
    **Solution** : examinez les vulnérabilités en détail afin de déterminer si elles affectent réellement votre application

    **Vérification**: tenez compte des modes d’utilisation et des vecteurs d’attaque propres à votre application
  </Accordion>

  <Accordion title="Les performances de scan sont lentes">
    **Solution** : ce comportement est normal pour les grands projets comportant de nombreuses dépendances

    **Vérification**: envisagez un scan incrémental limité aux fichiers modifiés
  </Accordion>
</AccordionGroup>
