Aller au contenu

zizmor

À quoi il sert

zizmor lit les workflows et les actions d'un dépôt et signale les configurations qui ouvrent la porte à une attaque : expressions injectables dans des scripts (template-injection), déclencheurs privilégiés (dangerous-triggers), permissions trop larges (excessive-permissions), actions non épinglées (unpinned-uses), identifiants persistés (artipacked), cache utilisable par un job de publication (cache-poisoning). En mode connecté, il interroge aussi l'API de GitHub : commits imposteurs, actions vulnérables connues, étiquettes et branches homonymes.

Quand le choisir

Dans tout dépôt qui contient des workflows, en complément d'actionlint : actionlint vérifie la forme, zizmor le risque. L'action officielle zizmorcore/zizmor-action l'exécute en CI, avec ou sans l'analyse de code de GitHub.

Points d'attention

  • Chaque constat porte une gravité et une confiance : triez-les. Un champ dont le nom se termine par name est signalé comme injectable même quand seul un administrateur peut le modifier.
  • Les profils (--persona=auditor, pedantic) montrent davantage de constats ; le profil par défaut limite les faux positifs.
  • Un commentaire # zizmor: ignore[audit] désactive un constat à un endroit précis : écrivez la justification sur la même ligne.
  • Un workflow propre pour zizmor peut rester dangereux : il ne sait pas, par exemple, que pytest exécute le code d'une demande de fusion.

Par où commencer

uvx zizmor .github/ dans un dépôt, puis la leçon Sécuriser ses workflows.