CVE-2025-62878: Traversée de chemin dans Local Path Provisioner
Vue d'ensemble
| Élément | Valeur |
|---|
| CVE ID | CVE-2025-62878 |
| GHSA ID | GHSA-jr3w-9vfr-c746 |
| Gravité | Critique (CVSS 10.0) |
| CWE | CWE-23 (Traversée de chemin relative) |
| Composant affecté | rancher/local-path-provisioner |
| Versions affectées | v0.0.27 ~ v0.0.32 |
| Versions corrigées | v0.0.33+ |
Description de la vulnérabilité
Une vulnérabilité de traversée de chemin existe dans le paramètre pathPattern de StorageClass. Un utilisateur malveillant peut manipuler pathPattern en utilisant des éléments de chemin relatifs (par exemple ../) pour créer des PersistentVolumes pointant vers des emplacements arbitraires sur le nœud hôte, contournant la restriction de répertoire de base configurée.
Cela permet aux attaquants de :
- Accéder à des fichiers sensibles de l'hôte (par exemple
/etc/kubernetes/pki/)
- Écraser des fichiers système critiques
- Compromettre entièrement le cluster en volant les clés privées de l'autorité de certification Kubernetes
Versions affectées (Vérifiées)
Remarque : L'avis officiel GitHub indique que les versions "< 0.0.34" sont affectées, mais nos tests confirment :
- v0.0.33 est déjà corrigée
- v0.0.26 et antérieures ne sont pas affectées (la fonctionnalité pathPattern n'existe pas)
- Plage affectée réelle : v0.0.27 <= version <= v0.0.32
Chronologie
| Événement | Date |
|---|
| Fonctionnalité pathPattern introduite | 2024-05-26 (commit af85381) |
| Première version vulnérable (v0.0.27) |
Reproduction
Voir le répertoire exploit/ pour les étapes de reproduction détaillées et les scripts.
Démarrage rapide
# 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
Correction
Mettez à niveau vers v0.0.33 ou ultérieure :
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.33/deploy/local-path-storage.yaml
Références