Injection de script (workflow)
Injection de script (dans un workflow) : exécution de code choisi par un tiers parce qu'une expression ${{ }} est remplacée dans le texte d'un script avant que le shell ne l'interprète. Un titre de demande de fusion, un nom de branche ou un commentaire contenant $(commande) devient alors une commande exécutée avec le jeton et les secrets du job.
La parade : ne jamais placer d'expression contrôlée par un tiers dans run:, et passer la valeur par une variable d'environnement (env:), que le shell lit comme une donnée. actionlint et zizmor détectent ce motif.
Dans les cours
- GitHub Actions, leçon 3 : Expressions, contextes et sorties
- GitHub Actions, leçon 11 : Sécuriser ses workflows