Segreti negli strati delle immagini

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

Segreti negli strati delle immagini — Fasi della formazione

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Perché l'eliminazione non è servita a nulla

    Un momento sul meccanismo prima che Bob usi ciò che ha trovato.

  7. 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.

  8. 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.

  9. 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.

  10. 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