À propos de la sécurité de la chaîne d’approvisionnement chez GitHub
Lors du développement d’un projet logiciel, vous utilisez probablement d’autres logiciels pour générer et exécuter votre application, comme des bibliothèques open source, des cadres ou d’autres outils. Ces ressources sont collectivement appelées « dépendances », car votre projet dépend d’eux pour fonctionner correctement. Votre projet peut s’appuyer sur des centaines de ces dépendances, formant ce qu’on appelle votre « chaîne d’approvisionnement ».
Votre chaîne d’approvisionnement peut poser un problème de sécurité. Si l’une de vos dépendances a une faiblesse de sécurité connue ou un bogue, les acteurs malveillants peuvent exploiter cette vulnérabilité pour, par exemple, insérer du code malveillant (« programme malveillant »), voler des données sensibles ou provoquer un autre type d’interruption dans votre projet. Ce type de menace est appelé « attaque de chaîne d’approvisionnement ». Le fait d’avoir des dépendances vulnérables dans votre chaîne d’approvisionnement compromet également la sécurité de votre propre projet, et vous placez vos utilisateurs en danger.
L’une des choses les plus importantes que vous pouvez faire pour protéger votre chaîne d’approvisionnement consiste à corriger vos dépendances vulnérables et à remplacer tout programme malveillant.
Vous ajoutez les dépendances directement à votre chaîne d’approvisionnement quand vous les spécifiez dans un fichier manifeste ou un fichier de verrouillage. Les dépendances peuvent également être incluses transitivement ; même si vous ne spécifiez pas une dépendance particulière, mais qu’une de vos dépendances l’utilise, vous êtes également dépendant de cette dépendance.
GitHub Enterprise Server offre une gamme de fonctionnalités pour vous aider à comprendre les dépendances de votre environnement, à connaître les vulnérabilités de ces dépendances et à les corriger.
Les fonctionnalités de la chaîne d’approvisionnement sur GitHub Enterprise Server sont les suivantes :
- Graphe de dépendances
- Vérification des dépendances
- Dependabot alerts
- Dependabot updates
- Dependabot security updates
- Dependabot version updates
Le graphe de dépendances joue un rôle essentiel pour la sécurité de la chaîne d’approvisionnement. Le graphe de dépendances identifie toutes les dépendances en amont et les éléments dépendants en aval publics d’un dépôt ou d’un package. Vous pouvez voir les dépendances de votre dépôt et certaines de leurs propriétés, telles que les informations sur les vulnérabilités, sur le graphe de dépendances du dépôt.
D’autres fonctionnalités de chaîne d’approvisionnement sur GitHub reposent sur les informations fournies par le graphe de dépendances.
- La révision des dépendances utilise le graphe de dépendances pour identifier les modifications de dépendance et vous aider à comprendre l’impact de ces modifications sur la sécurité quand vous passez en revue les demandes de tirage (pull request).
- Dependabot croise les données de dépendance fournies par le graphe de dépendance avec la liste des avertissements publiés dans GitHub Advisory Database, analyse vos dépendances et génère des Dependabot alerts lorsqu'une vulnérabilité potentielle est détectée.
- Les Dependabot security updates utilisent le graphe des dépendances et les Dependabot alerts pour vous aider à mettre à jour les dépendances ayant des vulnérabilités connues dans votre référentiel.
Les Dependabot version updates n’utilisent pas le graphe de dépendances et s’appuient plutôt sur le versioning sémantique des dépendances. Les Dependabot version updates vous aident à maintenir vos dépendances mises à jour, même quand elles n’ont pas de vulnérabilités.
Pour obtenir des guides de bonnes pratiques sur la sécurité de la chaîne d’approvisionnement de bout en bout, y compris la protection des comptes personnels, du code et des processus de génération, consultez « Sécurisation de votre chaîne d’approvisionnement de bout en bout ».
Présentation des fonctionnalités
Qu’est-ce que le graphe de dépendances ?
Pour générer le graphe de dépendances, GitHub examine les dépendances explicites d’un dépôt déclarées dans le manifeste et les fichiers de verrouillage. Quand il est activé, le graphe de dépendances analyse automatiquement tous les fichiers manifestes de package connus dans le dépôt, puis, à partir des informations recueillies, construit un graphe avec les noms et les versions de dépendances connues.
- Le graphe de dépendances inclut des informations sur vos dépendances directes et vos dépendances transitives.
- Le graphe de dépendances est automatiquement mis à jour quand vous poussez (push) un commit vers GitHub qui change ou ajoute un manifeste ou un fichier de verrouillage pris en charge à la branche par défaut et quand toute personne pousse une modification vers le dépôt de l’une de vos dépendances.
- Vous pouvez voir le graphe de dépendances en ouvrant la page principale du dépôt sur GitHub Enterprise Server, puis en accédant à l’onglet Insights.
- Si vous disposez au moins d’un accès en lecture au dépôt, vous pouvez exporter les graphe des dépendances pour le dépôt en tant que nomenclature logicielle compatible SPDX (SBOM), via l’interface utilisateur de GitHub ou l’API REST GitHub. Pour plus d’informations, consultez « Exportation d’une nomenclature logicielle pour votre dépôt ».
De plus, vous pouvez utiliser le API de soumission de dépendances pour soumettre des dépendances à partir du gestionnaire de packages ou de l'écosystème de votre choix, même si l'écosystème n'est pas pris en charge par le graphe des dépendances pour l'analyse des manifestes ou des fichiers de verrouillage. Les dépendances soumises à un projet en utilisant API de soumission de dépendances afficheront le détecteur qui a été utilisé pour leur soumission et la date à laquelle elles ont été soumises. Pour plus d'informations sur les API de soumission de dépendances, consultez « Utilisation de l’API de soumission de dépendances. »
Pour plus d’informations sur le graphe des dépendances, consultez « À propos du graphe de dépendances ».
Qu’est-ce que la révision des dépendances ?
La révision des dépendances aide les réviseurs et les contributeurs à comprendre les modifications de dépendance et leur impact sur la sécurité dans chaque demande de tirage.
- La révision des dépendances vous indique quelles dépendances ont été ajoutées, supprimées ou mises à jour, dans une demande de tirage. Vous pouvez utiliser les dates de publication, la popularité des dépendances et les informations de vulnérabilité pour vous aider à décider s’il faut accepter la modification.
- Vous pouvez voir la révision des dépendances pour une demande de tirage en affichant la différence enrichie sous l’onglet Fichiers modifiés.
Pour plus d’informations sur la révision de dépendances, consultez « À propos de la vérification des dépendances ».
Qu’est-ce que Dependabot ?
Dependabot maintient vos dépendances à jour en vous informant des vulnérabilités de sécurité dans vos dépendances et ouvre automatiquement les demandes de tirage (pull requests) pour mettre à niveau vos dépendances vers la prochaine version sécurisée disponible quand une alerte Dependabot est déclenchée, ou vers la dernière version quand une mise en production est publiée.
Le terme « Dependabot » englobe les fonctionnalités suivantes :
- Dependabot alerts : Notification affichée dans l'onglet Sécurité du référentiel et dans le graphe des dépendances du référentiel. L’alerte contient un lien vers le fichier affecté dans le projet et des informations sur une version corrigée.
- Dependabot updates :
- Dependabot security updates : Mises à jour déclenchées pour mettre à niveau vos dépendances vers une version sécurisée lorsqu'une alerte est déclenchée.
- Dependabot version updates : Mises à jour programmées pour maintenir vos dépendances à jour avec la dernière version.
Les Dependabot security updates et les Dependabot version updates nécessitent que GitHub Actions s’exécute sur GitHub Enterprise Server. Les Dependabot alerts ne nécessitent pas GitHub Actions. Pour plus d’informations, consultez « Activation de Dependabot pour votre entreprise ».
Les Dependabot security updates peuvent corriger les dépendances vulnérables dans GitHub Actions. Lorsque les mises à jour de sécurité sont activées, Dependabot déclenche automatiquement une demande de tirage pour mettre à jour les GitHub Actions vulnérables utilisées dans vos workflows vers la version corrigée minimale. Pour plus d’informations, consultez « À propos des mises à jour de sécurité Dependabot »
Qu’est-ce que les alertes Dependabot ?
Les Dependabot alerts mettent en évidence les référentiels affectés par une vulnérabilité nouvellement découverte sur la base du graphe de dépendance et des GitHub Advisory Database, qui contiennent des avertissements pour des vulnérabilités connues.
- Dependabot effectue une analyse pour détecter les dépendances non sécurisées et émet des Dependabot alerts quand :
- Les nouvelles données d’avertissement sont synchronisées avec votre instance chaque heure à partir de GitHub.com. Pour plus d’informations, consultez « Exploration des avis de sécurité dans la base de données GitHub Advisory ».
- Le graphe de dépendances d’un dépôt change.
- Dependabot alerts sont affichées sous l’onglet Sécurité du référentiel et dans le graphe des dépendances du référentiel. L’alerte contient un lien vers le fichier affecté dans le projet et des informations sur une version corrigée.
Pour plus d’informations, consultez « À propos des alertes Dependabot ».
Qu’est-ce que les mises à jour Dependabot ?
Il existe deux types de Dependabot updates : les mises à jour de version et les mises à jour de sécurité Dependabot. Dependabot génère des demandes de tirage automatiques pour mettre à jour vos dépendances dans les deux cas, mais il existe plusieurs différences.
Dependabot security updates :
- Déclenchées par une alerte Dependabot
- Mettent à jour les dépendances vers la version minimale qui résout une vulnérabilité connue
- Prises en charge pour les écosystèmes pris en charge par le graphe de dépendances
- Ne nécessite pas de fichier de configuration, mais vous pouvez en utiliser un pour remplacer le comportement par défaut
Dependabot version updates :
- Requiert un fichier de configuration
- Exécutées selon une planification que vous configurez
- Mettent à jour les dépendances vers la dernière version qui correspond à la configuration
- Prises en charge pour un autre groupe d’écosystèmes
Pour plus d’informations sur Dependabot updates, consultez « À propos des mises à jour de sécurité Dependabot » et « À propos des mises à jour de version Dependabot ».
Disponibilité des fonctionnalités
-
Graphe des dépendances et Dependabot alerts : non activés par défaut. Les deux fonctionnalités sont configurées au niveau de l’entreprise par le propriétaire de l’entreprise. Pour plus d’informations, consultez « Activation du graphe de dépendances pour votre entreprise » et « Activation de Dependabot pour votre entreprise ».
-
Révision des dépendances : disponible quand le graphe de dépendances est activé pour votre instance et Advanced Security est activé pour l’organisation ou le référentiel. Pour plus d’informations, consultez « À propos de GitHub Advanced Security ».
-
Dependabot security updates : non activées par défaut. Vous pouvez activer les Dependabot security updates pour n’importe quel dépôt qui utilise les Dependabot alerts et le graphe de dépendances. Pour plus d’informations sur l’activation des mises à jour de sécurité, consultez « Configuration des mises à jour de sécurité Dependabot ».
-
Dependabot version updates: Non activé par défaut. Les personnes disposant d’autorisations d’écriture sur un dépôt peuvent activer les Dependabot version updates. Pour plus d’informations sur l’activation des mises à jour de versions, consultez « Configuration de mises à jour de version Dependabot ».