安全漏洞 CVE-2024-10220 由 Kubernetes 社区披露,攻击者可以借助 gitRepo 的 Volume 利用此漏洞,拉取恶意 git repo,导致任意代码执行越权访问宿主机或执行二进制程序,详情请参见 CVE-2024-10220: Arbitrary command execution through gitRepo volume。
CVE-2024-10220 漏洞被评估为高危漏洞,在 CVSS 的评分为 8.1。
当使用的 VKE 版本在受影响的范围内时,若攻击者具有创建 Pod 权限且 gitRepo volume 可用时,攻击者可以拉取恶意 git repo,导致任意代码执行。更多详情,请参见 K8s gitRepo volume任意代码执行(CVE-2024-10220)。
利用准入控制器对使用 gitRepo volume 的 Pod 进行检测和拦截。
可以选择 Kyverno、OPA-gatekeeper、ValidatingAdmissionPolicy(Kubernetes v1.30 GA)等准入控制器和策略来禁止 Workloads 使用 GitRepo volume。
下面是一个使用 Kyverno 禁用 GitRepo volume 的 ClusterPolicy 供您参考。
apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: disallow-gitrepo spec: validationFailureAction: Enforce background: true rules: - name: check-for-gitrepo-volume match: any: - resources: kinds: - Pod validate: message: >- GitRepo volumes are forbidden. The fields spec.volumes[*].gitRepo must not be set. pattern: spec: =(volumes): - X(gitRepo): "null"