In this article
Eine solide Grundlage für Container-Sicherheit schaffen
Was ist Container-Scanning?
Beim Container-Scanning, auch Container-Image-Scanning genannt, werden mithilfe von Prozessen und Scanning-Tools Schwachstellen in Containern und ihren Komponenten erkannt. Es ist ein wichtiger Bestandteil der Container-Sicherheit und ermöglicht Entwicklern und Cybersecurity-Teams, Sicherheitsrisiken in containerisierten Anwendungen vor der Bereitstellung zu beheben.
Containerisierte Deployments werden immer beliebter – und das aus gutem Grund. Container ermöglichen es Entwickler:innen, schneller zu arbeiten und Anwendungen zuverlässig bereitzustellen, indem sie diese in eigenständige, portable Code-Einheiten verwandeln. Mit der zunehmenden Nutzung containerbasierter Software geht jedoch auch die Verantwortung für die Container-Sicherheit auf Entwickler:innen über. Container-Scanning ist eine effiziente Möglichkeit, sicherzustellen, dass Ihre Container geschützt sind.
Werfen wir einen genaueren Blick auf die Grundlagen des Container-Scannings und darauf, wie automatisierte Container-Scanner funktionieren. Außerdem besprechen wir, welche Arten von Schwachstellen Container-Scanner erkennen können und wie sich Image-Layer auf die Container-Sicherheit auswirken.
Grundlagen des Container-Scannings
Schwachstellen können auf verschiedene Weise in Container gelangen: durch die im Container enthaltene Software, durch die Interaktion des Containers mit dem Host-Betriebssystem und benachbarten Containern, durch Netzwerk- und Speicherkonfigurationen und mehr. Ein Container-Scanner ist ein automatisiertes Tool, das diese verschiedenen Container-Komponenten analysiert, um Sicherheitslücken zu erkennen.
Neben Schwachstellen, die direkt durch den Code und die Tools entstehen, die Sie einem Image hinzufügen, können Probleme auch von anderen Images ausgehen, auf die Ihre Container angewiesen sind. Diese Images werden als Parent-Images oder Basis-Images bezeichnet (wobei „Parent“ technisch gesehen korrekter ist). Ihr Container-Image basiert möglicherweise auf einem öffentlich verfügbaren Image mit bekannten Schwachstellen und Malware – insbesondere, wenn Sie das Image nicht von einem verifizierten Anbieter heruntergeladen und dessen Identität sowie die Inhalte des Images authentifiziert haben. Auch Images bekannter und vertrauenswürdiger Anbieter weisen häufig Schwachstellen auf. Wenn Sie Ihr Image jedoch auf Schwachstellen scannen und Ihre Parent-Images samt deren Schwachstellen identifizieren, können Sie oft mit einer einzigen Änderung zahlreiche Probleme beheben.
Sicherheitsscanner lassen sich in verschiedene Entwicklungsphasen integrieren. Sie können beispielsweise mögliche Parent-Images auf Ihrem Desktop scannen, bevor Sie eines als Basis für Ihr Image auswählen. Einige Tools und IDE-Plug-ins scannen Dockerfiles und schlagen alternative Images vor, die weniger Schwachstellen aufweisen oder kleiner sind. Viele Unternehmen integrieren das Scannen von Container-Schwachstellen in ihre Continuous-Integration- und Continuous-Delivery-(CI/CD)-Pipelines. Dort werden die produktionsnahen Images häufig vor dem Deployment erstellt. Durch das Scannen in Ihren Pipelines verhindern Sie, dass Container-Images mit zu vielen Problemen in Ihren Registries gespeichert und in die Produktion übernommen werden. Die meisten Teams überwachen containerisierte Deployments auch während des Betriebs auf Kubernetes oder einer anderen Plattform. Container-Sicherheitsscans können daher die Anwendungssicherheit deutlich verbessern, ohne Entwickler:innen wesentlich zusätzlich zu belasten.
Das Scannen von Container-Registries ist ebenfalls eine hervorragende Möglichkeit, die Zahl der Schwachstellen in allen häufig verwendeten Images Ihres Unternehmens zu reduzieren. Die Integration von Snyk in Docker Hub schafft beispielsweise eine vertrauenswürdige Quelle für öffentliche Images, die Entwickler:innen als Basis für ihre Container verwenden können. Sie können Ihre gespeicherten Images außerdem laufend überwachen, um neu bekannt gewordene Schwachstellen in vorhandenen Images zu erkennen und deren künftige Bereitstellung in der Produktion zu verhindern. Darüber hinaus verfügen Sie wahrscheinlich über ältere Images, die sich nur selten ändern, oder über Images von Drittanbietern, die in Ihrer Container-Registry gespeichert sind. Diese Images durchlaufen Ihre CI/CD-Pipelines nicht. Wenn Sie sie direkt in der Registry scannen, können Sie feststellen, ob sie sicher verwendet werden können. Ein Registry-Scanner gibt Entwickler:innen daher Sicherheit bei der Auswahl von Images für containerisierte Deployments.
Welche Arten von Container-Schwachstellen lassen sich erkennen?
Wie bereits erwähnt, können Schwachstellen auf verschiedene Weise in einen Container gelangen. Dazu zählen unsicherer Anwendungscode und Fehlkonfigurationen zur Laufzeit ebenso wie Netzwerkbedrohungen und Probleme mit der Zugriffskontrolle. Um sich vor diesen Bedrohungen zu schützen, sind kontinuierliches Container-Monitoring und aktuelle Kenntnisse über neu entdeckte Schwachstellen erforderlich.
Die meisten Lösungen für Container-Scanning nutzen öffentliche Quellen für Schwachstelleninformationen, etwa die National Vulnerability Database (NVD) oder die Datenbank Common Vulnerabilities & Exposures (CVE). Diese Datenbanken veröffentlichen bekannte Exploits und ermöglichen so automatisiertes Schwachstellenmanagement, Sicherheitsmessungen und Compliance.
Das Security-Research-Team von Snyk ergänzt Daten zu Container-Schwachstellen um Informationen, mit denen sich die oft überwältigende Zahl an Schwachstellen leichter priorisieren lässt. Zu den Faktoren zählen etwa, ob der Container in einem Kubernetes-Cluster ausgeführt wird und wie dieser konfiguriert ist, ob ein ausgereifter Exploit verfügbar ist, die Diskussionen in sozialen Medien sowie distributionsspezifische Schwachstellendetails zu Linux. Snyk Container stellt all diese Informationen bereit, damit Sie leichter erkennen, welche Probleme am dringendsten behoben werden müssen.
Wie Container-Layer die Erkennung von Schwachstellen beeinflussen
Container sind Bausteine moderner Anwendungen. Ein Vorteil ihres Einsatzes ist, dass Sie auf der Arbeit anderer aufbauen können. Docker hat dies für Entwickler:innen einfach gemacht und den Austausch von Container-Images über Docker Hub ermöglicht. Docker stellt außerdem eigene Docker Official Images bereit, die eine breite Auswahl an Programmiersprachen, Frameworks und anderen Anwendungsdiensten abdecken. Wenn Sie Ihre eigenen Images auf der Arbeit anderer aufbauen, bestehen Ihre Container aus mehreren schreibgeschützten Layern und einem abschließenden Lese-/Schreib-Layer.
Jeder neue Layer birgt das Risiko, neue Schwachstellen in den Container einzubringen. Daher ist es entscheidend, dass Ihr Container-Scanner Probleme Layer für Layer erkennt. Noch besser ist es, wenn er diese Layer den Befehlen oder Dockerfile-Anweisungen zuordnet, durch die sie erstellt wurden. So finden Entwickler:innen einen vertrauten Ansatzpunkt für Änderungen. Da Images fast immer auf anderen Images aufbauen – beispielsweise über den FROM-Befehl in einem Dockerfile –, ist ein Container-Schwachstellenscanner wie Snyk Container besonders nützlich, wenn er bestimmte Layer als Docker Official Image identifizieren und gezielt weniger anfällige Alternativen vorschlagen kann, statt nur die einzelnen Layer anzuzeigen. Mehr Layer in einem Container gehen üblicherweise mit mehr installierten Paketen einher. Da mehr Pakete auch mehr Schwachstellen und damit ein höheres Risiko bedeuten, gilt es außerdem als Best Practice, möglichst schlanke Images zu verwenden, die Ihren Anwendungsanforderungen entsprechen.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Umfassende Container-Sicherheit
Da Container aus mehreren Layern bestehen, erfordert umfassende Sicherheit das Scannen von individuellem Code, Open-Source-Abhängigkeiten, Containern und Dockerfiles sowie in manchen Fällen von Infrastructure-as-Code-Dateien (IaC). Diese Komponenten bilden moderne cloud-native Anwendungen und sind daher wichtige Bereiche, die Sie beim Aufbau eines sicheren Entwicklungs-Workflows berücksichtigen sollten.
Snyk bietet ein umfassendes Set an Sicherheitsscanning-Tools für cloud-native Anwendungen, mit denen Entwicklungsteams Schwachstellen früh im Entwicklungsprozess einfach finden und beheben können. Snyk lässt sich nahtlos in bestehende Entwicklungs-Workflows integrieren und verringert so den Aufwand, wenn Sie den neuen Sicherheitsprozess in Entwicklungsteams einführen. So können Unternehmen Sicherheit nach links verlagern und von Anfang an Sicherheitsmaßnahmen für ihre Container und Anwendungen umsetzen.
Snyk Container scannt nicht nur Ihre Container, sondern auch die Dockerfiles selbst. Dabei ordnet es Schwachstellen den Befehlen zu, durch die sie entstanden sind, und empfiehlt Parent-Images mit weniger Schwachstellen – auf Wunsch sogar per Pull Request. Dieser detaillierte Kontext zu Sicherheitsproblemen hilft Entwickler:innen, die Behebung nach Ausnutzbarkeit zu priorisieren und die Sicherheitslage von Containern und Anwendungen sofort mit möglichst wenigen Änderungen zu verbessern.
Häufig gestellte Fragen zum Container-Scanning
Wie funktioniert das Scannen von Containern?
Beim Scannen von Containern auf Schwachstellen analysiert ein Sicherheitstool in der Regel ein Container-Image Ebene für Ebene, um potenzielle Sicherheitsprobleme zu erkennen. Die meisten Scan-Lösungen greifen auf eine Datenbank bekannter Schwachstellen zurück. So können Unternehmen mit der sich wandelnden Bedrohungslage Schritt halten. Containerisierte Anwendungen bestehen außerdem aus mehreren Komponenten, darunter eigener Code, Open-Source-Abhängigkeiten, Images, Dockerfiles und mehr. Umfassende Container-Sicherheit setzt voraus, dass all diese Komponenten auf Schwachstellen gescannt werden.