Aller au contenu principal

Dépôt d’exemple

Une nouvelle organisation n’a rien à analyser tant qu’elle n’a pas poussé de code. Pour voir ce que font les fonctionnalités de sécurité avant cela, un propriétaire de l’organisation peut copier l’exemple de sécurité de fremforge dans l’organisation : un petit dépôt aux dépendances volontairement obsolètes, de sorte que des résultats, des verdicts d’atteignabilité et une pull request de correctif de sécurité apparaissent en quelques minutes.

Le créer

Sur Sécurité › Vue d’ensemble (/<org>/_admin/security/overview), l’élément Couverture des analyses de la liste de démarrage comporte un bouton Essayer avec un dépôt d’exemple. Les propriétaires de l’organisation peuvent l’utiliser ; il est refusé aux auditeurs, comme toute modification.

  • Il crée <org>/fremforge-security-sample, un dépôt privé, et y committe l’exemple en un seul commit signé fremforge. Le dépôt est analysé dès sa création.
  • Une organisation peut avoir un seul dépôt d’exemple. Un nouveau clic indique qu’il existe déjà.
  • Si un dépôt nommé fremforge-security-sample existe déjà, rien n’est créé ; renommez ou supprimez d’abord ce dépôt.
  • Chaque tentative figure dans le journal d’audit sous code-security.sample_repo.created, avec son résultat.

Ce qu’il contient

Le contenu provient d’un commit fixe et relu de l’exemple propre à fremforge. Il contient des manifestes, des fichiers de verrouillage et quelques lignes de code qui appellent les fonctions vulnérables. Le code source des dépendances elles-mêmes n’est pas inclus. Rien n’y est compilé, exécuté ni déployé : il n’y a ni workflow ni Dockerfile. Il est sous licence MIT, et son README nomme les avis qu’il est censé illustrer :

ÉcosystèmePaquetVersionAvisAtteignabilité
npmlodash4.17.20CVE-2021-23337 (injection de commande dans template)atteignable : l’exemple appelle template
npmlodash4.17.20CVE-2020-28500 (ReDoS)aucun chemin d’appel
npmminimist1.2.5CVE-2021-44906 (pollution de prototype)aucun chemin d’appel : listé, jamais importé
Gogolang.org/x/textv0.3.5GO-2021-0113 / CVE-2021-38561 (language.ParseAcceptLanguage)atteignable : l’exemple l’appelle
PyPIPyYAML5.3.1CVE-2020-14343 (exécution de code via full_load)atteignable au niveau de l’import

Les versions épinglées comportent quelques avis de plus que ceux-ci. Chacun a une version corrigée, si bien que Ouvrir une demande de correctif fonctionne pour tous. Si votre organisation a activé les correctifs de sécurité automatiques, des pull requests de correctif s’ouvrent d’elles-mêmes sur l’exemple, comme sur n’importe quel dépôt.

Uniquement dans la console

Les résultats du dépôt d’exemple apparaissent dans la console et l’API, comme les autres. Ils ne quittent jamais fremforge :

L’exemple n’est pas non plus compté dans la couverture des analyses : l’élément de la liste de démarrage demande toujours un dépôt à vous.

Quand il cesse d’être un exemple

L’exemple n’est le contenu de fremforge que tant que sa branche par défaut reste là où fremforge l’a laissée. Dès que quelqu’un pousse sur sa branche par défaut ou y fusionne (fusionner l’une de ses pull requests de correctif compte), il devient un dépôt ordinaire : à partir de là, ses résultats envoient des alertes, des webhooks et des événements SIEM, et comptent dans les chiffres anonymes et dans la couverture des analyses, comme pour tout autre dépôt. Cela est enregistré dans le journal d’audit sous code-security.sample_repo.graduated. Les push vers d’autres branches, comme la branche d’une pull request de correctif, ne changent rien.

Le supprimer

Supprimez le dépôt dans Forgejo lorsque vous avez terminé. fremforge détecte la suppression et oublie l’exemple, si bien que vous pourrez en créer un nouveau plus tard. Le renommer le laisse exemple.