Docker Scout - Testa la sicurezza delle tue immagini

  • Di
  • 2024-02-01 - 5 minuti
banner

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.

Risorse utili

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful
Logo di DevDojo

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre piΓΉ veloce per rimanere sempre sul pezzo! πŸš€

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli piΓΉ interessanti pubblicati sul blog

Ci sto!

Vuoi diventare #tech content creator? πŸ–ŠοΈ

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! πŸ˜‰

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!