Traitez votre pipeline CI et vos dépendances comme une surface d'attaque_
La sécurité de la chaîne d'approvisionnement ne se limite pas aux packages vulnérables. Elle inclut également le verrouillage des actions, la portée des jetons, la confiance dans les artefacts et la séparation des flux de travail privilégiés.
La plupart des équipes considèrent le risque de chaîne d'approvisionnement comme "est-ce que npm audit a trouvé quelque chose de mauvais ?"
C'est une petite partie du problème.
Un pipeline de livraison JavaScript moderne fait confiance à :
les packages que vous installez
les packages transitifs qu'ils installent
les GitHub Actions que vous exécutez
les jetons auxquels ces flux de travail peuvent accéder
C'est une surface d'attaque significative, surtout une fois que CI a la permission de commenter sur les PR, de publier des packages, de déployer des infrastructures ou de pousser sur la branche par défaut.
La première victoire facile : Fixer les actions externes
C'est plus faible que ce que de nombreuses équipes réalisent :
uses: vendor/example-action@v2
Le tag peut être modifié.
Si vous dépendez d'actions tierces, fixez un SHA de commit complet et examiné les mises à jour intentionnellement :