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
nameest 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
pytestexé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.