0x01漏洞背景

2020年07月10日, 360CERT监测发现 Kubernetes官方 发布了 Kubernetes 节点的设置允许相邻主机绕过本地主机边界 的风险通告,该漏洞编号为 CVE-2020-8558,漏洞等级:中危。
安全研究人员在kube-proxy中发现了一个安全问题,攻击者能够通过同一局域网下的容器,或者在集群节点上访问同一个二层域下的相邻节点上的本地127.0.0.1的TCP/UDP服务,从而获取接口信息。如果绑定在端口上的服务没有设置身份验证,就会导致该服务容易受到攻击

0x02漏洞详情

Kubernetes是一个开源系统,用于跨多台主机管理容器化的应用程序。它为应用程序的部署、维护和扩展提供了基本机制。
安全研究人员在kube-proxy组件中发现了一个安全问题,攻击者可能通过同一局域网下的容器,或在集群节点上访问同一个二层域下的相邻节点上绑定监听了本地127.0.0.1端口的TCP/UDP服务,从而获取接口信息。如果绑定在端口上的服务没有设置身份验证,就会导致该服务容易受到攻击。
如果出现以下情况,您可能会受到攻击:

  • 您目前运行着一个存在漏洞的版本。
  • 您的群集节点运行在 : 不受信任的主机与节点共享相同的第二层域(即相同的LAN)的环境中。
  • 您的集群允许不受信任的pods运行带有CAP_NET_RAW的容器(Kubernetes的默认设置是允许这个功能的)。
  • 您的节点(或主机网络pods)运行的本地服务没有身份验证

要列出可能受影响的服务,请在节点上运行以下命令:
lsof +c 15 -P -n -i4TCP@127.0.0.1 -sTCP:LISTEN
lsof +c 15 -P -n -i4UDP@127.0.0.1

在主节点上,如果出现这样的lsof运行结果则表明API服务器可能正在使用不安全的端口侦听:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
kube-apiserver 123 root 7u IPv4 26799 0t0 TCP 127.0.0.1:8080 (LISTEN)

0x03影响版本

  • kubelet/kube-proxy : v1.18.0-1.18.3
  • kubelet/kube-proxy : v1.17.0-1.17.6
  • kubelet/kube-proxy : <=1.16.10

    0x04临时修补

    官方建议通过在节点上手动添加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