Immagini Base Vulnerabili
Le tue dipendenze vengono riviste. Il sistema operativo sottostante no.
Cos’è Immagini Base Vulnerabili?
Le dipendenze dell'applicazione vengono riviste ad ogni modifica. Il livello del sistema operativo sottostante spesso non lo fa. Un tag mobile come node:18 significa che il livello sotto il codice cambia ogni volta che il registro fornisce qualcosa di nuovo e vengono rilevati difetti nel tempo, quindi un'immagine pulita al momento della spedizione può essere fondamentale ora. Eseguirai la scansione di un'immagine di servizio obsoleta, troverai CVE-2023-4863 in libwebp e la trasformerai in esecuzione di codice remoto. Quindi fisserai la base su un digest esatto, ricostruirai e ripetere la scansione. Il blocco ha un costo: richiede una cadenza di ricostruzione deliberata.
Cosa imparerai in Immagini Base Vulnerabili
- Tieni presente che un tag di base mobile consente di modificare il livello del sistema operativo sotto il codice senza che nessuno lo decida
- Scansiona un'immagine distribuita per individuare vulnerabilità note e trasforma CVE-2023-4863 in libwebp in un'esecuzione di codice remota funzionante
- Spiegare perché un difetto a livello del sistema operativo non appare in alcun file di dipendenze e viene risolto da una modifica dell'immagine di base anziché da un bump del pacchetto
- Aggiungi l'immagine di base a un digest esatto in modo che ogni build estragga gli stessi byte e una modifica di base diventi un commit rivedibile
- Ricostruisci ed esegui nuovamente la scansione per dimostrare che il blocco ha funzionato e pianifica la cadenza di ricostruzione deliberata richiesta da un'immagine di base bloccata
Immagini Base Vulnerabili — Fasi della formazione
-
L'immagine dello scheduler nel registry
Bob ha accesso in lettura al registry dei container di Bremhollow grazie a un token robot trapelato. Non sta guardando il codice — sta guardando quanto sono recenti le immagini, perché un servizio che non è stato ricostruito da un po' è un servizio la cui immagine base è invecchiata silenziosamente. Lo scheduler elabora immagini caricate dagli utenti, il che rende ciò su cui è costruito molto interessante per lui. Apri la sua pagina e guarda cosa dice il registry.
-
Un'immagine che ha smesso di muoversi
Il registry non deve essere sbagliato per aiutare Bob. Una sola riga gli dice che l'immagine distribuita è vecchia e costruita su una base mobile.
-
Scansiona la base alla ricerca di un varco
Bob esegue il pull dell'immagine e ci passa sopra uno scanner di vulnerabilità, lo stesso strumento che userebbe un difensore. Non è interessato al codice dell'applicazione. Vuole una vulnerabilità nota e pubblicata nei pacchetti del sistema operativo che l'immagine base ha trascinato con sé, perché quelle vengono con exploit funzionanti.
-
Trasforma il CVE in una shell
Un risultato dello scanner non è un exploit finché qualcuno non lo esegue. CVE-2023-4863 ha una proof-of-concept pubblica: un WebP creato ad arte che manda in overflow libwebp nel momento in cui viene decodificato. Lo scheduler decodifica ogni immagine caricata, quindi Bob monta il file PoC in un'esecuzione usa e getta dell'immagine vulnerabile e lo decodifica — dimostrando che il risultato è un percorso funzionante di remote-code-execution prima ancora di toccare la produzione.
-
Dove si trova la vulnerabilità
Un momento di riflessione sul meccanismo prima che inizi la risposta.
-
Lo scanner segnala la flotta
Bremhollow ha aggiunto la scansione delle immagini alla propria pipeline, e la prima verifica completa di ciò che è già in esecuzione in produzione ha restituito qualcosa che non può aspettare.
-
Verificalo di persona
Prima di cambiare qualsiasi cosa, Alice esegue la stessa scansione sull'immagine distribuita. Vuole vedere il risultato, dove si trova, e qual è effettivamente la base.
-
Aprire il Dockerfile
L'immagine base viene scelta in una riga del Dockerfile. Tutto ciò che lo scanner ha trovato è arrivato tramite quella riga.
-
Trova la base mobile
Non c'è nulla di scritto male o malformato qui. Il problema è una singola riga che dice meno di quanto dovrebbe.
-
Blocca la base tramite digest
Un tag è un'etichetta che qualcuno può spostare; un digest è l'impronta di contenuto dell'immagine e non può mai puntare a nient'altro. Alice blocca la base su un node:18 slim esatto e aggiornato tramite il suo digest, così ogni build d'ora in poi recupera gli stessi byte verificati, e spostare quel blocco diventa una modifica deliberata e revisionabile.
Copertura dei framework di sicurezza
CWE
- CWE-1104 Use of Unmaintained Third Party Components
- CWE-1395 Dependency on Vulnerable Third-Party Component
MITRE ATT&CK
- T1190 Exploit Public-Facing Application
CIS Controls
- CIS 7 Continuous Vulnerability Management
- CIS 2 Inventory and Control of Software Assets
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.RA Risk Assessment
- ID.AM Asset Management