Umgang mit CVEs in Kubernetes

CVE steht für "Common Vulnerabilities and Exposures" und bezieht sich auf eine öffentliche Liste bekannter Sicherheitslücken oder Schwachstellen in Software, einschließlich Kubernetes. Jeder Schwachstelle wird eine CVE-Nummer zugewiesen, um sie eindeutig identifizieren und verfolgen zu können.

cve

Die Veröffentlichung einer CVE-Nummer ist eine „offizielle“ Bestätigung, dass die Schwachstelle bereits öffentlich bekannt ist und von potenziellen Angreifern ausgenutzt werden kann. Die Erfahrung zeigt, dass kurz nach der Veröffentlichung eines CVE auch Exploits verfügbar sind.

Es ist wichtig, dass Organisationen CVEs verfolgen und geeignete Maßnahmen ergreifen, um ihre Systeme zu schützen und Schwachstellen zu beheben.

Im Kontext von Kubernetes gibt es zwei primäre Stellen, an denen auf bekannte CVEs überprüft werden kann. Die erste ist das Container-Repository, das mit einem Virenscanner ausgestattet ist, um Sicherheitslücken zu identifizieren. Die zweite ist die RunTime-Sicherheitslösung (z.B. AquaSecurity oder sysdig), die so konfiguriert werden kann, dass sie Images mit bestimmten, als unsicher eingestuften CVE-Werten blockiert werden.

Die regelmäßige Überprüfung des Kubernetes-Clusters sowie aller anderen IT-Systeme auf bekannte CVEs ist daher ein Muss. Das Halten der Systeme auf dem neuesten Stand trägt ebenfalls zur Risikominimierung bei.

 

CVE-Score

Der CVE-Score ist ein numerisches Bewertungssystem, das von der National Vulnerability Database (NVD) verwendet wird, um den Schweregrad von Sicherheitslücken in Softwareprodukten zu bewerten. Der Score wird auf einer Skala von 0 bis 10 vergeben, wobei 10 der höchste Wert ist.

Der Score (CVSS v3.0 Ratings) wird in vier Gruppen eingeteilt, die wie folgt klassifiziert sind:

 Severity  Severity
 0.0  None
 0.1 - 3.9   Low
 4.0 - 6.9  Medium 
 7.0 - 8.9  High
 9.0 - 10.0   Critical 

 

Der CVE-Score wird anhand mehrerer Faktoren berechnet, die im „Common Vulnerability Scoring System (CVSS)“ definiert sind. Das Thema wird in einem weiteren Beitrag ausführlich behandelt.

Wichtig ist jedoch, dass ein höherer CVE-Score nicht unbedingt bedeutet, dass eine Schwachstelle für eine bestimmte Anwendung oder Umgebung gefährlicher ist. Die Bewertung des Risikos hängt von verschiedenen Faktoren ab, wie z.B. der Sensibilität der Daten, der Konfiguration des Systems und dem potenziellen Angriffsvektor.

Die für die Sicherheit einer Anwendung oder eines Systems Verantwortlichen müssen eine angemessene Risikobewertung durchführen, um festzustellen, wie bedrohlich eine bestimmte Schwachstelle ist. Es kann durchaus sein, dass eine Schwachstelle mit einem niedrigeren CVE- Score für eine bestimmte Anwendung oder Umgebung ein höheres Risiko darstellt als eine Schwachstelle mit einem höheren CVE-Score.

Tatsächlich ist der CVE-Score ein nützliches Instrument zur allgemeinen Bewertung der Schwere einer Sicherheitslücke auf der Grundlage einer Reihe von Faktoren. Alle diese Faktoren sind jedoch abstrakt und berücksichtigen keine spezifische Anwendung oder Umgebung. Erst nach einer genauen Bewertung der für den Anwendungsfall relevanten Punkte kann das tatsächliche Risiko einer Schwachstelle abgeschätzt werden.

 

Sind alle CVEs gefährlich?

Wenn ein Container-Image mehrere CVEs enthält, aber nur eine bestimmte Komponente des Images verwendet wird, ist es notwendig zu verstehen, welche CVEs eine tatsächliche Bedrohung für das System darstellen. Hier sind einige Schritte, die in dieser Situation unternommen werden können:

  1. Identifizieren Sie die tatsächlich verwendeten Komponenten innerhalb des Images. Prüfen Sie, ob es CVEs für diese Komponenten gibt.
  2. Bewerten Sie die CVEs, die die verwendeten Komponenten betreffen. So können Sie das Risiko jeder CVE einschätzen.
  3. Führen Sie Sicherheitsüberprüfungen durch, um festzustellen, ob CVEs in einem laufenden Container ausgenutzt werden können.
  4. Wenn möglich, aktualisieren Sie das Image, um bekannte Schwachstellen zu beheben.
  5. Implementieren Sie zusätzliche Sicherheitsmaßnahmen wie Netzwerksicherheitsrichtlinien, um das Risiko von Angriffen zu minimieren.

Insgesamt sollten Sie die Bedrohung durch CVEs sorgfältig abwägen und Maßnahmen ergreifen, um das Risiko von Angriffen zu minimieren. Wenn das Image jedoch viele CVEs enthält und es schwierig ist, festzustellen, welche CVEs tatsächlich eine Bedrohung darstellen. Es kann auch sinnvoll sein, ein neues Image zu erstellen, das auf den tatsächlich benötigten Komponenten basiert und nur wenige oder gar keine CVEs enthält (einfacher gesagt als getan).

 

Wer trägt die Verantwortung? Plattformbetreiber oder Applikationsentwickler?

Sicherlich haben Sie die obere Frage bereits mehrmals gehört und kennen die richtige Antwort darauf... Die Verantwortung für die Sicherheit von Container-Images liegt in der Regel bei allen Beteiligten, einschließlich des Plattformbetreibers und des Applikationsentwicklers. Es ist wichtig, dass sich beide Parteien ihrer Verantwortlichkeiten bewusst sind und zusammenarbeiten, um die Sicherheit des Kubernetes-Clusters (passt auch zu Monolit) und der darin laufenden Container-Images zu gewährleisten.

Der Plattformbetreiber ist in der Regel dafür verantwortlich, dass der Kubernetes-Cluster ordnungsgemäß eingerichtet und konfiguriert ist, einschließlich der Implementierung von Sicherheitsrichtlinien und -maßnahmen. 

Der Applikationsentwickler ist in der Regel dafür verantwortlich (je nachdem, wer für die CI/CD-Pipeline verantwortlich ist), sichere Container-Images bereitzustellen, die frei von Sicherheitslücken sind. Dazu gehören z.B. die Aktualisierung von Abhängigkeiten und Bibliotheken, um bekannte Schwachstellen zu beheben, das Scannen von Images auf Sicherheitslücken und die Implementierung von Sicherheitsrichtlinien und Best Practices während des Entwicklungsprozesses.

 

Mögliche Strategie zur Risikominimierung

Man benötigt immer die Strategie, die dazu beitragen sollte, die Sicherheit des Kubernetes-Clusters zu gewährleisten und das Risiko von Angriffen auf das System zu minimieren. Beachten Sie, dass jede Organisation unterschiedliche Anforderungen und Bedrohungen hat und es daher notwendig sein kann, die Strategie an die spezifischen Bedürfnisse anzupassen.

Die folgenden Punkte sind nur Beispiele und erheben keinen Anspruch auf Vollständigkeit:

  • Verwenden Sie entsprechende ein Tool, um die Container-Images regelmäßig auf bekannte CVEs zu überprüfen. 
  • Stellen Sie sicher, dass Sie Container-Images nur von vertrauenswürdigen Quellen herunterladen. Verwenden Sie daher etablierte Image-Repositories und prüfen Sie auch in diesen Fällen die Images auf bekannte Schwachstellen.
  • Aktualisieren Sie Container-Images und Kubernetes-Cluster regelmäßig, um sicherzustellen, dass alle bekannten Schwachstellen behoben wurden. So können Sie das Risiko von Angriffen auf das System minimieren.
  • Verwenden Sie RBAC, um sicherzustellen, dass nur autorisierte Benutzer auf das System zugreifen können. Bitte Last-Privilige-Prinzip nicht vergesen.
  • Implementieren Sie Netzwerksicherheitsrichtlinien, um den Datenverkehr innerhalb des Kubernetes-Clusters zu steuern. 
  • Überwachung des Kubernetes-Clusters auf verdächtige Aktivitäten und ungewöhnlichen Datenverkehr. 

 

Durchführung der CVE-Risikobewertung

Die Durchführung der CVE-Risikobewertung ist eine äußerst wichtige Aufgabe, bei der alle relevanten Faktoren berücksichtigt werden müssen. Im Allgemeinen kann die Risikobewertung in fünf Schritte unterteilt werden:

1. Identifizieren Sie die CVE

Ermitteln Sie die CVE-ID, die der anfälligen Software oder Systemkomponente zugeordnet ist, und sammeln Sie alle verfügbaren Informationen über die Schwachstelle.

2. Analysieren Sie die Auswirkungen

Bestimmen Sie die möglichen Auswirkungen der Schwachstelle auf die Integrität, Vertraulichkeit und Verfügbarkeit des Systems oder der Anwendung. Zu berücksichtigende Faktoren: z.B. die Art der Anwendung oder des Systems, die zugrunde liegende Technologie, die Art des Angriffs, der zur Ausnutzung der Schwachstelle erforderlich ist, usw.

3. Schätzen Sie die Eintrittswahrscheinlichkeit

Schätzen Sie die Wahrscheinlichkeit einer erfolgreichen Ausnutzung der Schwachstelle ab, z.B. die Verfügbarkeit von Exploits, die Komplexität des Angriffs, den Zugriff auf das betroffene System oder die betroffene Anwendung, die Art der Bedrohung usw.

4. Bewerten Sie die Schwere der Schwachstelle

Kombinieren Sie die Ergebnisse der Schritte 2 und 3, um den Schweregrad der Schwachstelle zu bewerten. Sie können die bereits bekannte Skala verwenden: niedrig, mittel, hoch oder kritisch.

5. Bestimmen Sie die Maßnahmen

Basierend auf der Bewertung des Schweregrads der Schwachstelle sollten geeignete Maßnahmen zur Risikominderung ergriffen werden, wie z.B:  Patching, Konfigurationsänderungen, Netzwerksegmentierung, Offline-Schaltung, oder die Einführung anderer risikomindernder Schutzmaßnahmen.

 

Fazit

Es ist verständlich, dass es keine einheitliche Methode zur Durchführung einer CVE-Risikobewertung gibt, da die Bewertung von einer Vielzahl von Faktoren abhängig ist. Es ist auch wichtig, bewährte Verfahren und Best Practices zu berücksichtigen und eine umfassende Bewertung durchzuführen, um mögliche Risiken zu identifizieren und optimal zu behandeln.

Maßnahmen zur Risikominderung hängen stark von den jeweiligen Umständen ab. Eine allgemeingültige Lösung gibt es leider nicht. Gesunder Menschenverstand und eine individuelle Beurteilung sind wichtige Faktoren bei der Umsetzung von Risikominderungsmaßnahmen und nicht die blinde Befolgung von Prozessen.

 

 

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.