Docker Scout - Testa la sicurezza delle tue immagini

Una delle ultime novitΓ in casa Docker Γ¨ Docker Scout: un tool per analizzare e gestire le vulnerabilitΓ presenti nelle immagini prodotte disponibile a partire dalla versione 4.17 di Docker Desktop.
Infatti, quando creiamo delle immagini per le nostre applicazioni, stiamo utilizzando diverse immagini di partenza che, stratificandosi, creano una nuova immagine. Questo vuol dire che alcuni di questi layer potrebbe avere delle vulnerabilitΓ di sicurezza che rendono la nostra immagine non “sicura”.
Docker Scout Γ¨ un tool che permette agli utenti di essere proattivi nel lavorare sulla sicurezza dei container: eseguendo una scansione di un’immagine, analizza ogni layer presente nell’immagine e crea un elenco dettagliato delle componenti che la compongono, fornendo un Software Bill of Materials (abbreviato in SBOM).
Con questa lista, Docker Scout verifica attraverso un database di vulnerabilitΓ note quali sono le possibili patch da applicare e le riporta all’utente.
Installazione
Questo strumento puΓ² essere usato con Docker Desktop, Docker Hub o anche attraverso la CLI di Docker, come riportato nell’esempio di seguito: eseguendo l’accesso all’account Docker e permettendo l’analisi del repository di interesse, Γ¨ possibile lanciare il comando docker scout cves per analizzare l’immagine e le relative vulnerabilitΓ .
L’unico requisito Γ¨ aver installato Docker Engine: se non l’hai fatto, e sei su Ubuntu 20+, puoi usare questi comandi:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb arch=amd64 https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce
sudo usermod -aG docker $USER
Poi, per installare Docker Scout CLI, si puΓ² procedere con l’installazione a partire dal repo ufficiale di GitHub:
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh
Questo script scarica e installa l’ultimo file binario docker-scout
nella directory dei plugin della Docker CLI. Puoi verificare l’installazione con il comando docker scout –help e poi utilizzare i diversi comandi messi a disposizione dallo strumento per analizzare un repository remoto:
docker login
docker scout repo enable --org ORG_NAME MY-ORG/MY-REPO
docker scout cves ORG_NAME/MY-REPO:1.0.0
Credits to Docker official documentation
Per eseguire invece una scansione in locale, Γ¨ sufficiente specificare l’immagine e il tag, e l’output riporterΓ l’analisi dell’immagine e restituirΓ un elenco delle vulnerabilitΓ rilevate, con relativa gravitΓ , nome del pacchetto e identificatore CVE.
docker scout cves [YOUR_IMAGE]:[YOUR_TAG]
>>>
## Packages and Vulnerabilities
2C 1H 0M 0L expat 2.5.0-1
pkg:deb/debian/expat@2.5.0-1?os_distro=bookworm&os_name=debian&os_version=12
β CRITICAL CVE-2024-45492
https://scout.docker.com/v/CVE-2024-45492
Affected range : <2.5.0-1+deb12u1
Fixed version : 2.5.0-1+deb12u1
β CRITICAL CVE-2024-45491
https://scout.docker.com/v/CVE-2024-45491
Affected range : <2.5.0-1+deb12u1
Fixed version : 2.5.0-1+deb12u1
β HIGH CVE-2024-45490
https://scout.docker.com/v/CVE-2024-45490
Affected range : <2.5.0-1+deb12u1
Fixed version : 2.5.0-1+deb12u1
La scansione restituisce valori diversi. Diamo un’occhiata:
- ID CVE: Identificativo univoco della vulnerabilitΓ (ad esempio, CVE-2022-1234).
- Livello: Indica il livello di rischio (BASSO, MEDIO, ALTO, CRITICO).
- Pacchetto: Il pacchetto software interessato nell’immagine.
- Versione: La versione del pacchetto presente nell’immagine.
- Versione con patch: La versione in cui Γ¨ stata risolta la vulnerabilitΓ .
- Descrizione: Breve riepilogo della vulnerabilitΓ .
Quindi, se il risultato riporta qualcosa di simile:
...
CVE-2022-1234 | HIGH | openssl | 1.1.1f | 1.1.1g | Buffer overflow in XYZ
...
L’immagine contiene openssl
versione 1.1.1f
, che Γ¨ vulnerabile a un buffer overflow di livello critico. Il problema Γ¨ stato risolto nella versione 1.1.1
e, per risolverlo, Γ¨ necessario aggiornare l’immagine di base o il pacchetto almeno alla versione 1.1.1
.
E per ottenere gli aggiornamenti disponibili dell’immagine di base e suggerimenti per aggiornarla? Puoi usare il comando docker scout recommendations
, in cui l’output mostra un elenco di vantaggi, come vulnerabilitΓ di che livello, o immagini piΓΉ leggere, ecc.
...
docker scout recommendations [YOUR_IMAGE]:[YOUR_TAG]
>>>
β Image stored for indexing
β Indexed 685 packages
i Base image was auto-detected. To get more accurate recommendations, build images with max-mode provenance attestations.
Review docs.docker.com β for more information.
Alternatively, use docker scout recommendations --tag <base image tag> to pass a specific base image tag.
Target β [YOUR_IMAGE]:[YOUR_TAG]
digest β xyz
## Recommended fixes
Base image is python:3.10
Name β 3.10
Digest β sha256:abc
Vulnerabilities β 10C 49H 66M 107L 6?
Pushed β 2 years ago
Size β 375 MB
Packages β 573
Flavor β debian
OS β 12
Runtime β 3.10.12
β The base image is also available under the supported tag(s) 3.10-bookworm . If you want to display
β recommendations specifically for a different tag, please re-run the command using the --tag flag.
Refresh base image
Rebuild the image using a newer base image version. Updating this may result in breaking changes.
Tag β Details β Pushed β Vulnerabilities
ββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
3.10 β Benefits: β 3 weeks ago β 0C 4H 5M 147L 4?
Newer image for same tag β β’ Patch runtime version update β β -10 -45 -61 +40 -2
Also known as: β β’ Newer image for same tag β β
β’ 3.10.17 β β’ Tag was pushed more recently β β
β’ 3.10.17-bookworm β β’ Image has similar size β β
β’ 3.10-bookworm β β’ Image contains similar number of packages β β
β β’ 3.10 was pulled 372K times last month β β
β β β
β Image details: β β
β β’ Size: 376 MB β β
β β’ Flavor: debian β β
β β’ OS: 12 β β
β β’ Runtime: 3.10.17 β β
β β β
β β β
β β β
Change base image
The list displays new recommended tags in descending order, where the top results are rated as most suitable.
Tag β Details β Pushed β Vulnerabilities
ββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
3.10-slim β Benefits: β 3 weeks ago β 0C 1H 2M 29L
Patch runtime version update β β’ Patch runtime version update β β -10 -48 -64 -78 -6
Docker Scout puΓ² essere utilizzato senza limiti per le immagini locali, e al massimo per 3 repository remoti nel caso di un account free; per saperne di piΓΉ sui prezzi delle licenze, Γ¨ possibile consultare la documentazione ufficiale.