Skip to main content

So erkennen und beheben Sie die Kubernetes-Sicherheitslücke CVE-2019-11249

Artikel von
Headshot of Hayley Denbraver

Hayley Denbraver

kubernetes tumb

11. März 2020

0 Min. Lesezeit

In den vergangenen Jahren hat Kubernetes die Tech-Welt im Sturm erobert und sich zum beliebtesten Cloud-Container-Orchestrierungssystem entwickelt. Kubernetes ist nach wie vor ein leistungsstarkes und nützliches Open-Source-System für Entwickler. Wie jedes Tool muss es jedoch mit Bedacht eingesetzt werden. Sie sollten Maßnahmen ergreifen, um Ihre Cluster abzusichern. Heute geht es um zwei kürzlich entdeckte Sicherheitslücken (CVE-2019-11247 und CVE-2019-11249) und darum, wie Sie sie beheben können.

Kubernetes-Verzeichnis-Traversal-Sicherheitslücken

Ein Verzeichnis-Traversal ist eine Angriffsart, bei der Hacker auf eingeschränkte Verzeichnisse und Dateien außerhalb des Stammverzeichnisses des Servers zugreifen können. Durch die Manipulation von URLs lässt sich eine Anwendung dazu bringen, „geschützte“ Dateien offenzulegen oder Befehle auszuführen, für die der Benutzer eigentlich keine Berechtigung haben sollte.

Anders als bei anderen Angriffsarten werden bei einem Verzeichnis-Traversal Schwachstellen in einer ansonsten korrekt funktionierenden Sicherheitsrichtlinie für Entwickler ausgenutzt. Der Code muss dabei nicht unbedingt Fehler enthalten. Alles funktioniert wie vorgesehen. Vielmehr sind Berechtigungen, Pfade oder Dateizugriffskonfigurationen fehlerhaft oder unzureichend.

Die Probleme begannen vor fast zwei Jahren mit einer klassischen Verzeichnis-Traversal-Sicherheitslücke beim Vorgang kubectl cp. In diesem Fall konnten Container aufgrund der unsicheren Verarbeitung von TAR-Daten mithilfe von Schadcode beliebige Dateien in beliebige Pfade auf dem Knoten (Rechner) schreiben, von dem sie kopiert wurden. Es war nicht schwierig, die Verzeichnisebenen zu durchlaufen und die Namen oder Dateien aufzuspüren.

Nachfolgende Korrekturen sollten Verzeichnispfade bereinigen, indem Pfad-Traversals entfernt wurden. Das Problem war damit jedoch nicht vollständig behoben. Nach dem Patch stellte sich heraus, dass Angreifer Pfade weiterhin manipulieren konnten, indem sie symbolische Links aus Headern in TAR-Archiven erstellten und ihnen folgten.

Anfang 2019 wurde bei der Verwendung von kubectl cp ein drittes Verzeichnis-Traversal-Problem entdeckt. Angreifer konnten Dateien und Verzeichnisse zwischen Containern und Knoten kopieren, indem sie eine schädliche TAR-Binärdatei in einen heruntergeladenen Container einfügten. So konnte ein Hacker Dateien auf dem Rechner eines Benutzers ersetzen oder erstellen, selbst wenn sich der betreffende Speicherort außerhalb des Zielverzeichnisses des kubectl-cp-Vorgangs befand.

CVE-2019-11249

Im August veröffentlichte Kubernetes CVE-2019-11249. Die darin enthaltene Korrektur behob die Verzeichnis-Traversal-Sicherheitslücke endgültig. Der kubectl-cp-Vorgang prüft nun beim Dekomprimieren eines TAR-Archivs den Zielpfad jeder Datei wesentlich gründlicher. Dekomprimierte Dateien lassen sich nicht mehr in andere Pfade als das Zielverzeichnis des ursprünglichen kubectl-cp-Vorgangs kopieren.

Ein kurzer Blick auf CPE-2019-11247

Etwa zur gleichen Zeit, als die Verzeichnis-Traversal-Sicherheitslücke behoben wurde, entdeckte man die Sicherheitslücke CVE-2019-11247. Sie ermöglichte es Angreifern, clusterweite benutzerdefinierte Ressourcen zu lesen, zu ändern oder zu löschen, selbst wenn ihre Berechtigungsrollen nur den Zugriff auf Ressourcen im eigenen Namespace – also einem Bereich des Clusters – erlaubten.

Die Verzeichnis-Traversal-Sicherheitslücke und die Sicherheitslücke CPE-2019-11247 haben gemeinsam, dass Benutzer auf Bereiche des Containers (und damit auf Knoten) zugreifen konnten, für die sie keine Berechtigung haben sollten oder tatsächlich hatten.

CPE-2019-11247 beruhte jedoch darauf, wie der API-Server Sicherheitsberechtigungen im Verhältnis zum Geltungsbereich des API-Endpunkts interpretierte. Die Verzeichnis-Traversal-Sicherheitslücke hingegen war auf unzureichende Sicherheitsberechtigungen zurückzuführen. Im Kern handelte es sich um ein Problem mit der rollenbasierten Zugriffskontrolle (RBAC). Anders ausgedrückt: Wenn eine globale (clusterweite) benutzerdefinierte Ressource auf einen Namespace beschränkt war und das Konto, das auf die Ressource zugriff, eine bestimmte Rollendefinition hatte (beispielsweise einen Platzhalter), ließ sich der Namespace umgehen und auf globale Ressourcen zugreifen.

Maßnahmen zur Behebung von CVE-2019-11247 und CVE-2019-11249

Beide Sicherheitslücken gelten als mittelschwer bis schwerwiegend und sollten so schnell wie möglich behoben werden. Für die Behebung von CVE-2019-11247 und CVE-2019-11249 werden zwei Vorgehensweisen empfohlen:

  • Aktualisieren Sie Kubernetes auf eine gepatchte Version:Allen Benutzern wird dringend empfohlen, ihre Cluster und kubectl-Clients auf eine gepatchte Version zu aktualisieren. Kubernetes 1.13.9, 1.14.5 und 1.15.2 enthalten Patches für beide Sicherheitslücken. Nutzer von Version 1.12 oder älter sollten in der offiziellen Dokumentation nachlesen, wie sie am besten aktualisieren. Wenn Sie Version 1.12 oder älter verwenden, ist es Zeit für ein Upgrade – Version 1.12 hat das Supportende erreicht.

  • Falls ein Upgrade nicht möglich ist, entfernen Sie Platzhalter-Rollendefinitionen aus dem gesamten Cluster:Manche Nutzer auf verwalteten Plattformen können möglicherweise nicht sofort ein Upgrade durchführen. Entfernen Sie in diesem Fall Platzhalterberechtigungen (gekennzeichnet durch *) für Ressourcen oder apiGroups.

Entfernen Sie RBAC nicht aus einem Cluster

Cluster, in denen RBAC nicht aktiviert ist, sind von CVE-2019-11249 nicht betroffen und theoretisch auch nicht von CVE-2019-11247. Die Verwendung von RBAC bietet jedoch ein noch größeres Sicherheitsrisiko, da alle Konten Root-Zugriff haben. Entfernen Sie RBAC nicht aus einem Cluster – auch nicht als „vorübergehende Schnelllösung“.

Fazit

Wie sich diese Kubernetes-Sicherheitslücke auswirkt, hängt von den jeweiligen Clustern und den darin verwendeten Ressourcen ab. Sicherheitslücken in Kubernetes sind dennoch ein ernstes Problem, da immer mehr Unternehmen Kubernetes zur Orchestrierung ihrer Cloud-Container einsetzen. Die neuesten Patches beheben nach aktuellem Kenntnisstand CVE-2019-11247 und CVE-2019-11249.

Sicherheit ist jedoch eine kontinuierliche Aufgabe. Diese Patches zeigen einmal mehr, dass Hacker immer wieder raffinierte Wege finden, Schwachstellen und Fehler im Code auszunutzen. Bleiben Sie geschützt, indem Sie Ihre Systeme stets aktualisieren und sich über die Kubernetes-Sicherheit auf dem Laufenden halten.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.