Container als Plattform des Applikationsbetriebs haben sich mit der Weile in den Rechenzentren etabliert. Um die eigene Anwendung in den Container zu bringen, benötigen Entwickler einen Basiscontainer, der Grundfunktionalitäten des Betriebssystems bereitstellt, die die Anwendung benötigt. Hierzu gehören etwa Systembibliotheken und Hilfsprogramme.

Das Erstellen eines funktionierenden Basiscontainers erfordert tieferes systemnahes Know-how, um die notwendigen Komponenten bereitzustellen. Daher verwenden viele Entwickler Basiscontainer "aus dem Internet". Dies ist aus den folgenden Gründen problematisch:

  • Nicht bei allen diesen Containern ist die Zusammenstellung der Komponenten dokumentiert. Dies ermöglicht das Einschleusen von Sicherheitslücken über sogenannte Supply Chain Attacks.
  • Viele der Container enthalten mehr Komponenten als notwendig, damit erhöht sich die Angriffsoberfläche
  • Wird in einer der verwendeten Softwarekomponenten des Basiscontainers eine Sicherheitslücke bekannt, schlagen die Patches nicht automatisch auf den Applikationscontainer durch. Das bedeutet, dass, anders als bei einem normalen Betriebssystem, die Anwendungscontainer nicht dem gleichen Patchzyklus durchlaufen, außer dies wird manuell angestoßen.

matrix Secure Containers adressiert alle diese Themen. In einem automatisierten Buildprozess werden Basiscontainer mit Frameworks oder Anwendungen wie z. B. Java oder einem Apache Webserver erstellt. Diese Container werden tagesaktuell gepatcht. Dabei werden Schichten verwendet, so dass ein Patch in eine Cryptobibliothek wie OpenSSL dazu führt, dass alle abhängigen Container, die die Bibliothek verwenden, ebenfalls neu erstellt werden. Dabei werden alle Container aus dem Quellcode gebaut, und sowohl der Quellcode wie auch das Buildverzeichnis werden archiviert.

Somit existiert eine vollständige Dokumentation, die bei einem Sicherheitsvorfall verwendet werden kann, um Supply-Chain-Attacken auszuschließen. Die Container sind minimal gebaut, um die Angriffsoberfläche zu optimieren. Fehlen dem Entwickler Werkzeuge in der Fehlersuche, können diese einfach als Schicht hinzugefügt werden.

Der Vortrag beschreibt, wie dies umgesetzt wurde und zeigt so einen Weg auf, wie Entwickler dauerhaft sicherere Container für ihre produktiven Anwendungen erstellen können.