Analyser les vulnérabilités dans une image Docker
Dans cette étape, nous apprendrons à analyser les vulnérabilités dans une image Docker en utilisant Trivy. Trivy est un outil de vérification de sécurité complet et polyvalent. Il peut détecter les vulnérabilités dans les paquets du système d'exploitation (Alpine, RHEL, CentOS, Debian, Ubuntu, etc.) et les dépendances d'application (Bundler, Composer, npm, yarn, etc.). De plus, Trivy prend en charge diverses cibles de scan, telles que les images de conteneurs, les systèmes de fichiers et les dépôts Git.
Tout d'abord, téléchargeons une image Docker vulnérable que nous utiliserons pour l'analyse. Nous utiliserons l'image library/ubuntu:18.04
, qui est connue pour avoir certaines vulnérabilités.
docker pull library/ubuntu:18.04
Vous devriez voir un affichage indiquant que l'image est en cours de téléchargement.
18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
Maintenant que nous avons l'image, nous devons installer Trivy. Comme Trivy n'est pas préinstallé dans l'environnement LabEx, nous le téléchargerons et l'installerons. Nous téléchargerons la dernière version à partir du dépôt GitHub officiel.
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb
Cette commande télécharge le paquet Debian de Trivy. Vous devriez voir un affichage similaire à ceci :
--2023-10-27 08:00:00-- https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb
Resolving github.com (github.com)... 140.82.113.4
Connecting to github.com (github.com)|140.82.113.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/140000000/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=... [following]
--2023-10-27 08:00:00-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/140000000/...
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 50000000 (48M) [application/octet-stream]
Saving to: ‘trivy_0.50.1_Linux-64bit.deb’
trivy_0.50.1_Linux-64bit.deb 100%[=================================================>] 47.68M --.-MB/s in 0.5s
2023-10-27 08:00:01 (95.3 MB/s) - ‘trivy_0.50.1_Linux-64bit.deb’ saved [50000000/50000000]
Maintenant, installons le paquet téléchargé en utilisant dpkg
.
sudo dpkg -i trivy_0.50.1_Linux-64bit.deb
Vous devriez voir un affichage indiquant le processus d'installation.
Selecting previously unselected package trivy.
(Reading database ... 100000 files and directories currently installed.)
Preparing to unpack trivy_0.50.1_Linux-64bit.deb ...
Unpacking trivy (0.50.1) ...
Setting up trivy (0.50.1) ...
Avec Trivy installé, nous pouvons maintenant scanner l'image Docker library/ubuntu:18.04
pour détecter les vulnérabilités.
trivy image library/ubuntu:18.04
Trivy commencera à scanner l'image. Cela peut prendre quelques instants car il télécharge les bases de données de vulnérabilités et analyse les couches de l'image. Vous verrez un affichage montrant la progression, puis un rapport détaillé des vulnérabilités trouvées.
2023-10-27T08:00:05.000+0000 INFO Need to update DB
2023-10-27T08:00:05.000+0000 INFO Downloading DB...
...
2023-10-27T08:00:10.000+0000 INFO Detected OS: ubuntu
2023-10-27T08:00:10.000+0000 INFO Detecting Ubuntu vulnerabilities...
...
library/ubuntu:18.04 (ubuntu 18.04)
===================================
Total: 100 (UNKNOWN: 0, LOW: 50, MEDIUM: 30, HIGH: 15, CRITICAL: 5)
┌───────────────────────────────────────────────────┬─────────────────────────────────┬──────────┬───────────────────┬───────────────────────────────────────────────────────────┐
│ Library/Package │ Vulnerability │ Severity │ Installed Version │ Fixed Version │
├───────────────────────────────────────────────────┼─────────────────────────────────┼──────────┼───────────────────┼───────────────────────────────────────────────────────────┤
│ apt │ CVE-YYYY-XXXX │ HIGH │ 1.6.12 │ 1.6.14 │
│ ... │ ... │ ... │ ... │ ... │
└───────────────────────────────────────────────────┴─────────────────────────────────┴──────────┴───────────────────┴───────────────────────────────────────────────────────────┘
Le résultat fournit un résumé du nombre total de vulnérabilités trouvées, classées par gravité (INCONNUE, FAIBLE, MOYENNE, ÉLEVÉE, CRITIQUE). Il liste ensuite chaque vulnérabilité avec des détails tels que le paquet affecté, l'identifiant de la vulnérabilité (par exemple, CVE-YYYY-XXXX), le niveau de gravité, la version installée du paquet et la version corrigée si disponible. Ce rapport vous aide à comprendre la posture de sécurité de votre image Docker et à identifier les domaines qui nécessitent une correction.