Kubernetes最近爆出严重安全漏洞,影响几乎目前所有的版本。实际影响究竟多大?老版本用户是否必须升级?以下是华为云容器服务团队对该漏洞的分析解读。
Kubernetes爆出的严重安全漏洞:
***者通过构造特殊请求,可以在一个普通权限的链接上提升权限,向被代理的后端服务器发送任意请求。
该问题影响了几乎Kubernetes目前所有的版本,包括:
Kubernetes v1.0.x-1.9.x
Kubernetes v1.10.0-1.10.10 (fixed in v1.10.11)
Kubernetes v1.11.0-1.11.4 (fixed in v1.11.5)
Kubernetes v1.12.0-1.12.2 (fixed in v1.12.3)
什么样的集群可能被***?
集群启用了扩展API server,并且kube-apiserver与扩展API server的网络直接连通;
集群对***者可见,即***者可以访问到kube-apiserver的接口,如果你的集群是部署在安全的私网内,那么不会有影响;
集群开放了 pod exec/attach/portforward 接口,则***者可以利用该漏洞获得所有的kubelet API访问权限。
再看具体影响的场景
集群使用了聚合API,只要kube-apiserver与聚合API server的网络直接连通,***者就可以利用这个漏洞向聚合API服务器发送任何API请求;
如果集群开启了匿名用户访问的权限,则匿名用户也利用这个漏洞。不幸的是K8s默认允许匿名访问,即kube-apiserver的启动参数”-- anonymous-auth=true”;
给予用户Pod的exec/attach/portforward的权限,用户也可以利用这个漏洞升级为集群管理员,可以对任意Pod做破坏操作;
该漏洞的更详细讨论,可见社区Issue:
https://github.com/kubernetes/kubernetes/issues/71411
应对措施与建议
综合以上分析,使用华为云CCE服务的小伙伴们不必过于担心,因为:
CCE服务创建的集群默认关闭匿名用户访问权限
CCE服务创建的集群没有使用聚合API
如果,你开启了RBAC权限,且给用户分配了Pod的exec/attach/portforward权限,华为云CCE容器服务将于今晚完成所有现网1.11版本K8S集群的在线补丁修复,针对低于v1.10的集群(社区已不对其进行修复),本周我们也会提供补丁版本进行修复,请关注升级公告,及时修复漏洞。
Tips:如果你是自己搭建K8s集群,为提高集群的安全系数,建议如下,
一定要关闭匿名用户访问权限。
尽快升级到社区漏洞修复版本。合理配置RBAC,只给可信用户Pod的
exec/attach/portforward权限.
如果你当前使用的K8s版本低于v1.10,不在官方补丁支持范围内,建议自行回合补丁代码 :
https://github.com/kubernetes/kubernetes/pull/71412