CVE-2024-10220: Kubernetes的任意命令执行漏洞

401 阅读2分钟

Kubernetes中发现了一个安全漏洞,攻击者如果有权限创建Pod并将gitRepo卷挂载到Pod中,可能会执行容器外的任意命令。该漏洞利用了目标仓库中的hooks文件夹,允许在容器外执行任意命令。

该漏洞最初在7月公开并修复(#124531),现已为其分配CVE编号,帮助提高关注度并便于追踪。

该问题的安全评级为高(CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N),CVE编号为CVE-2024-10220。

是否受影响? 如果Kubernetes集群中的Pod使用gitRepo卷将代码克隆到子目录中,且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(通过限制gitRepo目录深度为1级修复 #124531)
  • kubelet v1.30.3(通过修复 #125988)
  • kubelet v1.29.7(通过修复 #125989)
  • kubelet v1.28.12(通过修复 #125990)

漏洞检测: 使用以下命令检查是否有Pod使用了gitRepo卷并克隆到.git子目录中:

kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.volumes[].gitRepo.directory | endswith("/.git")) | {name: .metadata.name, namespace: .metadata.namespace}'

如果发现该漏洞已被利用,请联系 security@kubernetes.io

致谢: 感谢Imre Rad报告并修复此漏洞。

相关标签: /area security
/kind bug
/committee security-response
/label official-cve-feed
/sig node
/area kubelet

参考链接: