【漏洞预警】kube-proxy 边界限制访问绕过漏洞(CVE-2020-8558)

 安全公告     |      2020-07-16 09:13:54

2020年7月10日,阿里云应急响应中心监测到 CVE-2020-8558 kube-proxy 边界限制访问绕过漏洞。


漏洞描述

kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件。近日Kubernetes官方发布相关安全公告,kube-proxy组件在iptables和ipvs模式下均需要设置内核参数 net.ipv4.conf.all.route_localnet=1, 从而允许本地回环访问。攻击者可能通过共享主机网络的容器,或在集群节点上访问同一个LAN或二层网络下的相邻节点上绑定监听了本地127.0.0.1端口的TCP/UDP服务,从而获取接口信息。如果服务没有设置必要的安全认证,可能会造成信息泄露风险。阿里云应急响应中心提醒 kube-proxy 用户尽快采取安全措施阻止漏洞攻击


漏洞评级

如果集群API Server开启了非认证端口(默认8080),那么攻击者可能获取到API Server接口相关信息,漏洞评级为高危,评分为8.8分

如果集群API Server默认关闭了非认证端口,漏洞评级为中危,评分为5.4分。


安全版本

kube-proxy >=1.18.4

kube-proxy >=1.17.7

kube-proxy >= v1.16.11


影响版本

kube-proxy v1.18.0~v1.18.3

kube-proxy v1.17.0~v1.17.6

kube-proxy <= v1.16.10

当前ACK集群节点中默认监听127.0.0.1的系统服务是需要认证的,且API Server也统一禁用了非认证端口。唯一暴露的是kubelet 10255的非认证只读端口,由于kubelet只读接口同样监听在0.0.0.0,因此即使修复了该漏洞在本地或特权容器中也同样可以获取到接口信息。综上,该CVE对ACK集群影响不大


安全建议

1. 当前ACK集群默认关闭API Server 8080非认证端口,请勿手动开启该端口。

2. 执行以下命令,在集群中配置iptables规则,用于拒绝非本地对127.0.0.1的访问流量。

 iptables -I INPUT --dst 127.0.0.0/8 ! --src 127.0.0.0/8 -m conntrack ! --ctstate RELATED,ESTABLISHED,DNAT -j DROP







3. 严格控制集群节点共享主机的登录权限,及时吊销可能泄露的kubeconfig集群访问凭证。

4. 禁止Container开启CAP_NET_RAW能力,执行以下命令,可以在pod spec中关闭Container的CAP_NET_RAW能力。

securityContext:
      capabilities:      
              drop: ["NET_RAW"]






5. 通过PodSecurityPolicy策略限制部署特权或共享主机网络容器,另外可以通过在策略中配置requiredDropCapabilities强制容器部署关闭CAP_NET_RAW能力。


阿里云容器服务Kubernetes版不受该漏洞影响。


相关链接

https://github.com/kubernetes/kubernetes/issues/90259




阿里云云安全中心应急漏洞模块已支持对该漏洞一键检测


我们会关注后续进展,请随时关注官方公告。

如有任何问题,可随时通过工单或服务电话95187联系反馈。

阿里云应急响应中心

2020.07.10