Am 20. November 2024 wurde CVE-2024-10220 öffentlich bekanntgegeben, eine Sicherheitslücke in Kubernetes, die als kritisch eingestuft wurde. Sie betrifft das gitRepo-Volume, ein veraltetes Feature, das es Angreifern ermöglichen könnte, beliebige Befehle außerhalb der Container-Grenzen auszuführen. Im Folgenden eine detaillierte Analyse dieser Schwachstelle, ihrer Auswirkungen und wie sie behoben werden kann.
Die Sicherheitslücke erlaubt es Angreifern, mithilfe der gitRepo
-Volume-Funktion von Kubernetes beliebige Befehle auszuführen. Das Problem liegt darin, dass das Verzeichnis .git/hooks
innerhalb eines geklonten Repositories genutzt werden kann, um Skripte außerhalb des Containers auszuführen. Dies birgt erhebliche Risiken für die Integrität und Vertraulichkeit eines Clusters.
Betroffen sind Kubernetes-Versionen, die das gitRepo
-Volume unterstützen und keine Patches enthalten, die diese Schwachstelle schließen.
Die Sicherheitslücke betrifft die folgenden Kubernetes-Versionen:
- kubelet v1.30.0 bis v1.30.2
- kubelet v1.29.0 bis v1.29.6
- kubelet ≤ v1.28.11
Diese Versionen nutzen den fehlerhaften Mechanismus zur Verarbeitung von gitRepo
-Volumes, wodurch die Schwachstelle ausgenutzt werden kann.
Bewertung der Sicherheitslücke
- Schweregrad: Hoch
- CVSS-Score: 8.1 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N)
- Vektor: Angriffe sind über das Netzwerk möglich, erfordern niedrige Berechtigungen und keine Benutzerinteraktion.
Empfohlene Maßnahmen zur Behebung
1. Update auf eine sichere Version
Die Schwachstelle wurde in den folgenden Kubernetes-Versionen behoben:
- kubelet master/v1.31.0
- kubelet v1.30.3
- kubelet v1.29.7
- kubelet v1.28.12
Ein Update auf eine dieser Versionen wird dringend empfohlen. Die Patches begrenzen die Tiefe des Verzeichnisses, das durch gitRepo
-Volumes geklont werden kann, auf eine Ebene, wodurch der Zugriff auf .git/hooks
verhindert wird.
2. Abschaffung des gitRepo-Volumes
Da gitRepo
-Volumes als veraltet gelten, wird empfohlen, stattdessen Init-Container zu verwenden, um Repositories zu klonen. Anschließend können die geklonten Verzeichnisse in den Ziel-Container eingebunden werden.
Erkennung von Angriffen
Zur Überprüfung, ob ein Cluster anfällig ist oder möglicherweise bereits angegriffen wurde, kann folgender Befehl verwendet werden:
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.volumes[].gitRepo.directory | endswith("/.git")) | {name: .metadata.name, namespace: .metadata.namespace}'
Hinweis:
Einige Benutzer berichten über Kompatibilitätsprobleme mit älteren jq
-Versionen. Eine alternative Abfrage ohne endswith()
lautet:
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.volumes[].gitRepo.directory) | {name: .metadata.name, namespace: .metadata.namespace}'
Falls keine Einträge ausgegeben werden, ist Ihr Cluster nicht betroffen.
Mitigation durch präventive Sicherheitsmaßnahmen
- Zugriffsrechte minimieren: Stellen Sie sicher, dass nur autorisierte Benutzer Pods erstellen dürfen.
- Überwachung einrichten: Implementieren Sie kontinuierliches Monitoring, um ungewöhnliche Aktivitäten in Kubernetes-Clustern zu erkennen.
- Veraltete Funktionen deaktivieren: Entfernen Sie ungenutzte oder veraltete Kubernetes-Funktionen, wie
gitRepo
.
Professionelle Hilfe erwünscht?
Sentiguard ist spezialisiert auf Notfallhilfe nach Cyberattacken, IT Sicherheitsbeauftragte und IT Sicherheitskonzepte nach BSI Standard. Haben Sie Fragen und wünschen Sie unverbindliche Beratung, dann melden Sie sich gerne bei uns: