Wie man Docker Security Scanning richtig nutzt

Seit seiner Einführung im Jahr 2013 hat sich Docker zu einer äußerst beliebten Lösung für die Bereitstellung von Applikationen entwickelt. Docker ermöglicht die Ausführung von Anwendungen in isolierten Umgebungen, sogenannten Containern, und vermeidet zugleich den großen Ressourcen-Overhead, der mit virtuellen Maschinen verbunden ist. Damit bietet Docker Portabilitäts- und Sicherheitsvorteile, ohne die Leistungsfähigkeit des Systems wesentlich zu beeinträchtigen.

Aber die Trennung, die Docker zwischen Containern bietet, schützt nicht vor allen Arten von Sicherheitsrisiken. Im Gegenteil, in Docker-Images, den ” Vorlagen “, auf denen Docker-Container basieren, können zahlreiche Sicherheitslücken lauern. Zu den wichtigsten Beispielen gehören:

  • Schadsoftware, die von Angreifern mit legitimen Anwendungen in Docker-Container eingeschleust wird. Die injizierte Malware wird dann zusammen mit dem Rest des Containers ausgeführt.
  • Risiken in der Netzwerkkonfiguration, wie etwa das Offenlassen unsicherer Ports per EXPOSE-Anweisung in einem Dockerfile. Angreifer könnten solche Ports missbrauchen, um Zugang zu einem ungesicherten Container zu erhalten. Von diesem aus können sie ihren Angriff dann womöglich auf das restliche System ausdehnen.
  • Fehlerhafte Konfiguration der Identitäts- und Zugriffskontroll-Settings (IAM), die es Containern ermöglicht, auf externe Ressourcen zuzugreifen, die ihnen eigentlich nicht zur Verfügung stehen sollten.
  • Exposed Secrets und offengelegte Zugangsdaten (z. B. API-Schlüssel) innerhalb des Docker-Images, die von jedem Angreifer, der Zugriff auf das Image oder den Container hat, wiederverwendet werden können.
  • Images, die mit Schadcode zur Rechteausweitung infiziert sind, sodass ein Angriff erfolgreich aus dem Container ausbrechen und in den Host eindringen kann – z. B. ein Image, das an seinem Eintrittspunkt einen Exploit zur Ausnutzung von Kernel-Privilegien ausführt.

Docker-Image-Scans  zur Absicherung von Docker nutzen

Das Docker Security Scanning ist die wichtigste Methode, um solche Sicherheitslücken in Docker-Images zu erkennen. Docker-Image-Scanner scannen automatisch alle Layer der Docker-Images, um nach Malware, Fehlkonfigurationen und anderen Gefahren zu suchen, die zu einer Sicherheitslücke in einer Docker-basierten Applikations-Umgebung führen könnten.

/Box/

Jetzt kostenlos Docker-Images scannen! 

Scannen Sie mit dem Xray CLI jedes Image in 3 einfachen Schritten auf Sicherheitslücken.

/Box/

Beim Scannen von Docker-Images wird der gesamte Inhalt eines Docker-Images erfasst und dann überprüft, ob diese Inhalte mit bekanntermaßen unsicheren Komponenten identisch sind. So können Docker-Image-Scanner beispielsweise feststellen, ob eine bestimmte Open-Source-Bibliothek in einem Docker-Image eine bekannte Sicherheitslücke enthält. Docker-Image-Scanner, die zusätzlich zu den Inhalten der Anwendung eines Images auch Konfigurationsdateien scannen können, sind auch in der Lage, fehlerhafte Konfigurationen zu erkennen, die zu Sicherheitsproblemen führen könnten, wie die oben beschriebenen Netzwerk- oder IAM-Probleme.

Die Grenzen von Docker Image Scans

Obwohl Image-Scans ein wesentlicher Bestandteil einer Docker-Security-Strategie sind, ist es wichtig zu wissen, dass Image-Scanner nicht alle Arten an potenziellen Schwachstellen von Docker abdecken.

Docker-Image-Scans können keine Risiken erkennen, wie z. B.:

  • Fehlkonfigurationen bei Container-Orchestrierungstools wie Kubernetes, die Angreifer nutzen könnten, um Zugriff auf eine containerisierte Anwendungsumgebung zu erhalten.
  • Vulnerabilities im Betriebssystem, das als Host für Container dient.
  • Schwachstellen, die aus proprietären Anwendungscode oder Bibliotheken stammen, welche nicht in den üblichen, von Docker-Security-Scannern verwendeten Schwachstellen-Datenbanken enthalten sind.

Best practices für Docker Image Security

Bei der Erstellung und Bereitstellung von Docker-Images können DevOps-Teams das Risiko von Sicherheitslücken, die von unsicheren Images ausgehen, reduzieren, indem sie sich an eine Reihe von Best Practices für die Sicherheit von Docker-Images halten.

Dazu zählen unter anderem die Folgenden:

Alle Images scannen

Eine grundlegende Best Practice besteht darin, immer alle Docker-Images zu scannen, bevor die darauf basierenden Container ausgeführt werden. Scanner können Risiken aufdecken, wie z. B. Komponenten, die bekanntermaßen Sicherheitslücken enthalten, oder Konfigurationsprobleme, die zu Sicherheitsproblemen führen können.

Eine einfachste Möglichkeit ng der Überprüfung ist die Integration der Image-Scans in Ihre Docker-Container-Registry, so dass Images automatisch gescannt werden, sobald sie in Ihre Registry geladen werden. Image-Scanner wie JFrog Xray können zu diesem Zweck mit Container-Repositories wie Artifactory integriert werden.

Vermeiden Sie das :latest-Tag

Wenn Sie Docker-Images von einer Container-Registry herunterladen, können Sie das “:latest”-Tag verwenden, um die neueste in der Registry verfügbare Image-Version zu laden. Dies ist zwar praktisch, aber aus einer Security-Perspektive nicht ideal, denn es könnte sein, dass eine andere Version der Anwendung bereitgestellt wird als die, die Sie sich eigentlich erwarten. Sie könnten zum Beispiel versehentlich eine Beta-Version eines Containers deployen, die Sicherheitslücken aufweist.

Obwohl das Docker-Image-Scanning Sie vor unsicheren Images schützen sollte, auch wenn Sie das :latest-Tag verwenden, ist es Best Practice, dieses Tag nicht zu verwenden. Geben Sie stattdessen die genaue Version des Images an, das Sie verwenden möchten.

Vermeiden Sie unnötig aufgeblasene Images

Wenn Sie ein Docker-Image erstellen, sollten Sie dem Grundsatz folgen, dass weniger mehr ist. Mit anderen Worten: Je weniger Layer Sie einem Docker-Image hinzufügen, desto besser für die Sicherheit. Wählen Sie Basis-Images (die Grundlage für neue Docker-Images), die nur die Komponenten enthalten, die für Ihre Anwendung absolut notwendig sind, und fügen Sie keine Libraries oder Befehle hinzu, die Sie nicht benötigen. Base-Images wie Alpine Linux, eine leichtgewichtige Linux-Distribution, sind für diesen Zweck sehr beliebt.

Schützen Sie Ihre Container-Registry

Jeder, der Zugriff auf Ihre Container-Registry hat, kann potenziell unsichere Docker-Images hochladen. Diese User könnten auch das Scannen von Images deaktivieren, so dass Sie nicht vor schädlichen Images geschützt sind.

Vermeiden Sie diese Risiken, indem Sie eine Docker-Registry verwenden, mit der Sie eine granulare Zugriffskontrolle konfigurieren können, sodass jeder Benutzer nur auf die Images zugreifen oder diese ändern kann, die er benötigt. Sie könnten auch eine private Docker-Registry in Betracht ziehen, auf die nur die von Ihnen definierten Endpunkte und/oder Benutzer im Netzwerk zugreifen können, anstatt eine öffentliche Registry zu verwenden, die für die ganze Welt sichtbar ist.