Immagini di base malevole
Un'immagine di base con un personaggio in meno e la tua build fornisce una backdoor.
Cos’è Immagini di base malevole?
Ogni riga FROM è una decisione di fiducia. Chiunque può pubblicare su un registro pubblico con un nome a un carattere diverso dal tuo e senza la verifica della firma una riga FROM si risolve in qualunque cosa serva il registro. Eseguirai un'immagine simile, osserverai un minatore e invertirai l'attivazione della shell all'avvio, quindi traccerai un avviso di mining indietro attraverso la cronologia del livello fino alla riga FROM che lo ha nominato. Fisserai la base sull'immagine ufficiale firmata tramite digest in modo che il nome non possa essere ricondotto a qualcos'altro.
Cosa imparerai in Immagini di base malevole
- Riconoscere uno spazio dei nomi di registro simile come dockr-library, a un carattere di distanza dall'immagine ufficiale della libreria
- Spiega perché ogni riga FROM è una decisione di attendibilità che risolve un nome in qualunque cosa il registro scelga di servire
- Traccia un avviso di mining attraverso la cronologia di creazione del livello fino alla riga FROM che ha denominato l'immagine di base ostile
- Fissa la base all'immagine ufficiale firmata tramite digest in modo che il nome non possa risolversi in contenuto sostituito
- Verifica la provenienza con un controllo della firma, che ti dice chi ha pubblicato un'immagine dove la scansione delle vulnerabilità non può
Immagini di base malevole — Fasi della formazione
-
Un nome che differisce di un carattere
Bob non si introduce in nulla. Pubblica. Su un hub di immagini pubblico chiunque può eseguire il push di un repository, e lui ne ha pubblicato uno sotto un namespace che si legge quasi esattamente come l'immagine di base ufficiale di Node.js. Poi aspetta che una build, da qualche parte, la scarichi per errore.
-
Travestita da originale
Il repository di Bob compare nei risultati di ricerca proprio sotto quello reale, con lo stesso slogan e un numero di download sano. L'unica differenza è la parte che un ingegnere di fretta salta a colpo d'occhio.
-
Quello che ha davvero spedito
L'immagine contraffatta di Bob non è un'immagine Node riconfezionata con un'etichetta nuova. L'ha costruita a partire da una vera e ha aggiunto una singola riga. Questo è il Dockerfile dietro la base che ha pubblicato.
-
La riga che fa il lavoro
Tutto ciò che sta sopra questa riga è una normale base Node.js. Un solo RUN, camuffato da un commento innocuo, è ciò che la trasforma in un'arma.
-
Osserva il payload attivarsi
La base ha l'aspetto e il comportamento di una normale immagine Node.js, quindi una build che la usa riesce e un'app costruita su di essa funziona. Ma un livello aggiunto da Bob scarica ed esegue un payload nel momento in cui un container si avvia. Esegue la propria base una volta per confermare che il payload si attiva ancora.
-
Sfrutta la via d'accesso
Una build di Marlspire è stata spedita sulla sua base, e l'impianto che aveva piazzato ha telefonato a casa. Bob non ha più bisogno di introdursi ora: ha già una shell dentro il loro container di produzione. Gli ordina di consegnare tutto ciò che riesce a raggiungere.
-
Cosa ha reso possibile tutto questo
Un momento di riflessione sul meccanismo prima che inizi la risposta.
-
L'host segnala un miner
Marlspire esegue un monitoraggio degli endpoint sui suoi host container. Non gli importa cosa dovrebbe fare il container; segnala ciò che ha visto.
-
Leggi i livelli dell'immagine
Un'immagine registra come è stata costruita, un comando per livello. Se un miner si sta installando da solo, qualche livello ha dovuto eseguire il comando che lo ha scaricato. Alice legge la cronologia di build dell'immagine spedita.
-
Da dove veniva la base
Il veleno è nella base, quindi la domanda è quale base. Alice confronta i due candidati sull'hub pubblico, fianco a fianco.
Copertura dei framework di sicurezza
CWE
- CWE-494 Download of Code Without Integrity Check
- CWE-345 Insufficient Verification of Data Authenticity
MITRE ATT&CK
- T1195.002 Supply Chain Compromise: Compromise Software Supply Chain
CIS Controls
- CIS 2 Inventory and Control of Software Assets
- 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
- ID.AM Asset Management
- PR.PS Platform Security