GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment analyser les images de conteneur Docker à la recherche de vulnérabilités avec Trivy

Aujourd'hui, vous allez apprendre à numériser des images Docker Container.

Introduction

Trivy (tri prononcé comme tri gger, vy prononcé comme envievy ) est un scanner simple et complet pour les vulnérabilités dans les images de conteneurs, les systèmes de fichiers et les référentiels Git, ainsi que pour les problèmes de configuration. Trivy détecte les vulnérabilités des packages OS (Alpine, RHEL, CentOS, etc.) et des packages spécifiques au langage (Bundler, Composer, npm, yarn, etc.).

De plus, Trivy analyse les fichiers Infrastructure as Code (IaC) tels que Terraform, Dockerfile et Kubernetes, pour détecter les problèmes de configuration potentiels qui exposent vos déploiements au risque d'attaque. Trivy est facile à utiliser. Installez simplement le binaire et vous êtes prêt à numériser.

Fonctionnalités

  • Détection complète des vulnérabilités
    • Packages de système d'exploitation (Alpine Linux, Red Hat Universal Base Image, Red Hat Enterprise Linux, CentOS, AlmaLinux, Rocky Linux, CBL-Mariner, Oracle Linux, Debian, Ubuntu, Amazon Linux, openSUSE Leap, SUSE Enterprise Linux, Photon OS et Distroless)
    • Packages spécifiques à une langue (Bundler, Composer, Pipenv, Poetry, npm, yarn, Cargo, NuGet, Maven et Go)
  • Détection des erreurs de configuration (analyse IaC)
    • Une grande variété de règles intégrées sont fournies prêtes à l'emploi
      • Kubernetes, Docker, Terraform et bien d'autres seront bientôt disponibles
    • Compatible avec les règles personnalisées
  • Haute précision
  • Prise en charge de plusieurs cibles
    • image de conteneur, système de fichiers local et référentiel git distant

Installation

Sur CentOS

  • Installez Trivy sur CentOS à partir de son référentiel, ajoutez donc le référentiel de trivy puis installez-le comme suit :
echo -e "\n[trivy]\nname=Trivy repository\nbaseurl=https://aquasecurity.github.io/trivy-repo/rpm/releases/\$releasever/\$basearch/\ngpgcheck=0\nenabled=1" | sudo tee -a /etc/yum.repos.d/kubernetes.repo

sudo yum -y install trivy
  • Ou installez trivy à partir de sa source RPM, vous devrez obtenir la dernière version de Trivy puis exécuter :
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.rpm
sudo yum localinstall ./trivy_0.23.0_Linux-64bit.rpm

Sur Ubuntu

  • Depuis le référentiel
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
  • Depuis la source Debian, vous devrez également obtenir la dernière version de Trivy, comme nous l'avons fait dans CentOS, puis exécutez les commandes ci-dessous :
wget https://github.com/aquasecurity/trivy/releases/download/v0.23.0/trivy_0.23.0_Linux-64bit.deb
sudo apt install ./trivy_0.23.0_Linux-64bit.deb

Sur Arch Linux|Manjaro

pikaur -Sy trivy-bin
OR
yay  -Sy trivy-bin

Utiliser Trivy

Analyse d'un système de fichiers et de dépôts git

  • Trivy peut analyser un système de fichiers (tel qu'une machine hôte, une image de machine virtuelle ou un système de fichiers d'image de conteneur décompressé).
trivy fs /home/glassfish/
  • Pour scanner un dépôt Git avec trivy
trivy repo https://github.com/aquasecurity/trivy

Scanner une image de conteneur

  • Listez vos images
docker images
  • Scannez-le avec trivy
trivy image httpd

Appliquer Trivy dans Dockerfile

Vous pouvez inclure trivy dans votre Dockerfile et il analysera tout au fur et à mesure qu'il construit l'image.

Par exemple :

  • Créer un Dockerfile qui contient trivy
vim Dockerfile 
  • Ajoutez ce qui suit :
FROM alpine:3.7

RUN apk add curl \
    && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
    && trivy filesystem --exit-code 1 --no-progress /
  • Créer l'image.
[root@unixcop ~]# docker build -t scanned-image .
Sending build context to Docker daemon  244.6MB
Step 1/2 : FROM alpine:3.7
3.7: Pulling from library/alpine
5d20c808ce19: Pull complete 
Digest: sha256:8421d9a84432575381bfabd248f1eb56f3aa21d9d7cd2511583c68c9b7511d10
Status: Downloaded newer image for alpine:3.7
 ---> 6d1ef012b567
Step 2/2 : RUN apk add curl     && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin     && trivy filesystem --exit-code 1 --no-progress /
 ---> Running in 7f2b8771050d
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/4) Installing ca-certificates (20190108-r0)
(2/4) Installing libssh2 (1.9.0-r1)
(3/4) Installing libcurl (7.61.1-r3)
(4/4) Installing curl (7.61.1-r3)
Executing busybox-1.27.2-r11.trigger
Executing ca-certificates-20190108-r0.trigger
OK: 6 MiB in 17 packages
aquasecurity/trivy info checking GitHub for latest tag
aquasecurity/trivy info found version: 0.23.0 for v0.23.0/Linux/64bit
aquasecurity/trivy info installed /usr/local/bin/trivy
2022-02-12T11:47:49.846Z	INFO	Need to update DB
2022-02-12T11:47:49.846Z	INFO	Downloading DB...
2022-02-12T11:48:24.761Z	INFO	Detected OS: alpine
2022-02-12T11:48:24.761Z	INFO	Detecting Alpine vulnerabilities...
2022-02-12T11:48:24.789Z	INFO	Number of language-specific files: 0
2022-02-12T11:48:24.789Z	WARN	This OS version is no longer supported by the distribution: alpine 3.7.3
2022-02-12T11:48:24.789Z	WARN	The vulnerability detection may be insufficient because security updates are not provided

7f2b8771050d (alpine 3.7.3)
===========================
Total: 2 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 2)

+------------+------------------+----------+-------------------+---------------+---------------------------------------+
|  LIBRARY   | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION |                 TITLE                 |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
| musl       | CVE-2019-14697   | CRITICAL | 1.1.18-r3         | 1.1.18-r4     | musl libc through 1.1.23 has          |
|            |                  |          |                   |               | an x87 floating-point stack           |
|            |                  |          |                   |               | adjustment imbalance, related...      |
|            |                  |          |                   |               | -->avd.aquasec.com/nvd/cve-2019-14697 |
+------------+                  +          +                   +               +                                       +
| musl-utils |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
|            |                  |          |                   |               |                                       |
+------------+------------------+----------+-------------------+---------------+---------------------------------------+
The command '/bin/sh -c apk add curl     && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin     && trivy filesystem --exit-code 1 --no-progress /' returned a non-zero code: 1
[root@unixcop ~]#

Comme indiqué ci-dessus, trivy a analysé les vulnérabilités de l'image incluse dans le Dockerfile lors de la construction.

  • Vous pouvez également filtrer les vulnérabilités par gravité avec :
trivy image --severity HIGH,CRITICAL httpd:latest

Comme indiqué ci-dessus, nous avons filtré le résultat uniquement pour les gravités critiques et élevées.

  • Scannez le conteneur depuis l'intérieur du conteneur
docker run --rm -it nginx \
   && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \
   && trivy fs /

Conclusion

C'est tout

Dans ce guide, nous avons illustré comment analyser les images de conteneur Docker à la recherche de vulnérabilités avec Trivy en plus des systèmes de fichiers et des dépôts git.

merci


Docker
  1. Comment installer WordPress avec Docker sur Ubuntu

  2. Comment installer Jenkins avec Docker

  3. Comment déployer un conteneur nginx avec Docker sur Linode

  4. Comment partager des images Docker avec d'autres

  5. Comment créer un conteneur MySQL Docker pour les tests

Comment utiliser Docker Scan pour trouver des vulnérabilités dans vos images

Comment modifier le code dans les conteneurs Docker avec Visual Studio Code

Comment pousser et tirer des images Docker avec le registre de conteneurs de DigitalOcean

Comment créer une image Windows Docker avec la balise Docker Build

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Comment utiliser Docker Commit pour modifier les images de conteneur