阿里云容器服务Kubernetes版已修复kube-controller-manager组件中存在的SSRF漏洞CVE-2020-8555。通过认证鉴权的攻击者可能通过服务端请求伪造获取控制节点(Master Node)网络下未经认证鉴权保护接口返回的任意信息。本文介绍该漏洞的影响、解决办法及防范措施。
SSRF漏洞在CVSS的评分为3.0(CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:N),威胁等级为中级。
影响范围
- kube-apiserver暴露了非认证本地端口。
- 存在其他不受保护的服务被暴露于控制台节点(Master Node)网络下。
- 恶意用户在目标集群有创建Pod权限并有StorageClass的写权限。
- kube-controller-manager v1.16.0~v1.16.8
- kube-controller-manager<v1.15.11
受影响的存储类型有:GlusterFS、Quobyte、 StorageFS、ScaleIO。
解决办法
经过了认证鉴权的攻击者可以利用kube-controller-manager当前存在的SSRF漏洞,通过创建带有指定存储类型(GlusterFS、Quobyte、StorageFS、ScaleIO)的Pod或StorageClass完成对控制台节点(Master Node)网络下其他服务的GET或POST请求,从而对控制台节点网络下未经认证鉴权保护的服务进行网络探测或内网服务攻击,例如通过开启了非认证8080端口的apiserver获取secret信息。
ACK集群默认不开启8080非安全端口,同时所有子账号需要经过相应的RBAC授权。默认状态下所有子账号(集群创建者除外)没有Pod和StorageClass的创建权限。当前解决办法先合入pr.k8s.io/89794提及的修复方法并提供相应的kube-controller-manager组件升级能力,以规避暴露在控制台节点网络下其他未保护服务的信息泄露危险。
防范措施
- 当前ACK集群默认关闭apiserver 8080非认证端口,请不要手动开启该端口。
- 排查控制台节点网络下暴露的Service是否开启了认证鉴权,对未保护的服务评估影响,关闭其中可能造成信息泄露的服务。
- 限制可疑用户创建Pod和StorageClass的写权限。