Accueil > La sécurité dans GitHub
Faissal Salami
27 octobre 2022
Read this post in English

La sécurité dans GitHub

La sécurité dans GitHub

GitHub est un référentiel de codes sources privés ou publics qui permet aux développeurs de les héberger et les partager.

Il peut y avoir un risque accru de fuite des informations dites sensibles qui peuvent être dévoilées accidentellement ou inconsciemment vers cette plateforme : c’est le cas, par exemple, des clés API mais également des informations d’identification et d’autres chaînes d’authentification numérique.

Selon une étude de GitGuardian, il existe une forte augmentation de la présence des secrets dans les codes sources d’environ 50% depuis 2020.

Plusieurs grands groupes ont subi des incidents de sécurité à la suite de fuite et découverte de secrets dans les référentiels des employés.

Récemment, la compagnie Toyota a indiqué que les informations personnelles des clients pouvaient avoir été exposées après qu’une clé d’accès a été rendue publique dans leur dépôt pendant 5 ans.

Également, certains projets utilisent des dépendances, ce qui les expose à des vulnérabilités.

GitHub propose plusieurs fonctions intégrées afin de sécuriser les projets :

  • Secret scanning
  • Code scanning
  • Dependabot :
    • Dependabot alerts
    • Dependabot security updates
    • Dependabot version update

 

Fonctionnalités intégrées à GitHub

 

Les fonctionnalités intégrées de GitHub peuvent sécuriser les secrets et le code. GitHub propose certaines fonctionnalités intégrées à l’offre de base, d’autres nécessitent une licence « GitHub Advanced Security ».

Le tableau ci-dessous résume la disponibilité des fonctionnalités de sécurité avancées de GitHub pour les référentiels publics et privés.

Documentation GitHub

Source : Documentation Github

 

Il est possible d’activer les fonctionnalités, soit au niveau référentiel soit au niveau organisationnel.

 

Secret scanning

 

Certains projets nécessitent une connexion avec des applications. Lors de l’utilisation de Terraform, il est possible d’utiliser une App registration pour effectuer un déploiement par exemple. Malheureusement, si le code est poussé avec toutes les informations de l’App registration, toutes les personnes ayant accès au dépôt peuvent utiliser ces informations pour accéder à Azure dans ce cas-là.

Le secret scanning est une fonction qui permet d’effectuer une analyse des dépôts à la recherche de tokens ou de clés d’authentification.

Grâce au partenariat avec plusieurs fournisseurs (AWS, Azure, GCP, Databricks, Atlassian, etc.), GitHub a pu constituer une base de données, ce qui permet à l’outil de reconnaître la forme des identifiants.

Exemple de données prises en charge par les fournisseurs :

GitHub données prises en charge par les fournisseurs

Source : Documentation Github

 

Le scan se fait de manière automatique sur l’ensemble de l’historique Git sur toutes les branches.

Lors de la détection d’un secret, GitHub envoie une notification par mail aux administrateurs du dépôt, au propriétaire de l’organisation, à l’auteur qui a poussé dans GitHub, et il notifie le fournisseur de service qui a émis le secret.

Lorsque le fournisseur est notifié qu’un secret est compromis, il peut le révoquer, générer un nouveau secret ou contacter l’utilisateur.

La liste des secrets est visible dans l’interface.

Document Microsoft secrets visibles dans l'interface Github

Source : Documentation Microsoft 

 

Quand le secret a été poussé dans le dépôt, il doit être considéré comme compromis. Il faut donc :

  • Générer un nouveau secret.
  • Mettre à jour le secret sur toutes les applications.
  • Supprimer le secret compromis.
  • Résoudre l’alerte dans Git.

GitHub a ajouté en version bêta le « Push Protection » pour les offres GitHub Enterprise Server et Cloud Enterprise. Cette option permet d’analyser la présence d’un secret au moment de pousser le code. Si un secret est détecté, l’auteur est informé afin qu’il puisse supprimer avant qu’il soit poussé dans le dépôt.

 

Code scanning

 

Le code scanning effectue une analyse du code afin de détecter les vulnérabilités ou des erreurs de manière automatique.

L’analyse peut se faire de manière périodique via une tâche planifiée ou lors d’un événement spécifique, par exemple lorsqu’un développeur pousse son code.

Il permet de trier et hiérarchiser les correctifs pour les problèmes présents dans votre code. Il empêche aussi les développeurs de reproduire de nouvelles erreurs.

Le CodeQL est le moteur qui permet d’effectuer cette analyse, qui a été développé par GitHub.

Il existe deux façons d’utiliser le Code QL :

  • Ajouter le workflow CodeQL à votre référentiel. GitHub/codeql-action est utilisé pour exécuter l’interface CLI CodeQL.
  • Exécuter l’interface CLI CodeQL directement dans un système d’intégration externe et charger les résultats dans GitHub.

CodeQL prend en charge les langages compilés et interprétés suivants :

C/C++, C#, Go, Java, JavaScript, TypeScript, Python et Rubis

 

Dependence

 

Certains projets dépendent d’applications tierces, ce qui peut poser un problème de sécurité si les dépendances ont des vulnérabilités.

GitHub propose des outils pour vous aider à connaitre les vulnérabilités et les corriger :

  • Dependency graph: permet de surveiller le code à la recherche de manifestes de dépendances. Il est généré automatiquement pour les dépôts publics.
  • Dependency review: indique quelles dépendances ont été ajoutées, supprimées ou mises à jour dans une pull request.
  • Dependabot: il s’agit d’un service qui permet de mettre à jour automatiquement les dépendances. Il le fait en analysant les dépôts et en créant une pull request automatisée si un élément peut être mis à niveau. Pour que Dependabot fonctionne, le graphe des dépendances doit être activé.
    • Dependabot alerts: elles alertent des vulnérabilités des dépendances dans les dépôts publics.
    • Dependabot security updates: elles mettent à jour ou génèrent automatiquement une pull request pour mettre à jour les dépendances vulnérables.
    • Dependabot version updates: met à jour automatiquement tous les packages utilisés par votre dépôt.

 

Il est donc nécessaire de mettre en place certaines fonctionnalités qui ont une facilité d’activation en prévention d’éventuelles erreurs.

 

Vous souhaitez en savoir plus sur la sécurité dans le Cloud ? N’hésitez pas à contacter nos experts !

Vous pouvez également consulter tous les articles de cette série du Mois de la Sécurité dans le Cloud :

 

accompagnement securite Cloud Cyber Cellenza

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.