Exposition secrète CI/CD
Un écho de débogage place votre clé de déploiement dans un journal de build public.
Qu'est-ce que Exposition secrète CI/CD?
Les pipelines de build gèrent les secrets et les journaux de build sont plus publics que ne le supposent les auteurs de workflows. Une étape de débogage qui fait écho à un secret d’environnement l’imprime en texte brut. Le même flux de travail présente souvent un deuxième problème : un titre de demande d'extraction interpolé directement dans une étape d'exécution, où il s'exécute en tant que shell. Vous allez copier une clé de déploiement à partir des journaux d'actions publics et la pousser, puis supprimer l'écho, arrêter d'interpoler les entrées non fiables, épingler les actions tierces en validant SHA et faire pivoter la clé, car le masquage des futurs journaux n'annule rien.
Ce que vous apprendrez dans Exposition secrète CI/CD
- Reconnaître l'exposition des secrets CI/CD : une étape du flux de travail qui fait écho ou imprime un secret l'écrit dans un journal de build, et lors d'une exécution publique, ce journal est lisible par tous
- Comprendre l'injection de script de workflow : les entrées non fiables telles qu'un titre de demande d'extraction ou un nom de branche interpolé dans une étape d'exécution peuvent s'exécuter en tant que commandes shell dans le pipeline
- Appliquez le correctif pour un secret divulgué : supprimez l'écho, transmettez le secret via une variable d'environnement en le citant afin qu'il soit utilisé plutôt qu'imprimé, et faites pivoter la clé car elle apparaît déjà dans un journal lisible.
- Renforcez le pipeline : liez les entrées non fiables via des variables d'environnement citées au lieu de les interpoler dans les étapes d'exécution, et limitez les accès aux exécutions déclenchées par une demande d'extraction.
- Épinglez les actions tierces en validant SHA afin qu'une balise déplacée ne puisse pas échanger silencieusement du code malveillant et auditez les fichiers de flux de travail pour les mêmes modèles d'écho et d'interpolation.
Exposition secrète CI/CD — Étapes de la formation
-
Journaux de build publics
Vellmoor construit son transcodeur Edge à l'air libre, de sorte que le pipeline du référentiel est public, tout comme tout ce qu'il imprime. Bob n'a pas besoin d'un compte, d'une invitation ou d'un seul exploit pour démarrer. Il ouvre l'historique des courses et lit.
-
Ouvrir une exécution de version
L'intégration exécute uniquement la construction et les tests. Le workflow Release est le plus intéressant, car une version doit atteindre la production, et atteindre la production nécessite un identifiant. Bob ouvre la version la plus récente.
-
Développez l'étape de déploiement
L'exécution est une liste d'étapes, chacune étant réduite. La vérification et la construction sont routinières. L'étape souhaitée par Bob est celle qui concerne la production, car c'est là qu'une accréditation doit être utilisée.
-
Le jeton, en texte brut
L'étape s'ouvre et l'identifiant est simplement là. Quelqu'un a ajouté une ligne pour imprimer le jeton tout en poursuivant un déploiement interrompu, le déploiement a été corrigé et la ligne est restée. Bob n'a rien à craquer. Il sélectionne la valeur et la copie.
-
Depuis combien de temps est-il imprimé
Une ligne de journal est une copie. Bob revient à l'historique d'exécution et recherche dans la sortie de chaque exécution le préfixe du jeton, pour savoir depuis combien de temps cela se produit. La réponse détermine combien de personnes pourraient déjà le détenir.
-
Ce que le jeton peut atteindre
Avant de l'utiliser, Bob demande au service de déploiement de Vellmoor ce que ces informations d'identification sont autorisées à faire. Il appelle le point de terminaison de l'environnement avec le jeton dans un en-tête Authorization. La réponse revient sans contestation, et elle ne se limite pas à un environnement de test.
-
Expédier sa propre version
Bob n'a pas besoin de toucher au référentiel, d'ouvrir une pull request ou d'attendre une révision. Le service de déploiement ne se soucie pas de l'origine d'une image, mais uniquement du fait que l'appelant détient un jeton valide. Il pointe la production vers une image figurant dans son propre registre.
-
Contrôle des connaissances
Vous venez de regarder un identifiant de production extrait d'un journal de build sans aucun exploit impliqué. Verrouillez comment il est arrivé là.
-
L'alerte débarque
Vous possédez les flux de travail CI de Vellmoor. Ce matin, la sécurité de la plateforme a connu les deux moitiés d'une mauvaise nuit : un identifiant trouvé dans la sortie publique et un déploiement en production que personne n'a planifié.
-
Voyez-le sur votre propre pipeline
Les rapports de fuite sont une chose. Vous ouvrez l'exécution des points d'alerte pour voir ce que votre pipeline a réellement publié.
Couverture des référentiels de sécurité
CWE
- CWE-532 Insertion of Sensitive Information into Log File
- CWE-540 Inclusion of Sensitive Information in Source Code
MITRE ATT&CK
- T1552.001 Unsecured Credentials: Credentials In Files
CIS Controls
- CIS 16 Application Software Security
- CIS 8 Audit Log Management
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security
- DE.AE Adverse Event Analysis