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存储卷。
请您及时关注涉及该漏洞修复的容器服务ACK公告,及时升级集群节点池。请参见升级节点池。