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, una società di pagamenti il cui servizio di pagamento viene spedito come immagine di un contenitore. Inizia dove chiunque può: il registro dei container dell'azienda. Un'immagine pubblicata è una cosa conveniente da attaccare. È l'esatto manufatto in funzione nella produzione e rimuoverlo 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

  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 contrassegna il token

    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