Kubernetes社區披露了安全性漏洞CVE-2024-10220。該漏洞允許擁有建立Pod許可權的攻擊者通過部署Pod並關聯gitRepo儲存卷,以執行超出容器邊界的任意命令。攻擊者利用目標Git倉庫中的鉤子檔案夾,逃逸到容器外完成命令執行攻擊。
影響範圍
下列版本的kubelet組件均在漏洞影響範圍內:
v1.30.0~v1.30.2
v1.29.0~v1.29.6
≤v1.28.11
社區在下列版本中修複了該問題:
v1.31.0
v1.30.3
v1.29.7
v1.28.12
漏洞排查
您可以通過以下命令,檢查叢集中是否存在該漏洞被利用的情況。
該命令會列舉所有掛載使用了gitRepo類型的儲存卷,並將倉庫複製到.git
子目錄的Pod中。
kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.volumes[].gitRepo.directory | endswith("/.git")) | {name: .metadata.name, namespace: .metadata.namespace}'
解決方案
由於gitRepo儲存卷已被棄用,社區建議的解決方案是使用initContainers容器執行Git複製操作,然後將目錄掛載至Pod容器中,請參見社區樣本。
通過使用啟用安全性原則管理中的ACKBlockVolumeTypes策略,限制在叢集指定範圍內部署的Pod禁止使用的Volume掛載類型,使該類Pod禁止使用gitRepo儲存卷,從而限制攻擊者使用gitRepo儲存卷。
請您及時關注涉及該漏洞修複的Container ServiceACK公告,及時升級叢集節點池。請參見升級節點池。