CVE-2025-62878: Обход пути в Local Path Provisioner
Обзор
| Элемент | Значение |
|---|
| CVE ID | CVE-2025-62878 |
| GHSA ID | GHSA-jr3w-9vfr-c746 |
| Уровень опасности | Критический (CVSS 10.0) |
| CWE | CWE-23 (относительный обход пути) |
| Затронутый компонент | rancher/local-path-provisioner |
| Затронутые версии | v0.0.27 ~ v0.0.32 |
| Исправленные версии | v0.0.33+ |
Описание уязвимости
Уязвимость обхода пути существует в параметре pathPattern ресурса StorageClass. Злоумышленник может манипулировать параметром pathPattern, используя элементы относительного пути (например, ../), для создания PersistentVolumes, указывающих на произвольные расположения на узле, в обход ограничения настроенной базовой директории.
Это позволяет атакующим:
- Получать доступ к чувствительным файлам узла (например,
/etc/kubernetes/pki/)
- Перезаписывать критические системные файлы
- Достигать полной компрометации кластера, похищая закрытые ключи Kubernetes CA
Затронутые версии (проверено)
Примечание: Официальный GitHub Advisory утверждает, что затронуты версии "< 0.0.34", но наши тесты подтверждают:
- v0.0.33 уже исправлена
- v0.0.26 и более ранние версии не затронуты (функция pathPattern не существует)
- Фактический диапазон затронутых версий: v0.0.27 <= версия <= v0.0.32
Хронология
| Событие | Дата |
|---|
| Функция pathPattern добавлена | 2024-05-26 (коммит af85381) |
| Первый уязвимый релиз (v0.0.27) | 2024-05-29 |
Воспроизведение
Подробные шаги воспроизведения и скрипты см. в каталоге exploit/.
Быстрый старт
# 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
Устранение уязвимости
Обновитесь до v0.0.33 или более поздней версии:
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.33/deploy/local-path-storage.yaml
Ссылки