CVE-2024-10220: 通过 gitRepo 卷执行任意命令
在 Kubernetes 中发现了一个安全漏洞,该漏洞可能允许拥有创建 Pod 并关联 gitRepo 卷权限的用户,执行超出容器边界的任意命令。此漏洞利用了目标仓库中的 hooks 文件夹来在容器边界之外运行任意命令。
请注意,此问题最初已于 7 月公开披露并修复,现在我们追溯性地为其分配一个 CVE,以协助提高认知和跟踪。
此问题被评为 高危 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) (得分:8.1),并分配了 CVE-2024-10220。
我是否受影响?
此 CVE 影响那些 Pod 使用内建(in-tree)gitRepo 卷将仓库克隆到子目录的 Kubernetes 集群。如果 Kubernetes 集群运行在下面列出的受影响版本之一,那么它就受此漏洞影响。
受影响版本
- kubelet v1.30.0 至 v1.30.2
- kubelet v1.29.0 至 v1.29.6
- kubelet <= v1.28.11
如何缓解此漏洞?
要缓解此漏洞,您必须将 Kubernetes 集群升级到下面列出的已修复版本之一。
此外,由于 gitRepo 卷已被弃用,推荐的解决方案是使用 init 容器执行 Git 克隆操作,然后将目录挂载到 Pod 的容器中。此方法的示例在此处提供。
已修复版本
- kubelet master/v1.31.0 - 由 #124531 修复
- kubelet v1.30.3 - 由 #125988 修复
- kubelet v1.29.7 - 由 #125989 修复
- kubelet v1.28.12 - 由 #125990 修复
检测
要检测此漏洞是否已被利用,您可以使用以下命令列出所有使用内建 gitRepo 卷并克隆到 .git 子目录的 Pod。
|
|
如果您发现此漏洞已被利用的证据,请联系 security@kubernetes.io。
致谢
此漏洞由 Imre Rad 报告并协助缓解。