Skip to main content

Container-Sicherheit über den gesamten SDLC hinweg

Artikel von
container scans

16. Oktober 2019

0 Min. Lesezeit

Container entwickeln sich zunehmend zur Standardeinheit von Software. Das Container-Image, das in der OCI Image Specification technisch definiert ist, ist ein zentraler Bestandteil moderner Tools – von Docker und Kubernetes bis hin zu Plattformen wie AWS Fargate und Google Cloud Run. Was bedeutet das für die Anwendungssicherheit?

Wo Container-Images zum Einsatz kommen

Eine interessante Eigenschaft von Container-Images ist, dass sie den Softwareentwicklungslebenszyklus (SDLC) durchlaufen.

  • Entwickler erstellen Images lokal. Sie bieten eine praktische Möglichkeit, Software einfach – manchmal zu einfach – zu verteilen.

  • Images werden auch als Teil von Continuous-Integration- und Continuous-Delivery-Pipelines erstellt. An das Image lassen sich Metadaten zur Anwendung anhängen, um die Verwaltung von Assets zu verbessern.

  • Images werden in öffentliche und private Registries hochgeladen, von wo aus sie zur Bereitstellung weitergegeben werden können.

  • Schließlich werden Images in Clustern bereitgestellt – von Entwicklung und Test bis hin zur Produktion. Diese werden zunehmend mit Kubernetes oder ähnlichen Tools verwaltet.

Jede dieser Phasen bietet die Möglichkeit, das Image auf Sicherheitslücken zu prüfen. Doch an welcher Stelle ist das am sinnvollsten?

Wo sollten wir unsere Images testen?

Wenn es darum geht, unsere Container-Images zu schützen, liegt der Gedanke nahe, sie nur an einer Stelle im SDLC zu testen. Wenn sich beispielsweise nur sichere Images in Ihrer Registry befinden, sind Sie dann geschützt? Die Realität ist komplexer und bringt in der Regel Kompromisse mit sich.

Je näher an der Produktion Sie testen, desto sicherer können Sie die Risiken Ihrer laufenden Anwendungen einschätzen. Wenn Sie nicht als Softwareanbieter Tools für andere entwickeln, möchten Sie wahrscheinlich vor allem die Anwendungen schützen, die Sie gerade in der Produktion betreiben. Tests spät im Zyklus sind auch dann hilfreich, wenn eine neue Sicherheitslücke in einer von Ihnen verwendeten Abhängigkeit bekannt wird. So können Sie schnell feststellen, welche Produktionsanwendung betroffen ist, und mit der gebotenen Dringlichkeit handeln.

Wenn Sie jedoch nur am Ende des SSDLC testen, bedeutet das wahrscheinlich längere Feedbackzyklen für Entwickler. Der Entwickler, der ein Image ausgewählt oder geändert hat, hat darauf aufgebaut und sich inzwischen anderen Aufgaben zugewandt. Die erforderlichen Änderungen zur Behebung der Sicherheitslücke werden dadurch störend und teuer. Denken Sie daran: Es geht nicht nur darum, zu wissen, welche Sicherheitslücken vorhanden sein könnten (was wichtig ist), sondern sie zu beheben. Lokale Tests ermöglichen die schnellsten Feedbackzyklen, setzen aber voraus, dass jeder Entwickler daran denkt, jedes Mal einen Scan durchzuführen – eine kaum umfassende oder realistische Lösung.

Bevor Sie zu dem Schluss kommen, dass die Pipeline also der richtige Ort für Tests ist, sollten Sie auch die Implementierungskosten berücksichtigen. Möglicherweise haben Sie ein oder zwei zentral verwaltete Container-Registries, über die Sie alle erstellten Images prüfen können. Wahrscheinlich verfügen Sie jedoch über deutlich mehr Continuous-Integration-Pipelines. Je nach Automatisierungsgrad und Zuständigkeit für die verschiedenen Tools in Ihrem Unternehmen kann es sinnvoller sein, zunächst an der einen oder anderen Stelle anzusetzen.

Außerdem steht uns in den verschiedenen Phasen des SDLC unterschiedlich viel Kontext zur Verfügung. Bei lokalen Tests oder Tests in CI haben wir wahrscheinlich Zugriff auf den Quellcode und die Versionskontrollinformationen. Dadurch lassen sich bestimmte Arten von Problemen möglicherweise leichter erkennen, etwa Probleme durch den verwendeten Compiler oder nicht signierte Commits eines Angreifers. Auch lässt sich so besser nachvollziehen, wie eine Bibliothek eingebunden wurde. Bei Tests in der Produktion wissen wir dagegen genau, welche Images wo verwendet werden und wie sie konfiguriert sind. Das kann uns helfen, die entdeckten Probleme nach Priorität zu ordnen.

Fazit

Tatsächlich erfüllt das Testen an nur einer Stelle möglicherweise die Anforderungen einer einzelnen Funktion (Entwicklung, Betrieb oder Sicherheit), deckt aber wahrscheinlich nicht das übergeordnete Unternehmensziel ab, Sicherheitslücken so schnell wie möglich zu finden und zu beheben. Zusammengefasst:

Tests auf Sicherheitslücken in verschiedenen Phasen des SDLC

Phase

Beschreibung

Kosten

Feedback

Vollständigkeit

Lokal

Ideal für das Debugging und den Wissensaufbau bei Entwicklern, erfordert jedoch, dass einzelne Entwickler aktiv werden. Eine Durchsetzung ist nicht möglich.

Mittel

Schnell

Niedrig

CI/CD

Als Gate sehr effektiv und mit schnellem Feedback für Entwickler. Erfordert eine Implementierung für jede Pipeline, deren Aufwand davon abhängt, wie standardisiert das Pipeline-Management in Ihrem Unternehmen ist. Bei Problemen mit niedriger Schwere kann ein fehlgeschlagener Build kontraproduktiv sein. Daher sind weitere Feedbackzyklen erforderlich.

Mittel

Schnell

Variabel

Registry

Oft gibt es nur einen Verantwortlichen, was die Integration vereinfacht und alle selbst entwickelten Images abdeckt – unabhängig davon, wie sie erstellt wurden. Möglicherweise gibt es viele irrelevante Meldungen, weil Images unter Umständen nicht verwendet werden.

Niedrig

Mittel

Mittel

Produktion

Vermittelt ein genaues Bild der tatsächlich ausgeführten Software einschließlich Inhalten von Drittanbietern. Allerdings kann das Feedback an die Entwicklungsteams langsam sein, und Sicherheitslücken können in laufenden Anwendungen ausgenutzt werden.

Hoch

Langsam

Hoch

Mit welcher Option Sie beginnen, hängt von den Gegebenheiten in Ihrem Unternehmen ab. Das Ziel sollte jedoch sein, containerbasierte Anwendungen während des gesamten SDLC gründlich zu testen. Sich auf ein einzelnes Gate zu verlassen, ist zu vereinfachend und führt wahrscheinlich zu Reibungsverlusten – entweder zwischen Entwicklungs-, Betriebs- und Sicherheitsteams oder bei der Geschwindigkeit, mit der Sie Anwendungen bereitstellen.

Container-Sicherheit mit Fokus auf Entwickler

Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.

Weiterlesen

feature insights announcement
Blog

Node-gyp-Supply-Chain-Kompromittierung: Ein sich selbst verbreitender npm-Wurm, der sich in binding.gyp versteckt

Ein neuer npm-Wurm missbraucht binding.gyp, um node-gyp während der Installation auszuführen. So können schädliche Pakete Code ohne Lifecycle-Skripte ausführen. Der Wurm stiehlt Zugangsdaten, setzt sich in GitHub fest und verbreitet sich selbstständig über Maintainer.

blog feature toolkit
Blog

Bösartige Veröffentlichung des elementary-data-PyPI-Pakets stiehlt Cloud-Zugangsdaten von Data Engineers

Angreifer nutzten eine Sicherheitslücke durch Skriptinjektion in GitHub Actions aus, um eine bösartige Version der elementary-data-Python-CLI (v0.23.3) zu veröffentlichen. Diese enthielt eine Backdoor zum Diebstahl von Zugangsdaten, die auf dbt-Profile, Cloud-Anbieterschlüssel und SSH-Geheimnisse in Data-Engineering-Umgebungen abzielte.

Blog

Qinglong-Aufgabenplaner: RCE-Schwachstellen werden für Kryptomining ausgenutzt

Zwei Schwachstellen zur Umgehung der Authentifizierung (CVE-2026-3965, CVE-2026-4047) im Qinglong-Aufgabenplaner wurden in freier Wildbahn ausgenutzt, um Kryptomining-Malware einzuschleusen. Erfahren Sie, was passiert ist, wie die Angriffe abliefen und was Betreiber selbst gehosteter Anwendungen aus diesem Vorfall lernen sollten.