Accueil > Retour d’expérience sur l’utilisation de GitHub Advanced Security (GHAS)
Wafaa TOUNZI
10 avril 2025

Retour d’expérience sur l’utilisation de GitHub Advanced Security (GHAS)

Introduction

Intégrer la sécurité dans une plateforme aussi largement adoptée que GitHub représente à la fois un défi et une réelle opportunité de renforcer sa résilience. Sécuriser les applications dès les premières étapes du développement est désormais indispensable, afin de faire de la sécurité un processus proactif plutôt que réactif.

Cet article explore GitHub Advanced Security (GHAS), une suite d’outils conçus pour aider les développeurs et les organisations à identifier les vulnérabilités, à gérer les dépendances, à appliquer les meilleures pratiques, le tout sans nécessiter d’intervention manuelle dans chaque flux de travail. Mais GHAS tient-il vraiment ses promesses ?

 

Qu’est-ce que GitHub Advanced Security (GHAS)?

GHAS est une fonctionnalité gratuite sur les dépôts publics, c’est également un module complémentaire pour GitHub Enterprise Cloud (GHEC) et GitHub Enterprise Server (GHES), qui fournit aux développeurs et aux professionnels de la sécurité un puissant ensemble d’outils de sécurité. Il s’intègre de manière transparente et offre des fonctionnalités telles que:

  • Code Scanning  : détecte les failles de sécurité dans votre code source à l’aide de CodeQL.
  • Secret Scanning: identifie et empêche les secrets codés en dur d’être exposés ou poussés dans les commits.
  • Dependabot : déclenche des alertes et veille à ce que les dépendances soient sécurisées et à jour.
  • Dependency Graph : est une fonctionnalité de GitHub qui cartographie toutes les dépendances d’un dépôt. Dependabot utilise ces informations pour surveiller les vulnérabilités de sécurité dans ces dépendances.
  • Security Overview: un tableau de bord fournissant une visibilité sur les risques de sécurité à travers les dépôts.
  • Security Policies (SECURITY.md) : définit les protocoles de sécurité et les lignes directrices pour la gestion des vulnérabilités.

 

1. GHAS dans les dépôts publics et privés

GitHub offre déjà de nombreuses fonctionnalités de sécurité gratuitement, en particulier pour les dépôts publics. Le tableau ci-dessous représente les différentes fonctionnalités entre les dépôts publics et privés avec ou sans licence GHAS.

Feature Public Repositories Private Repositories (without GHAS License) Private Repositories (with GHAS license)
Dependency Graph Enabled Enabled Enabled
Dependabot Alerts Enabled Enabled Enabled
Dependabot Security Updates Enabled Enabled Enabled
Code Scanning Enabled Not Available Enabled
Secret Scanning Enabled Not Available Enabled
Security Overview Enabled Not Available Enabled
Security Policies (SECURITY.md) Enabled Not Available Enabled

 

2. Nouveau modèle de licence : Unbundled GHAS

GitHub a également annoncé qu’à partir du 1er avril 2025, GitHub Advanced Security (GHAS) sera décomposé en deux produits autonomes :

  1. GitHub Secret Protection : Ce produit se concentre sur la détection et la prévention des fuites de secrets avant qu’elles ne se produisent. Il comprend des fonctionnalités telles que la protection push, l’analyse des secrets, la détection assistée par l’IA avec un faible taux de faux positifs et des informations sur la sécurité. GitHub Secret Protection sera disponible au prix de 19 dollars par mois et par contributeur actif.
  2. Sécurité du code GitHub : Cette offre vise à aider les développeurs à identifier les vulnérabilités et à y remédier plus efficacement. Elle comprend des fonctionnalités telles que l’analyse de code, Copilot Autofix, les campagnes de sécurité, Dependency Review Action, etc. GitHub Code Security sera proposé au prix de 30 dollars par mois et par committer actif.

GitHub permettra aux clients d’acheter ces produits sans abonnement GitHub Enterprise, rendant ainsi les fonctions de sécurité avancées plus accessibles aux organisations, quelle que soit leur taille.

Pour plus d’informations, vous pouvez accéder à l’annonce officielle de GitHub via le lien fourni à la fin de cet article.

 

3. GHAS Présentation des fonctionnalités

Security Overview

Security Overview est un centre de contrôle pour la visualisation et la gestion des risques de sécurité dans les référentiels. Il fournit :

  • Un tableau de bord centralisé pour suivre les vulnérabilités dans tous les référentiels
  • Des statistiques et des informations sur les alertes de sécurité non résolues
  • La possibilité d’appliquer des politiques de sécurité à l’échelle de l’organisation

Secret Scanning

Secret Scanning est l’une des fonctions essentielles du GHAS, conçue pour empêcher l’exposition accidentelle d’informations sensibles telles que les clés d’API, les mots de passe et les jetons. Il analyse en permanence les référentiels à la recherche de modèles de secrets connus et alerte, par courrier et notifications, lorsqu’un secret est détecté.

Principaux avantages :

  • Prévention proactive des fuites : détecte les secrets en temps réel avant qu’ils ne soient transmis à la production. L’une des fonctions les plus proactives de Secret Scanning est la possibilité de bloquer une mise en production lorsqu’un secret très probable est détecté.

 

  • Intégration avec les fournisseurs de services Cloud : Alerte les fournisseurs de services Cloud(AWS, Azure, Google Cloud) lorsque leurs informations d’identification, avec un certain modèle d’expressions rationnelles, sont détectées. Cela leur permet de révoquer et de remplacer les clés compromises.
  • Analyse d’historique complète : peut analyser l’historique d’un référentiel entier pour détecter les secrets archivés dans le passé.

Gestion des Secret Scanning Alerts :

Lorsqu’un secret est détecté, GitHub propose des options pour gérer efficacement les alertes :

  1. Faux positif : si la chaîne détectée n’est pas réellement un secret.
  2. Utilisé dans les tests : un secret intentionnellement engagé (exemple : jeton de test), de cette façon les développeurs peuvent rejeter l’alerte avec une justification.
  3. Révoquée : une fois que la rotation du secret exposé a été correctement faite et qu’il a été supprimé, l’alerte peut être marquée comme résolue.
  4. Non réparable : lorsque l’alerte n’est pas pertinente.

 

Code Scanning

Code Scanning est la fonction la plus importante du GHAS, qui permet de détecter et de corriger les vulnérabilités de sécurité dans le code source avant qu’il n’atteigne la production. Elle utilise CodeQL, le moteur d’analyse de code développé par GitHub, pour analyser le code à la recherche de problèmes de sécurité connus et de violations des meilleures pratiques.

Principaux avantages :

  • Détection précoce des problèmes de sécurité : identifie les vulnérabilités avant qu’elles ne deviennent des problèmes critiques. Il donne suffisamment de détails sur les problèmes détectés pour que vous puissiez les gérer.
  • Analyse personnalisable et intégration transparente avec  GitHub Actions : les développeurs peuvent exécuter un  pipeline CodeQL par défaut ou rédiger des requêtes CodeQL personnalisées pour détecter les problèmes de sécurité propres à l’organisation (voir l’exemple de fichier yaml ci-dessous).
  • Prise en charge de plusieurs langages de programmation : comme JavaScript, Python, C, Java, C++, Go,…

Gestion des Code Scanning Alerts:

  1. Examen des alertes : chaque vulnérabilité détectée est présentée sous la forme d’une alerte assortie d’un indice de gravité et de suggestions de correction. L’alerte apparaît non seulement dans le tableau de sécurité mais aussi dans l’onglet « Pull Request ».
  2. Corriger les problèmes de manière proactive : Les corrections suggérées, en plus des corrections automatiques utilisant Copilot Auto-Fix, aident les développeurs à résoudre les vulnérabilités rapidement avant de fusionner les PR.
  3. Rejeter les faux positifs ou les tests : les développeurs peuvent rejeter les alertes qui ne sont pas applicables ou qui sont juste utilisées pour des tests, en fournissant une justification pour l’action.

 

Exemple de fichier CodeQL.yml pour une application Angular

name: CodeQL.yml

on:

  push:

    branches: [main]

  pull_request:

    branches: [main]

jobs:

  analyze:

    name: CodeQL Analysis

    runs-on: ubuntu-latest

    permissions:

      actions: read

      contents: read

      security-events: write

    steps:

    – name: Checkout repository

      uses: actions/checkout@v4

    – name: Set up Node.js

      uses: actions/setup-node@v4

      with:

        node-version: ‘lts/*’

    – name: Initialize CodeQL

      uses: github/codeql-action/init@v3

      with:

        languages: javascript-typescript

        build-mode: auto

    – name: Perform CodeQL Analysis

      uses: github/codeql-action/analyze@v3

      with:

        category: /language:javascript-typescript

 

Dependabot

Il s’agit de l’outil de surveillance intégré à GitHub. Il analyse automatiquement les fichiers de dépendance et alerte les utilisateurs en cas de découverte d’une faille de sécurité ou d’une version obsolète d’un paquet.

Principaux avantages :

  • Détection automatisée des vulnérabilités : analyse les fichiers de dépendance à la recherche de vulnérabilités connues dans les bibliothèques tierces.
  • Pull Requests automatiques : Crée des PR avec les mises à jour de sécurité nécessaires.
  • Prise en charge de plusieurs gestionnaires de paquets : Fonctionne avec npm, Nuget, Maven, Gradle, Python (pip), et plus encore. Vous pouvez ajouter leurs registres dans le fichier dependabot.yml.
  • Configuration via dependabot.yml : Permet un contrôle personnalisé et fin de la fréquence des mises à jour et de la version des paquets.

 

Dependabot.yml:

 

version: 2

updates:

  – package-ecosystem: « nuget »

    directory: « / »

    schedule:

      interval: « weekly »

      day: « sunday »

    target-branch: « main »

    open-pull-requests-limit: 5

    labels:

      – « dependencies »

      – « nuget »

  – package-ecosystem: « npm »

    directory: « / »

    schedule:

      interval: « weekly »

      day: « sunday »

    target-branch: « main »

    open-pull-requests-limit: 5

    labels:

      – « dependencies »

      – « npm »

Politiques de sécurité

Les projets peuvent inclure un fichier SECURITY.md à la racine de leur dépôt. Ses principaux avantages sont les suivants

  • Définir comment les vulnérabilités de sécurité doivent être signalées.
  • Fournir des lignes directrices pour le traitement des problèmes de sécurité.
  • Définir les meilleures pratiques de sécurité pour les contributeurs.
  • Pour les projets open-source, un fichier SECURITY.md bien documenté renforce la transparence et la confiance.

 

 

 

SECURITY.md

# Security Policy

## Reporting a Vulnerability

If you discover a security issue in this project, please report it by emailing `securityteam@cellenza.com`.

Please include the following details:

– Description of the issue

– Steps to reproduce the issue

– Any potential impacts

We will acknowledge your email within 48 hours and provide a resolution timeline.

## Supported Versions

We address vulnerabilities in the following versions:

– `v2.x` (current)

– `v1.x` (security updates only)

 

Retour d’expérience objectif

GitHub Advanced Security (GHAS) offre des informations de sécurité pertinentes sur GitHub comme sur Azure DevOps lorsqu’il est activé dans les paramètres du projet. Toutefois, l’intégration avec GitHub se révèle plus avancée et personnalisable que celle proposée pour Azure DevOps, ce qui en fait une solution plus performante pour la gestion de la sécurité.

Bien que GitHub offre un certain niveau de personnalisation, il présente encore certaines limites :

  • Restrictions dans Security Overview: GHAS ne dispose pas d’un tableau de bord consolidé pour les organisations disposant de plusieurs référentiels. Idéalement, il serait plus efficace que chaque dépôt dispose de la même structure et des mêmes mesures pour l’aperçu de la sécurité, au lieu d’un tableau de bord simple et minimal sans statistiques.
  • Personnalisation limitée des permissions : Le rôle de contributeur accorde aux utilisateurs des droits de sécurité et des autorisations étendues dans GHAS, au lieu de restreindre les actions liées à la sécurité à un rôle opérationnel dédié à la sécurité.
  • Limitations dans GitHub Actions Path Ignore : pour la tâche de filtrage de fichiers CodeQL, la fonctionnalité « paths-ignore » n’est pas totalement efficace pour certaines piles techniques, ce qui limite sa capacité à exclure sélectivement des fichiers ou des répertoires des analyses de sécurité. Pour contourner cette limitation, vous devrez utiliser l’action Filter SARIF du Marketplace de GitHub : Filter SARIF · Actions · GitHub Marketplace

 

Malgré ces limites, GHAS fonctionne comme une équipe de sécurité proactive intégrée à GitHub, analysant en continu le code, les dépendances et les secrets afin de réduire les risques avant qu’ils ne prennent de l’ampleur. Par ailleurs, ce découpage en deux produits offre aux organisations une flexibilité accrue pour adopter uniquement les fonctionnalités de sécurité pertinentes, sans engagement sur l’ensemble de la suite GHAS.

Référence pour l’annonce de dégroupage : Evolving GitHub Advanced Security: Greater flexibility, easier to access – GitHub Resources

Référence pour l’aperçu des caractéristiques du GHAS : GitHub security features – GitHub Docs

 

 

Vous avez envie de rejoindre Cellenza ?

Vous souhaitez rejoindre un cabinet de conseil engagé dans la RSE, reconnu pour son très haut niveau d’expertise ? Retrouvez tous nos postes ouverts sur notre site Carrière et n’hésitez pas à contacter notre équipe Recrutement !

RECRUTEMENT ENCART OFFRE D'EMPLOI

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.