Introduction
GitHub Actions est devenu un pilier pour les développeurs et les équipes DevOps cherchant à automatiser leurs workflows CI/CD. Grâce à l'intégration d'OpenID Connect (OIDC), ces workflows peuvent fédérer avec des services tiers sans que GitHub n'ait à intervenir directement. Toutefois, cette fonctionnalité n'est pas exempte de failles, notamment en ce qui concerne la sécurité liée aux jetons d'identité OIDC.
Le problème des jetons d'identité OIDC
Les jetons d'identité OIDC utilisés dans GitHub Actions permettent aux workflows de s'authentifier auprès de services externes. Cependant, le manque de contraintes d'audience (audience constraints) dans ces jetons représente un risque potentiel. Actuellement, GitHub Actions permet de demander dynamiquement un jeton avec une audience sélectionnée lors de l'exécution, ce qui peut être problématique.
Un exemple concret
Prenons l'exemple de deux workflows sur GitHub Actions. Le premier workflow utilise un jeton OIDC pour s'authentifier auprès de PyPI, tandis que le second fait de même pour un autre service. Sans contraintes d'audience, un attaquant pourrait potentiellement détourner le jeton destiné à PyPI pour l'utiliser à des fins malveillantes sur un autre service.
Comparaison avec GitLab CI/CD
GitLab CI/CD, par exemple, exige que l'audience soit déclarée de manière statique dans la définition de la pipeline. Cela signifie que le jeton ne peut être utilisé que pour l'audience spécifiée, réduisant ainsi les risques de détournement. En comparaison, GitHub Actions offre une flexibilité qui, bien que puissante, peut introduire des vecteurs d'attaque si elle n'est pas correctement utilisée.
Pourquoi les contraintes d'audience sont-elles cruciales ?
Les contraintes d'audience ajoutent une couche de sécurité essentielle en spécifiant explicitement qui est autorisé à accepter le jeton. Cela protège contre l'utilisation malveillante des jetons d'identité et garantit que chaque service ne reçoit que les jetons qui lui sont destinés.
Un appel à l'action pour GitHub
Pour renforcer la sécurité, GitHub devrait envisager d'introduire la possibilité pour les utilisateurs de définir des contraintes d'audience dans leurs workflows. Bien que cela puisse nécessiter des ajustements au niveau du backend, l'impact positif sur la sécurité serait significatif.
Conclusion
L'intégration de contraintes d'audience pour les jetons OIDC dans GitHub Actions est une étape nécessaire pour améliorer la sécurité des workflows CI/CD. Les développeurs et les équipes DevOps doivent être conscients de ces enjeux pour protéger au mieux leurs projets.
Discutons de ton projet en 15 minutes.