L’issue s’ouvre déjà remplie avec le titre et l’adresse de cette page.
Vous écrivez probablement actions/checkout@v7 dans vos workflows, comme tout
le monde. Ce suffixe paraît anodin : c'est en réalité une référence mobile,
et elle a déjà servi à des attaques réelles contre des milliers de dépôts.
Cette page explique le mécanisme, puis la parade, qui tient en une ligne de
YAML.
Le suffixe @v4 que l'on voit partout dans les workflows désigne un tag
Git. Derrière cette habitude anodine se cache une référence mobile, une
faille structurelle que cette section décortique, d'abord par l'image, puis en
termes techniques.
Un tag Git comme @v7 n'est qu'une étiquette posée sur un commit, et
rien ne la fixe. Quiconque dispose d'un accès en écriture au dépôt peut la
déplacer vers un autre commit, y compris vers du code publié après votre
dernière relecture. Votre workflow, lui, continuera de demander « la v7 ».
Ce n'est pas de la science-fiction. En mars 2025, l'action populaire
tj-actions/changed-files a été compromise exactement de cette façon.
Le jour 1, le tag @v4 pointe vers le commit abc123, légitime et validé ; le jour 30, le tag est déplacé vers le commit xyz789, malveillant ; le jour 31, votre workflow qui utilise action@v4 exécute xyz789 et se fait voler ses secrets, GITHUB_TOKEN compris.tag déplacé !Jour 1tag @v4Commit abc123code légitime, testé, validéJour 30tag @v4Commit xyz789code malveillant, vole vos secretsJour 31 : votre workflowuses: action@v4 → xyz789Secrets volés !GITHUB_TOKEN, etc.
Plutôt que de faire confiance à une étiquette mobile, désignez le commit
par son empreinte cryptographique, le SHA. Vous ne demandez plus « la
dernière v7 », vous demandez cette révision précise, celle que vous avez
relue.
# ❌ Dangereux : tag mutable, peut changer à tout moment
- uses: actions/checkout@v4
# ✅ Sécurisé : SHA immuable, toujours le même code
Pourquoi le commentaire # v4.2.2 ? Il indique à quelle version
correspond ce SHA. C'est purement informatif pour vous (et Dependabot), mais
c'est le SHA qui compte pour la sécurité.
L'épinglage a une contrepartie qu'il faut assumer : un SHA figé ne
reçoit aucun correctif. Les actions publient pourtant des mises à jour de
sécurité, et votre pipeline doit les suivre. Toute la question est de le faire
sans revenir aux tags mobiles.
Dependabot surveille vos dépendances
et crée automatiquement des Pull Requests quand de nouvelles versions sont
disponibles :
.github/dependabot.yml
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"# Vérifie chaque semaine
cooldown:
default-days: 7# Quarantaine : jamais une version publiée le jour même
commit-message:
prefix: "ci"# Préfixe des commits : "ci: ..."
Comment ça marche : Dependabot
détecte le commentaire # v4.2.2 dans vos workflows. Quand v4.2.3 sort, il
crée une PR qui met à jour le SHA et le commentaire. Vous n'avez qu'à review
et merger !
Vérifiez que l'essentiel de ce guide est acquis. Les questions portent
uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
6 questions
6 min.
70% requis
Informations
Le chronomètre démarre au clic sur Démarrer
Questions à choix multiples, vrai/faux et réponses courtes
Vous pouvez naviguer entre les questions
Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
⏱️--:--
0 / 6
Vérification
(0/0)
--:--
0%
0Correctes
0À revoir
0:00Temps
-Niveau
Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.