Segreti negli strati delle immagini
L'eliminazione di un segreto nel RUN successivo non lo rimuove.
Cos’è Segreti negli strati delle immagini?
I livelli immagine sono di sola aggiunta. Una credenziale passata in un RUN viene registrata definitivamente in quel livello e un RUN successivo che elimina il file aggiunge solo un livello in cima. Il file è sparito; il segreto è ancora nella storia della costruzione. Otterrai un'immagine pubblica, leggerai il comando build non troncato e utilizzerai il token di pubblicazione. L'ordine di riparazione è importante: revoca prima il token, emetti una sostituzione con ambito e solo successivamente sostituisci l'argomento build con un montaggio segreto BuildKit in modo che non venga scritto nulla in un livello fornito.
Cosa imparerai in Segreti negli strati delle immagini
- Spiegare perché i livelli immagine sono di sola aggiunta, quindi un'ESECUZIONE successiva che elimina un file di credenziali lascia il segreto nella cronologia di creazione
- Recupera un token integrato stampando comandi di livello non troncati, poiché la visualizzazione della cronologia tronca la colonna CREATO DA
- Revocare innanzitutto le credenziali trapelate ed emettere una sostituzione con ambito limitato nel tempo prima di modificare qualsiasi cosa relativa all'immagine
- Applica un montaggio segreto BuildKit in modo che il token sia disponibile durante la creazione ma non venga mai scritto in un livello fornito
- Verifica l'immagine ricostruita leggendo la cronologia completa dei livelli e confermando che la credenziale non appare più da nessuna parte
Segreti negli strati delle immagini — Fasi della formazione
-
Valutare l'obiettivo
Oggi Bob prende di mira Cindralt, un'azienda di pagamenti il cui servizio di regolamento viene distribuito come immagine container. Inizia da dove chiunque potrebbe iniziare: il registro dei container dell'azienda stessa. Un'immagine pubblicata è un obiettivo comodo da attaccare. È esattamente l'artefatto in esecuzione in produzione, e scaricarla non costa nulla.
-
Chiunque può scaricarla
Il repository è pubblicato per il pull anonimo. Questa è una scelta deliberata per molte aziende e non è di per sé una vulnerabilità, ma significa che l'artefatto è disponibile per Bob alle stesse condizioni dei server di build di Cindralt.
-
Scaricare l'immagine
Bob scarica il tag che il registro elenca come latest. Ciò che arriva sulla sua macchina è, byte per byte, ciò che Cindralt esegue in produzione, compreso ogni strato prodotto dalla build lungo il percorso.
-
Leggere la cronologia della build
Ogni immagine porta con sé i comandi che l'hanno costruita. Bob non ha bisogno di eseguire il container né di estrarre nulla: la cronologia degli strati è metadata e arriva insieme al pull. A prima vista questa build sembra curata. Qualcuno ha persino pulito dopo l'installazione delle dipendenze.
-
Richiedere il comando completo
La tabella predefinita è costruita per adattarsi a un terminale, non per dire la verità. Bob richiede i comandi di build da soli, senza alcun troncamento. Il comando di installazione ha scritto una credenziale in un file di configurazione, e questa si trova ancora nello strato creato da quel comando.
-
Perché l'eliminazione non è servita a nulla
Un momento sul meccanismo prima che Bob usi ciò che ha trovato.
-
Verificare cosa apre il token
Una credenziale vale solo per ciò a cui può accedere. Bob chiede all'indice di pacchetti di Cindralt a chi appartiene questo token e cosa può fare. La risposta è peggiore di un singolo servizio. Il token pubblica su ogni pacchetto contro cui Cindralt compila, e non scade mai.
-
Quanto vale quel token
Bob non ha bisogno di toccare di nuovo i server di Cindralt. Con i diritti di pubblicazione su ogni pacchetto contro cui l'azienda compila, la prossima versione di qualsiasi libreria interna può essere sua, e verrà scaricata da ogni build eseguita successivamente.
-
L'indice segnala una pubblicazione
L'indice di pacchetti di Cindralt registra ogni chiamata autenticata. Durante la notte ha registrato l'uso del token ci-publisher da un indirizzo che non appartiene a nessuno in azienda.
-
Confermarlo dall'immagine
Alice verifica personalmente l'affermazione confrontandola con l'artefatto pubblicato, usando esattamente ciò che avrebbe un estraneo: il tag pubblico e un client Docker standard.
Copertura dei framework di sicurezza
CWE
- CWE-540 Inclusion of Sensitive Information in Source Code
- CWE-522 Insufficiently Protected Credentials
MITRE ATT&CK
- T1552.001 Unsecured Credentials: Credentials In Files
CIS Controls
- CIS 3 Data Protection
- CIS 16 Application Software Security
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.DS Data Security
- PR.PS Platform Security