编辑 | zouyee
近期Kubernetes生态社区披露两起安全事件,涉及kubelet组件及kyverno项目,主要为提权漏洞及DOS攻击,CVE-2023-5528及CVE-2023-47630,主要涉及Kubernetes、及Kyverno 等社区,详细内容参见下文
CVE-2023-5528: 存储提权漏洞
CVSS评分: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H - 高风险 (7.2)
在 Kubernetes 中发现了一个安全问题,允许能够在 Windows 节点上创建 Pods 和持久卷的用户可能会升级到这些节点上的管理员权限。仅当 Kubernetes 集群使用 Windows 节点的树形存储插件时才受到影响。
上述漏洞可以通过社区提供的kubelet补丁来避免,在Windows node上创建pod,并配置存储时,Kubelet会使用内置(in-tree)存储插件,如azure的插件,通过获取volumes.azureDisk.diskURI传入的MountSensitive的source参数,将参数拼接至mklink命令语句中,最终使用管理员权限执行cmd语句,上述行为给提权创建了条件,导致攻击者可以在宿主机 node 上以管理员权限执行任意命令。当前kubernetes支持包括iscsi/nfs/azure/aws/等20+种存储插件。
可以使用 Kubernetes 审计日志来检测是否有攻击者利用此漏洞, 重点关注创建特殊字符得本地卷事件
这个漏洞是由Tomer Peled报告的,由cji修复。
CVE-2023-47630: 镜像Digest验证漏洞
CVSS评分: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H - 高风险 (7.1)
在Kyverno 中发现了一个漏洞,其允许攻击者控制 Kyverno 用户使用的镜像的Digest(用户拉取镜像时,首先获取的是镜像的Digest,通过Digest获取所需拉取的镜像层)。攻击者伪造 Kyverno 提取镜像的Digest。然后,攻击者可以向用户返回一个有问题的的镜像层(或镜像),并利用其进一步提权。
上述漏洞可以通过社区提供的kyverno补丁来避免。
此漏洞是由 Ada Logics 进行的 Kyverno 的持续安全审计期间发现的。
由于笔者时间、视野、认知有限,本文难免出现错误、疏漏等问题,期待各位读者朋友、业界专家指正交流。
参考文献
1. https://github.com/kyverno/kyverno/security/advisories/GHSA-3hfq-cx9j-923w
2. https://github.com/kubernetes/kubernetes/issues/121879