Kubernetes社区披露两起安全事件,涉及kube-apiserver组件,主要为准入插件的逃逸漏洞,CVE-2023-2727及CVE-2023-2728,详细内容参见下文
CVE-2023-2727: ImagePolicyWebhook准入插件的逃逸
CVSS评分: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
在Kubernetes中发现了一个安全问题,当使用临时容器(即ephemeral container)时,用户能够绕过被ImagePolicyWebhook限制的镜像来启动容器。只有使用了ImagePolicyWebhook准入插件和临时容器的Kubernetes集群才会受到影响。
具备以下所有条件的集群,受该漏洞影响:
上述漏洞可以通过社区提供的kube-apiserver补丁来避免,该补丁可以防止临时容器使用被ImagePolicyWebhook限制的镜像。
注意:还可以使用validate webhook方式(例如Gatekeeper和Kyverno)来强制执行相同的镜像限制策略。
使用临时容器且镜像受限于ImagePolicyWebhook的 Pod 发出update的请求,会记录在apiserver的审计日志中。也可以使用 kubectl get pods 命令,查找上述容器。
这个漏洞是由Stanislav Láznička报告的,由Rita Zhang修复。
CVE-2023-2728: ServiceAccount准入插件的逃逸
CVSS评分:CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
在Kubernetes中发现了一个安全问题,当使用临时容器(即ephemeral container)时,用户能够绕过ServiceAccount的限制来获取secret。只有使用了ServiceAccount准入插件且包含临时容器的的Pod的annotation有kubernetes.io/enforce-mountable-secrets 字段的Kubernetes集群才会受到影响。
具备以下所有条件的集群,受该漏洞影响:
上述漏洞可以通过社区提供的kube-apiserver补丁来避免,该补丁可以防止临时容器使用被ServiceAccount限制的secret。
使用临时容器且secret受限于ServiceAccount的 Pod 发出update的请求,会记录在apiserver的审计日志中。您还可以使用kubectl get pods查找。
由于笔者时间、视野、认知有限,本文难免出现错误、疏漏等问题,期待各位读者朋友、业界专家指正交流。
参考文献
1. https://github.com/kubernetes/kubernetes/issues/118640