Das sollten Sie über Container-Scans wissen
Was sind Container-Scans?
Bei Container-Scans oder Container-Image-Scans kommen Scanner zum Einsatz, um Sicherheitslücken in Containern und Komponenten zu finden. Es handelt sich also um ein zentrales Element der Container-Sicherheit, mit dem Entwickler und Sicherheitsteams vor der eigentlichen Bereitstellung nach Schwachstellen in containerisierten Anwendungen suchen.
Containerisierte Bereitstellungen werden immer beliebter – und zwar aus gutem Grund. Sie sind schnell und flexibel und ermöglichen die verlässliche Bereitstellung von Anwendungen, die dazu in geschlossene, übertragbare Codemodule umgewandelt werden. Doch ihre Beliebtheit bedeutet auch, dass die Verantwortung für die Container-Sicherheit zunehmend in die Entwicklung verlagert wird. Container-Scans sind dabei eine wirksame Methode zur Gewährleistung der Container-Sicherheit.
Nachfolgend sollen vor diesem Hintergrund die Grundlagen von Container-Scans und die Funktionsweise automatischer Container-Scanner vermittelt werden. Außerdem werden verschiedene Arten von Schwachstellen vorgestellt, die Container-Scanner erkennen können. Und schließlich wird auch der Frage nachgegangen, was Image-Layer für die Container-Sicherheit bedeuten.
Grundlagenwissen zu Container-Scans
Schwachstellen können auf verschiedene Weise in Container gelangen: über die enthaltene Software, die Interaktion zwischen Container und Host-Betriebssystemen bzw. nachgelagerten Containern, über die Netzwerk- und Speicherkonfiguration und auf zahlreichen anderen Wegen. Ein Container-Scanner analysiert diese diversen Container-Komponenten auf Sicherheitsrisiken.
Neben Schwachstellen, die im Code selbst und in den Tools enthalten sind, die sich im Container befinden, können auch andere Images Probleme verursachen, auf die sich der jeweilige Container bezieht. Diese werden als übergeordnete Images oder Base-Images bezeichnet (wobei „übergeordnet“ eigentlich die korrekte Variante ist). Container-Images können auf anderen, allgemein verfügbaren Images basieren, die ihrerseits bekannte Schwachstellen und Malware enthalten können. Das kann vor allem dann zum Problem werden, wenn man keine verifizierte Quelle verwendet und das Image und seinen Inhalt im Vorfeld nicht sorgfältig überprüft. Und sogar Images vertrauenswürdiger Herkunft weisen oft Schwachstellen auf. Doch wenn man sie scannt und das übergeordnete Image und dessen Schwächen bekannt sind, lässt sich ein Großteil dieser Probleme bereits mit einer einzigen Änderung beheben.
Sicherheitsscanner können an unterschiedlichen Stellen in den Entwicklungsprozess eingebunden werden. So lassen sich mögliche Base-Images vom Desktop aus prüfen, bevor man sich für eines entscheidet. Und auch einige Tools und IDE-Plugins können Dockerfiles scannen und Alternativen mit geringerem Sicherheitsrisiko und Umfang aufzeigen. Viele Unternehmen binden Container-Scans auch in ihre kontinuierliche Integration und Bereitstellung (CI/CD) ein. Denn dort werden die eigentlichen Images vor der Bereitstellung meist produziert. Wenn man an dieser Stelle mit den Scans ansetzt, lässt sich also verhindern, dass Container-Images mit übermäßig vielen Mängeln in Registries und Produktion gelangen. Meist werden zudem auch containerisierte Bereitstellungen auf Kubernetes und anderen Plattformen überprüft. Auf diese Weise lässt sich die Anwendungssicherheit ohne großen Entwicklungsaufwand deutlich verbessern.
Die Überprüfung von Container-Registries ist eine weitere Möglichkeit zur Vermeidung von Sicherheitslücken in den besonders häufig verwendeten Images. So bietet etwa die Snyk-Integration in Docker Hub eine vertrauenswürdige Quelle für allgemein zugängliche Images, die sich als Grundlage für neue Container eignen. Außerdem sollten Sie die gespeicherten Images im Blick behalten, um neu entdeckte Schwachstellen in vorhandenen Images zu erkennen und so zu verhindern, dass diese in die Produktion gelangen. Und vermutlich gibt es auch bei Ihnen noch etliche ältere Images, die kaum noch verändert werden oder von externen Quellen stammen und in Ihrer Container-Registry gespeichert sind. Diese bleiben von CI/CD komplett unberührt, sollten also ebenfalls geprüft werden. Registry-Scans bieten dabei eine gute Möglichkeit, um ihre Unbedenklichkeit sicherzustellen. Mit einem Registry-Scanner lässt sich so das Vertrauen in Images steigern, die für containerisierte Bereitstellungen verwendet werden.
Welche Schwachstellen werden erkannt?
Wie bereits erwähnt wurde, gelangen Sicherheitslücken auf unterschiedlichen Wegen in Container. Dabei kann es sich etwa um unsicheren Anwendungscode, Fehlkonfigurationen, Netzwerkbedrohungen und Probleme mit der Zugangssteuerung handeln. Wer sich vor diesen Gefahren schützen will, braucht ein konsequentes Container-Monitoring und laufend aktuelle Informationen zu neu entdeckten Sicherheitsrisiken.
Die meisten Container-Scanner stützen sich auf öffentlich zugängliche Quellen wie die National Vulnerability Database (NVD) oder die CVE-Datenbank (Common Vulnerabilities & Exposures). Darin werden Exploits veröffentlicht, um das automatische Schwachstellen-Management, Sicherheitsmessungen und Compliance zu fördern.
Die Rechercheabteilung von Snyk reichert Daten zu Container-Schwachstellen um Informationen an, die die Priorisierung erleichtern. Denn schon ihre schiere Anzahl kann überwältigend sein. Dabei werden bei Snyk Container Faktoren wie die Ausführung in Kubernetes-Clustern und deren Konfiguration, der Reifegrad von Exploits, die Resonanz in den sozialen Medien und Linux-spezifische Daten zu Schwachstellen berücksichtigt. Auf diese Weise soll die Priorisierung der wichtigsten Probleme einfacher gemacht werden.
Container-Layer und die Erkennung von Schwachstellen
Container sind die Bausteine, aus denen moderne Anwendungen gemacht sind. Einer ihrer größten Vorteile besteht darin, dass bereits vorhandene Container für eigene Zwecke genutzt werden können. Docker hat mit dem Docker Hub in puncto Entwicklung und Weitergabe von Container-Images einen wichtigen Teil zu dieser Vereinfachung beigetragen. Die Docker Official Images decken zudem eine breite Palette unterschiedlicher Sprachen und Frameworks sowie weitere Anwendungsdienste ab. Durch die Verwendung bereits vorhandener Images entstehen Container mit mehreren schreibgeschützten Layern und einer abschließenden Schicht mit Lese-/Schreibzugriff.
Jede zusätzliche Schicht birgt dabei die Gefahr, dass weitere Schwachstellen in den Container gelangen. Deshalb ist es besonders wichtig, dass der verwendete Container-Scanner schichtweise vorgeht. Noch besser ist es aber, wenn die einzelnen Layer bestimmten Befehlen bzw. Dockerfile-Anweisungen zugeordnet werden können. Denn mit denen ist die Entwicklungsabteilung am ehesten vertraut. Und da Images fast immer auf bereits vorhandenen anderen Images aufbauen (etwa mittels FROM-Befehl in einer Dockerfile), ist ein Schwachstellen-Scanner wie Snyk Container besonders zu empfehlen. Denn der erkennt, wenn es sich bei bestimmten Layern um Docker Official Images handelt und kann Alternativen aufzeigen, die weniger Schwachstellen aufweisen. Und das ist allemal besser, als wenn lediglich die Layer angegeben wird. Außerdem ist zu bedenken, dass mehr Layer im Container meist auch bedeuten, dass mehr Pakete im Container installiert sind. Und da das wiederum mehr Schwachstellen und somit ein höheres Risiko mit sich bringt, sollte man immer darauf achten, möglichst kleine Images zu verwenden, die gerade noch die Anforderungen der jeweiligen Anwendung erfüllen.
Developer-First Security für Container
Mit Snyk identifizieren Sie Schwachstellen in Container-Images und Kubernetes-Workloads und adressieren sie automatisch.
Lückenlose Container-Sicherheit
Container bestehen aus mehreren Layern (Schichten). Deshalb müssen sie sorgfältig auf Schwachstellen in benutzerdefiniertem Code, Open-Source-Abhängigkeiten, Containern und den Dockerfiles selbst geprüft werden. In einigen Fällen sollte man zudem auch Infrastructure-as-Code (IaC)-Dateien in den Blick nehmen. Dabei handelt es sich um Komponenten, die in aktuellen cloudnativen Anwendungen zum Einsatz kommen. Sie sind daher ein wichtiger Eckpfeiler für jeden sicheren Entwicklungsprozess.
Snyk hat diverse Scanner für cloudnative Anwendungen im Angebot. So lassen sich Sicherheitslücken bereits frühzeitig im Entwicklungsprozess erkennen und ausräumen. Zudem kann Snyk nahtlos in die bestehenden Entwicklungsprozesse eingebunden werden. So werden Reibungsverluste vermieden, die ansonsten bei der Einführung neuer Sicherheitsverfahren entstehen könnten. Auf diese Weise können Sicherheitsmaßnahmen in die frühen Phasen der Entwicklung verlagert und Vorkehrungen getroffen werden, die Container und Anwendungen von Beginn an sicherer machen.
Und vor allem können Sie mit Snyk Container nicht nur Container, sondern auch Dockerfiles scannen und so die Schwachstellen einzelnen Befehlen zuordnen, durch die sie verursacht werden. Zusätzlich erhalten Sie Empfehlungen und sogar Pull-Requests für Base-Images mit weniger Schwachstellen. Mithilfe kontextualisierter Sicherheitsinformationen können Gegenmaßnahmen in der Entwicklung anhand des verursachten Sicherheitsrisikos priorisiert und der Schutz von Containern und Anwendungen somit erhöht werden – mit dem geringstmöglichen Aufwand.
Antworten auf häufige Fragen zu Container-Scans
Wie funktionieren Container-Scans?
Meist werden Container mithilfe von Sicherheitstools auf Schwachstellen durchforstet. Dabei wird das Container-Image Schicht für Schicht ausgewertet, um mögliche Sicherheitslücken zu identifizieren. Hierbei kommen oft Datenbanken zum Einsatz, in denen bekannte Schwachstellen verzeichnet sind. So können Unternehmen mit der sich ständig wandelnden Bedrohungslage Schritt halten. Zudem enthalten containerisierte Anwendungen unterschiedliche Komponenten wie benutzerdefinierten Code, Open-Soucre-Abhängigkeiten, Images, Dockerfiles und vieles mehr. Auch deren konsequente Prüfung ist für eine lückenlose Container-Sicherheit unabdingbar.