Analyse von Sicherheitslücken in einem Docker-Image
In diesem Schritt lernen wir, wie man mit Trivy Sicherheitslücken in einem Docker-Image analysiert. Trivy ist ein umfassender und vielseitiger Sicherheitsscanner. Er kann Sicherheitslücken in Betriebssystempaketen (Alpine, RHEL, CentOS, Debian, Ubuntu usw.) und Anwendungsabhängigkeiten (Bundler, Composer, npm, yarn usw.) erkennen. Darüber hinaus unterstützt Trivy verschiedene Scanziele, wie z. B. Container-Images, Dateisysteme und Git-Repositories.
Zunächst laden wir ein anfälliges Docker-Image herunter, das wir für die Analyse verwenden werden. Wir verwenden das library/ubuntu:18.04
-Image, von dem bekannt ist, dass es einige Sicherheitslücken aufweist.
docker pull library/ubuntu:18.04
Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird.
18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
Jetzt, da wir das Image haben, müssen wir Trivy installieren. Da Trivy in der LabEx-Umgebung nicht vorinstalliert ist, werden wir es herunterladen und installieren. Wir laden die neueste Version aus dem offiziellen GitHub-Repository herunter.
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb
Dieser Befehl lädt das Trivy-Debian-Paket herunter. Sie sollten eine ähnliche Ausgabe wie diese sehen:
--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]
Jetzt installieren wir das heruntergeladene Paket mit dpkg
.
sudo dpkg -i trivy_0.50.1_Linux-64bit.deb
Sie sollten eine Ausgabe sehen, die den Installationsprozess anzeigt.
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) ...
Nach der Installation von Trivy können wir nun das library/ubuntu:18.04
-Docker-Image auf Sicherheitslücken untersuchen.
trivy image library/ubuntu:18.04
Trivy beginnt, das Image zu scannen. Dies kann einige Zeit dauern, da es die Sicherheitslückendatenbanken herunterlädt und die Image-Ebenen analysiert. Sie werden eine Ausgabe sehen, die den Fortschritt anzeigt, und dann einen detaillierten Bericht über die gefundenen Sicherheitslücken.
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 │
│ ... │ ... │ ... │ ... │ ... │
└───────────────────────────────────────────────────┴─────────────────────────────────┴──────────┴───────────────────┴───────────────────────────────────────────────────────────┘
Die Ausgabe bietet eine Zusammenfassung der insgesamt gefundenen Sicherheitslücken, kategorisiert nach Schweregrad (UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL). Anschließend werden alle Sicherheitslücken aufgelistet, zusammen mit Details wie dem betroffenen Paket, der Sicherheitslücken-ID (z. B. CVE-YYYY-XXXX), dem Schweregrad, der installierten Version des Pakets und der behobenen Version, falls verfügbar. Dieser Bericht hilft Ihnen, die Sicherheitslage Ihres Docker-Images zu verstehen und Bereiche zu identifizieren, die behoben werden müssen.