CI/CD geheime blootstelling
Een debug-echo plaatst uw implementatiesleutel in een openbaar buildlogboek.
Wat is CI/CD geheime blootstelling?
Bouwpijplijnen verwerken geheimen en bouwlogboeken zijn openbaarder dan werkstroomauteurs aannemen. Een foutopsporingsstap die een omgevingsgeheim weerspiegelt, drukt dit in platte tekst af. Dezelfde workflow kent vaak een tweede probleem: een titel van een pull-aanvraag die rechtstreeks in een run-stap wordt geïnterpoleerd, waar deze als shell wordt uitgevoerd. Je kopieert een implementatiesleutel uit openbare actielogboeken en duwt ermee, verwijdert vervolgens de echo, stopt met het interpoleren van niet-vertrouwde invoer, zet acties van derden vast door SHA vast te leggen en roteert de sleutel, omdat het maskeren van toekomstige logboeken niets ongedaan maakt.
Wat je leert in CI/CD geheime blootstelling
- Herken het blootleggen van CI/CD-geheimen: een workflowstap die een geheim weergeeft of afdrukt, schrijft het in een buildlogboek, en bij een openbare uitvoering is dat logbestand voor iedereen voor iedereen leesbaar
- Begrijp workflow-scriptinjectie: niet-vertrouwde invoer, zoals een pull-request-titel of vertakkingsnaam geïnterpoleerd in een run-stap, kan worden uitgevoerd als shell-opdrachten in de pijplijn
- Pas de oplossing voor een gelekt geheim toe: verwijder de echo, geef het geheim door een env-variabele met aanhalingstekens zodat deze wordt gebruikt in plaats van afgedrukt, en draai de sleutel omdat deze al in een leesbaar logboek verscheen
- Versterk de pijplijn: bind niet-vertrouwde invoer via geciteerde env-variabelen in plaats van deze te interpoleren in uitvoeringsstappen, en beperk waartoe door pull-request getriggerde uitvoeringen toegang hebben
- Zet acties van derden vast door SHA vast te leggen, zodat een verplaatste tag niet stilletjes kwaadaardige code kan omwisselen, en controleer workflowbestanden op dezelfde echo- en interpolatiepatronen
CI/CD geheime blootstelling — Trainingsstappen
-
Openbare buildlogboeken
Vellmoor bouwt zijn edge-transcoder in de open lucht, zodat de pijplijn van de repository openbaar is, en dat geldt ook voor alles wat er wordt afgedrukt. Bob heeft geen account, uitnodiging of enkele exploit nodig om te starten. Hij opent de loopgeschiedenis en leest.
-
Open een releaserun
Integratie draait alleen op bouwen en testen. De Release-workflow is interessant, omdat een release de productie moet bereiken en voor het bereiken van de productie een referentie nodig is. Bob opent de meest recente releaserun.
-
Vouw de implementatiestap uit
De run is een lijst met stappen, elk samengevouwen. Afrekenen en bouwen zijn routine. De stap die Bob wil is degene die met de productie praat, want daar moet een credential worden gebruikt.
-
Het token, in platte tekst
De stap gaat open en de identificatie is er gewoon. Iemand heeft een regel toegevoegd om het token af te drukken terwijl hij een kapotte implementatie achtervolgde, de implementatie werd gerepareerd en de lijn bleef bestaan. Bob hoeft niets te kraken. Hij selecteert de waarde en kopieert deze.
-
Hoe lang is het al afgedrukt
Eén logregel is één kopie. Bob gaat terug naar de rungeschiedenis en zoekt in de uitvoer van elke run naar het voorvoegsel van het token om erachter te komen hoe lang dit al gebeurt. Het antwoord bepaalt hoeveel mensen het al vast kunnen houden.
-
Wat het token kan bereiken
Voordat hij deze gebruikt, vraagt Bob aan de implementatiedienst van Vellmoor wat deze inloggegevens mogen doen. Hij roept het eindpunt van de omgeving aan met het token in een autorisatieheader. Het antwoord komt zonder enige uitdaging terug en beperkt zich niet tot een testomgeving.
-
Verzend zijn eigen build
Bob hoeft de repository niet aan te raken, een pull-verzoek te openen of op een beoordeling te wachten. Het maakt de implementatieservice niet uit waar een afbeelding vandaan komt, alleen dat de beller een geldig token heeft. Hij richt de productie op een afbeelding in zijn eigen register.
-
Kennis check
Je hebt zojuist een productiereferentie gezien die uit een buildlogboek werd opgehaald zonder dat er sprake was van een exploit. Ontdek hoe het daar terecht is gekomen.
-
De waarschuwing komt binnen
U bent eigenaar van de CI-workflows van Vellmoor. Vanochtend heeft platformbeveiliging beide helften van een slechte nacht gehad: een referentie gevonden in publieke output, en een productie-implementatie die niemand had gepland.
-
Bekijk het op uw eigen pijplijn
Meldingen van een lek zijn één ding. U opent de run waarop de waarschuwing wijst, om te zien wat uw pijplijn daadwerkelijk heeft gepubliceerd.
Dekking van beveiligingsframeworks
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