Skip to main content
Pour répondre au risque d’attaques et d’altérations visant les GitHub Actions, une mesure de sécurité adoptée jusque par les projets Laravel officiels consiste à épingler (pinning) les actions. Cette page présente concrètement les mesures de sécurité que vous devriez mettre en œuvre en tant que développeur de packages.
Cette page est la sœur de Les bases du développement de packages. Une connaissance de base de l’utilisation de GitHub Actions est supposée.

Risques de sécurité liés à GitHub Actions

Le danger des références par tag

En temps normal, on référence les GitHub Actions par tag, comme ceci :
Les problèmes de cette approche :
  • Les tags sont mobiles — un tag peut être supprimé puis recréé sous le même nom.
  • Risque d’altération — la prise de contrôle du compte du propriétaire du dépôt permet d’injecter du code malveillant.
  • Attaque de la chaîne d’approvisionnement — si une action dont vous dépendez est attaquée, votre workflow est compromis.

Ce que font les projets Laravel officiels

Dans laravel/laravel et laravel/framework, toutes les actions sont épinglées à un hash de commit (SHA).

Stratégie de mise en œuvre du pinning

Étape 1 : créer le fichier de configuration Dependabot

Créez .github/dependabot.yml à la racine du dépôt de votre package. Vous pouvez copier tel quel le fichier de Laravel.
Ce fichier joue les rôles suivants :
  • Analyse automatique — scanne les nouvelles versions des GitHub Actions.
  • Création automatique de PR — crée automatiquement des PR de mise à jour lorsqu’une mise à jour est disponible.
  • Contrôle de la stratégie de mise à jour — les actions non épinglées sont mises à jour par version, les actions épinglées le sont par SHA.

Étape 2 : épingler les actions existantes au SHA

Remplacez toutes les références d’actions dans vos workflows existants par un hash SHA. Cette opération peut être automatisée avec des outils tels que pinact.

Automatisation avec pinact

Modification manuelle

Si pinact n’est pas disponible, consultez la page Lookup latest version de GitHub pour trouver le SHA de commit de chaque action, puis remplacez manuellement.

Étape 3 : activer la configuration Dependabot

Commitez et poussez .github/dependabot.yml dans le dépôt : Dependabot lance automatiquement son analyse.

Mécanisme de mise à jour automatique de Dependabot

Dependabot applique différentes stratégies de mise à jour en fonction de la configuration dans dependabot.yml.

Actions non épinglées

Mise à jour Dependabot : met à jour la plage de versions vers la nouvelle version
Cette approche privilégie la commodité et gère le déplacement de tags, mais les risques de sécurité subsistent.

Actions épinglées

Mise à jour Dependabot : met à jour vers le hash de commit de la nouvelle version
Cette approche est la plus sûre. Même sur une nouvelle version, la référence par hash de commit résiste à l’altération.

Exemple d’implémentation de workflow

Voici un exemple complet lorsque des actions sont utilisées dans plusieurs workflows.

Gérer les PR de mise à jour Dependabot

Voici comment traiter les PR de mise à jour créées par Dependabot.

PR de mise à jour d’une action isolée

Pour ce type de mise à jour simple, procédez ainsi :
  1. Vérifiez le résultat d’exécution du workflow.
  2. Vérifiez l’absence de changements cassants.
  3. Fusionnez.

PR de mise à jour de sécurité

Fusionnez en priorité les mises à jour liées à des correctifs de sécurité.

Mise à jour groupée de plusieurs actions

Lorsque groups est configuré dans dependabot.yml, plusieurs actions sont mises à jour dans une seule PR.
Regrouper toutes les mises à jour d’actions dans une PR unique réduit le nombre de fusions à effectuer.

Avantages et inconvénients du pinning

Avantages

Inconvénients

Checklist d’audit de sécurité

Voici une checklist pour démarrer un nouveau projet de package.
  • Créer .github/dependabot.yml
  • Épingler toutes les actions existantes au SHA
  • Vérification effectuée avec pinact ou manuellement
  • Vérifier que les workflows s’exécutent correctement
  • Revoir les PR Dependabot au moins une fois par semaine
  • Fusionner en priorité les mises à jour de sécurité
  • Toujours référencer par SHA à l’ajout d’une nouvelle action
  • Vérifier l’état de tous les workflows une fois par mois
  • Vérifier que toutes les références d’actions utilisent bien un SHA
  • Vérifier que Dependabot est bien activé
  • Vérifier que toutes les PR Dependabot des 6 derniers mois ont été fusionnées

Pages associées

Les bases du développement de packages

Découvrez comment développer un package Laravel autour d’un service provider.

Gestion de la compatibilité de versions de package

Découvrez la stratégie d’adaptation d’un package aux montées de version majeures de Laravel.
Dernière modification le 13 juillet 2026