Esposizione segreta CI/CD
Un'eco di debug inserisce la chiave di distribuzione in un registro di compilazione pubblico.
Cos’è Esposizione segreta CI/CD?
Le pipeline di build gestiscono i segreti e i log di build sono più pubblici di quanto presuppongono gli autori del flusso di lavoro. Un passaggio di debug che fa eco a un segreto d'ambiente lo stampa in testo normale. Lo stesso flusso di lavoro spesso presenta un secondo problema: il titolo di una richiesta pull interpolato direttamente in una fase di esecuzione, dove viene eseguito come shell. Copierai una chiave di distribuzione dai log delle azioni pubbliche e la invierai, quindi rimuoverai l'eco, smetterai di interpolare input non attendibili, bloccherai azioni di terze parti tramite commit SHA e ruoterai la chiave, perché mascherare i log futuri non annulla nulla.
Cosa imparerai in Esposizione segreta CI/CD
- Riconoscere l'esposizione dei segreti CI/CD: un passaggio del flusso di lavoro che riproduce o stampa un segreto lo scrive in un registro di compilazione e, durante un'esecuzione pubblica, tale registro è leggibile da chiunque
- Comprendere l'iniezione di script del flusso di lavoro: input non attendibili come un titolo di richiesta pull o un nome di ramo interpolato in una fase di esecuzione può essere eseguito come comandi shell nella pipeline
- Applica la correzione per un segreto trapelato: rimuovi l'eco, passa il segreto attraverso una variabile env con virgolette in modo che venga utilizzato anziché stampato e ruota la chiave perché è già apparsa in un registro leggibile
- Rafforzare la pipeline: associare l'input non attendibile tramite variabili env tra virgolette invece di interpolarlo in passaggi di esecuzione e limitare ciò a cui possono accedere le esecuzioni attivate da pull-request
- Blocca le azioni di terze parti tramite commit SHA in modo che un tag spostato non possa scambiarsi silenziosamente codice dannoso e controlla i file del flusso di lavoro per gli stessi modelli di eco e interpolazione
Esposizione segreta CI/CD — Fasi della formazione
-
Registri di build pubblici
Vellmoor costruisce il suo transcodificatore edge all'aperto, quindi la pipeline del repository è pubblica, così come tutto ciò che stampa. Bob non ha bisogno di un account, di un invito o di un singolo exploit per iniziare. Apre la cronologia delle corse e legge.
-
Aprire un'esecuzione di rilascio
L'integrazione esegue solo la creazione e il test. Il flusso di lavoro di rilascio è quello interessante, perché un rilascio deve raggiungere la produzione e raggiungere la produzione richiede una credenziale. Bob apre l'esecuzione del rilascio più recente.
-
Espandi il passaggio di distribuzione
La corsa è un elenco di passaggi, ognuno compresso. Il checkout e la creazione sono operazioni di routine. Il passaggio che Bob desidera è quello che comunica con la produzione, perché è lì che deve essere utilizzata una credenziale.
-
Il token, in testo semplice
Il passaggio si apre e la credenziale è semplicemente lì. Qualcuno ha aggiunto una riga per stampare il token mentre inseguiva una distribuzione interrotta, la distribuzione è stata corretta e la linea è rimasta. Bob non deve rompere nulla. Seleziona il valore e lo copia.
-
Da quanto tempo sta stampando
Una riga di registro è una copia. Bob torna alla cronologia delle esecuzioni e cerca nell'output di ogni esecuzione il prefisso del token, per scoprire da quanto tempo ciò accade. La risposta decide quante persone potrebbero già tenerlo in mano.
-
Cosa può raggiungere il token
Prima di utilizzarla, Bob chiede al servizio di distribuzione di Vellmoor cosa è consentito fare con questa credenziale. Chiama l'endpoint dell'ambiente con il token in un'intestazione di autorizzazione. La risposta arriva senza alcuna sfida e non è limitata a un ambiente di test.
-
Spedisci la sua build
Bob non ha bisogno di toccare il repository, aprire una richiesta pull o attendere una revisione. Al servizio di distribuzione non interessa da dove proviene un'immagine, ma solo che il chiamante abbia un token valido. Indica la produzione verso un'immagine nel suo registro.
-
Verifica della conoscenza
Hai appena visto una credenziale di produzione prelevata da un registro di compilazione senza alcun exploit coinvolto. Blocca come è arrivato lì.
-
Arriva l'allerta
Possiedi i flussi di lavoro CI di Vellmoor. Questa mattina la sicurezza della piattaforma ha avuto entrambe le metà di una brutta notte: una credenziale trovata nell'output pubblico e una distribuzione in produzione che nessuno ha pianificato.
-
Guardalo sulla tua pipeline
Le segnalazioni di perdite sono una cosa. Apri l'esecuzione a cui puntano gli avvisi per vedere cosa ha effettivamente pubblicato la tua pipeline.
Copertura dei framework di sicurezza
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