Die Containerisierung mit Docker scheint die perfekte Strategie zum Bereitstellen Ihrer Anwendung zu sein. Aber ist sie wirklich fehlerfrei? Nun, es hängt alles davon ab, wie Sie die Strategie zum Bereitstellen einer Anwendung entwickeln. Container-Images haben ihre Schwachstellen und stellen ein Sicherheitsrisiko dar. Wir werden uns diese Faktoren und auch ein Tool namens Trivy zum Scannen eines Docker Images im Detail ansehen. Die in diesem Blog behandelten Themen sind unten aufgeführt:
Docker Image
Ein Docker Image ist wie eine Blaupause, die zum Erstellen eines Docker-Containers verwendet wird. Diese Images können selbst erstellt werden, indem die Anforderungen in einem Docker-File definiert werden. Die Images haben mindestens eine Ebene eines Basis-Images und andere Ebenen werden wie im Docker-File erwähnt gestapelt. Sobald es durch Ausführen des Docker-Befehls „run“ auf einem Doker-File erstellt wurde, wird es unveränderlich. Es besteht aus Quellcode, Tools, Abhängigkeiten, Bibliotheken und anderen Dateien, die zum Ausführen einer App erforderlich sind.
Was ist eine Sicherheitslücke?
Wikipedia beschreibt eine Sicherheitslücke als eine Schwäche, die von einem Bedrohungsakteur, wie z. B. einem Angreifer, ausgenutzt werden kann, um Berechtigungsgrenzen innerhalb eines Computersystems zu überschreiten. Die bekannteste Sicherheitslücken-ID ist CVE (Common Vulnerability and Exposure), hier erfahren Sie alles darüber . Darüber hinaus sind einige der Namen gängiger Sicherheitslücken Meltdown , Heartbleed , Shellshock und Dirty COW .
Es gibt zwei Arten von Schwachstellen: bekannte und unbekannte. Im Detail sind bekannte Schwachstellen diejenigen, die bereits bekannt sind und denen eine CVE-ID zugewiesen wurde. Die unbekannte Schwachstelle hingegen ist eine Schwachstelle, die noch nicht bekannt ist. Daher gibt es zwei Arten von Scannern: einen Scanner, der Komponenten mit bekannten Schwachstellen identifiziert. Zum Beispiel Trivy, Clair, Aqua. Darüber hinaus haben wir auch einen Scanner für unbekannte Schwachstellen wie OWASP ZAP, OSS-Fuzz.
Schwachstellen in Docker Images
Wir wissen, dass Container viele der älteren Technologien in der Anwendungsentwicklung überflügeln. Das ist in der Tat vorbildlich, aber heißt das, dass es fehlerfrei ist? Nein, gemäß den Best Practices sollten wir niemals Annahmen treffen. Die Docker Images weisen Schwachstellen auf und sind standardmäßig nicht sicher. Die Schwachstellen können auf die im Image installierten Pakete, die vom Benutzer verwendeten Bibliotheken oder sogar das Basisimage zurückzuführen sein. Die meisten dieser Probleme lassen sich jedoch leicht beheben.
Laut Prevasio , einem Sicherheits-Startup, weisen mehr als die Hälfte der neuesten auf DockerHub verfügbaren Images kritische Schwachstellen auf. Diese könnten von veralteter Software stammen, während Tausende von Images Angriffstools oder andere potenziell schädliche Software sind. Hinzu kommt laut einer Analyse von 4 Millionen Images, die am 1. Dezember 2020 veröffentlicht wurden.
Scannen Sie Docker Image-Schwachstellen
Beim Scannen von Docker Images werden bekannte Sicherheitslücken in den Paketen Ihres Docker Images identifiziert. Dies gibt Ihnen die Möglichkeit, Schwachstellen in Container-Images zu finden und zu beheben, bevor Sie das Image in ein Register übertragen oder als Container ausführen. Docker stellt uns einen Scan- Befehl zur Verfügung. Darüber hinaus gibt es auch viele andere Open-Source-Tools. Sehen wir uns an, wie man die Docker Images mit einem Tool namens Trivy scannt.
Die Tools identifizieren das Paket und die Version im Image und führen auch Querverweise mit der Schwachstellendatenbank durch. Im Detail sind diese Schwachstellen plattformspezifisch und da es viele Linux-Distributionen mit Images gibt, wird dies tatsächlich zu einer Mammutaufgabe. Nicht zu vergessen sind auch die Backport-Sicherheitsfixes des Anbieters.
Trivy Scanner zum Scannen von Docker-Bildern
Trivy ist ein Open-Source- und einfacher und umfassender Schwachstellenscanner für Container und andere Artefakte. Trivy wurde im Jahr 2019 von Aqua Security entwickelt . Es erkennt Schwachstellen von Betriebssystempaketen und auch Anwendungsabhängigkeiten. Bevor Sie in ein Containerregister pushen oder Ihre Anwendung bereitstellen, können Sie Ihr lokales Container-Image und andere Artefakte problemlos scannen. So können Sie sicher sein, dass mit Ihrer Anwendung alles in Ordnung ist, ohne dass Sie wie bei anderen Scannern stressigere Konfigurationen verwenden müssen.
Funktionen des Trivy Scanners
Trivy verfügt über die folgenden Funktionen, die Ihnen viel Freude bereiten werden:
- Einfache Installation – apt, yum, apk, Bundler, Composer, pipenv, Poetry usw.
- Sehr genau
- Umfassende Schwachstellen erkennen
- Einfach – Geben Sie nur einen Bildnamen oder einen Artefaktnamen an
- Schnell – Der erste Scan ist innerhalb von 10 Sekunden abgeschlossen (abhängig von Ihrem Netzwerk). Da die nachfolgenden Scans in wenigen Sekunden abgeschlossen sind
- DevSecOps – Geeignet für CI wie Jenkins, Travis CI, GitLab CI usw.
- Unterstützt mehrere Formate – einschließlich Container-Image, lokalem Dateisystem und Remote-Git-Repository
Installation des Trivy Scanners
Trivy kann auf verschiedene Arten installiert werden. Wir werden sehen, wie wir es über ein Skript installieren, indem wir die folgenden Befehle ausführen:
$ cd /usr/local/bin
$ curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s — -b /usr/local/bin v0.16.0
Führen Sie zur Überprüfung den folgenden Befehl aus. Bei erfolgreicher Installation erhalten Sie die folgende Ausgabe:
$ trivial
Docker Image mit Trivy Scanner scannen
Lassen Sie uns nun ein Image auf Schwachstellen scannen. Im folgenden Scan scannen wir ein Nginx-Image der Version 1.19.6. Führen Sie dazu den folgenden Befehl aus:
$ trivy Bild nginx:1.19.6
Wie wir der obigen Ausgabe entnehmen können, gibt es zum Zeitpunkt des Scans insgesamt 174 Schwachstellen (UNBEKANNT: 0, NIEDRIG: 114, MITTEL: 16, HOCH: 39, KRITISCH: 5).
Lassen Sie uns nun nach einem sicheren Image suchen. Führen Sie den folgenden Befehl für das Nginx-Image aus.
$ trivy Bild nginx:1.19.9-alpine
Ich schätze, Sie haben es inzwischen herausgefunden. Um ein Bild Ihrer Wahl zu scannen, verwenden Sie den folgenden Befehl:
$ trivy image [IHR_BILDNAME]
Trivy als Docker-Container
Wenn Sie daran gedacht haben, das Trivy-Tool in einen Container zu packen, finden Sie hier die Lösung. Daher werden wir uns jetzt ansehen, wie man es als Container ausführt. Lassen Sie uns also das Image mit dem folgenden Befehl aus dem Repository ziehen:
$ docker run ghcr.io/aquasecurity/trivy:latest
Als Nächstes scannen wir ein Image, indem wir das Trivy-Tool als Docker-Container ausführen und die Schwachstellen im neuesten Nginx-Image überprüfen. Führen Sie dazu die folgenden Befehle aus:
$ docker run ghcr.io/aquasecurity/trivy:neuestes Image nginx
Open-Source-Docker-Sicherheitstools
Die meisten von uns wissen, wie die Sicherheit des Kubernetes-Clusters bei Tesla verletzt wurde! Andererseits gibt es im Bereich der Containersicherheit viele Open-Source-Tools, mit denen Sie Ihre Container untersuchen und gegen Angriffe absichern können. Die Containersicherheit ist jedoch nicht so einfach, wie es sich anhört, sondern ein wenig knifflig.
Niemand möchte seine Anwendung auf einem unsicheren Container ausführen, oder? Es gibt die kommerziellen, die von den Unternehmen verwaltet werden. Andererseits mangelt es auch nicht an Open-Source-Tools. Die meisten dieser Tools konzentrieren sich auf Audits, die Verfolgung von CVE-Datenbanken und Benchmarks, die von CIS, der National Vulnerability Database und anderen Stellen erstellt wurden. Die Tools scannen dann das Docker Image, legen seinen Inhalt offen und vergleichen den Inhalt mit diesen Manifesten bekannter Schwachstellen commerzbank tagesgeld.
Obwohl es eine große Auswahl an Open-Source-Containersicherheitsoptionen gibt, sind hier die besten und ausgereiftesten mit den größten Benutzercommunities.
- Docker Bench für Sicherheit
- Clair
- Wimper
- Anker
- OpenSCAP Workbench
Sichere Docker-Container-Images
Das Bereitstellen einer Anwendung in einer unsicheren Umgebung ist ein absolutes No-Go. Daher können Sie die erste Ebene der Containerisierung einer Anwendung nicht ignorieren: das Docker Image! Sehen Sie sich daher einige der Best Practices und Tipps an, die Sie befolgen sollten, um eine sichere und stabile Umgebung für die Anwendungsbereitstellung zu erstellen.
- Auswahl des richtigen Basisimages
- Entfernen Sie ausnutzbare und nicht unbedingt erforderliche Software
- Verwenden Sie mehrstufige Builds
- Bilder neu erstellen
- Scannen von Bildern während der Entwicklung
- Scannen von Behältern während der Produktion
- Schwachstellenmanagement
Fazit
Um die Qualität von Docker-Container-Images zu verbessern und die Gefährdung durch bekannte Sicherheitslücken zu vermeiden, wird Folgendes empfohlen:
- Beginnen Sie mit dem Scannen von Docker Images auf solche Schwachstellen.
- Integrieren Sie den Scanvorgang in den Release-Zyklus der Anwendungen.
- Verwenden Sie die Tipps und Best Practices, um einen robusten Ansatz zum Scannen von Bildern zu entwickeln
- Überprüfen und beseitigen Sie Schwachstellen in Ihren Docker Images, bevor Sie diese in ein internes oder sogar öffentliches Register übertragen.