Skip to content
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Comment évaluer le niveau de sécurité d’un projet sur Github ?

Je traine beaucoup sur Github et l’une de mes tâches consiste à y trouver des outils cool que je partage avec vous directement ici ou avec les gens qui me soutiennent via Patreon. Je dois donc vérifier que le projet est sérieux, qu’il est maintenu et qu’on peut faire confiance au code qui s’y trouve.

Seulement voilà, je ne suis pas tout le temps là, avec vous, à regarder les mêmes projets. Alors, comment faire pour évaluer le sérieux d’un projet open source disponible sur Github ?

Et bien grâce à l’outil Scoreboard qui permet d’automatiser l’analyse et faciliter la prise de décision, particulièrement sur l’aspect sécurité des projets Github.

À partir d’une URL de dépôt ou du nom d’un package, Scoreboard contrôle les points suivants :

  • Le projet a-t-il reçu des commits au cours des 90 derniers jours ?
  • Le projet utilise-t-il des outils pour mettre à jour automatiquement ses dépendances ?
  • Le projet est-il exempt de binaires check-in ?
  • Le projet utilise-t-il la protection des branches ?
  • Le projet exécute-t-il des tests dans CI, par exemple GitHub Actions, Prow ?
  • Le projet dispose-t-il d’un badge des meilleures pratiques de l’IIC ?
  • Le projet exige-t-il une revue de code avant que le code ne soit fusionné ?
  • Le projet compte-t-il des contributeurs d’au moins deux organisations différentes ?
  • Le projet utilise-t-il des outils de fuzzing, par exemple OSS-Fuzz ?
  • Le projet déclare-t-il et gèle-t-il les dépendances ?
  • Le projet construit-il et publie-t-il des paquets officiels à partir de CI/CD, par exemple GitHub Publishing ?
  • Le projet utilise-t-il les Pull Requests pour tous les changements de code ?
  • Le projet utilise-t-il des outils d’analyse statique du code, par exemple CodeQL, SonarCloud ?
  • Le projet contient-il une politique de sécurité ?
  • Le projet signe-t-il les versions de manière cryptographique ?
  • Le projet signe-t-il de manière cryptographique les balises des versions ?
  • Le projet déclare-t-il les jetons de workflow GitHub en lecture seule ?
  • Le projet présente-t-il des vulnérabilités non corrigées ?

Pas mal de questions à se poser pour évaluer si le code présent sur Github est suffisamment sûr pour être utilisé dans le cadre de votre projet.

Évidemment, cela ne fait pas tout, mais c’est une bonne étape préliminaire avant d’engager des frais pour faire auditer le code par exemple.

Pour que l’outil Scoreboard fonctionne correctement, vous devrez créer une clé personnelle chez Github, puis l’exporter comme ceci :

export GITHUB_AUTH_TOKEN=<VOTRE_CLÉ>

Lancez ensuite la commande comme ceci pour évaluer un dépôt en particulier (ici le dépôt de youtube-dl pour l’exemple) :

./scorecard --repo https://github.com/ytdl-org/youtube-dl

Après plusieurs secondes, vous obtiendrez alors un rapport de l’état du projet.

Si vous voulez plus de détails, utilisez le paramètre –show-details comme ceci :

./scorecard --repo https://github.com/ytdl-org/youtube-dl --show-details

J’ai testé le dépôt de scoreboard avec scoreboard est le résultat n’est pas loin de la perfection. 😉

Pour plus d’infos, je vous invite à consulter la page du projet ainsi que sa documentation ici.


Les articles du moment