CVE-2020-8554:Kubernetes中间人攻击漏洞

12月4日,Kubernetes 产品安全委员会公开了一个新的Kubernetes漏洞——CVE-2020-8554。该漏洞是中危漏洞,影响所有的Kubernetes 版本,而且目前仍然没有修复。

漏洞分析

CVE-2020-8554漏洞是Kubernetes服务中External IPs和 Load Balancer IPs 2个特征中的设计漏洞。Kubernetes服务是一种将运行在pod集上的应用以网络服务的形式暴露。一个服务会暴露给一个或多个IP。一旦部署,集群中的节点就会将到服务IP的流量路由到提供该服务的后端pod。

当集群管理和分配服务IP时,一切正常。但是如果Kubernetes 用户能够为其服务分配任意IP时就会出现问题。在这种情况下,恶意用户可以分配一个其他终端已经使用的IP 地址,拦截所有到该IP的集群流量。控制服务IP的方法一共有2种:

  • 分配一个外部IP地址。
  • 通过修复status.loadBalancer.ingress.ip 域名分配一个Load Balancer IP。该方法要求有补丁服务/状态权限。

下面是部署到集群后,拦截所有到IP地址8.8.8.8的DNS流量并路由到恶意DNS服务器pod的服务。

图1. 滥用外部IP来拦截到8.8.8.8的DNS流量的服务

为了接收拦截的流量,攻击者必须控制支持恶意服务的终端。在大多数情况下是一个pod,与上面例子中的恶意DNS服务器pod一样。此外,外部终端也可以支持这样的服务,也就是说攻击者可以将拦截的流量路由到集群意外的外部终端。但这要求攻击者创建一个指向外部地址的Kubernetes终端,也就是说需要创建endpoint 权限。

受影响的产品

该漏洞影响所有的Kubernetes 版本,而且目前仍然没有修复。满足以下条件的集群会受到该漏洞的影响:

  • 允许非admin Kubernetes用户创建或更新服务,或对服务状态打补丁;
  • 允许非特权用户控制pod,包括创建、更新和执行;
  • 允许非特权用户创建或更新终端。

此外,多租户集群是最危险的,因为其最有可能实现以上有漏洞的配置。多租户集群一般使用Kubernetes 命名空间来分割租户,限制每个租户对其命名空间的权限。但只要有一个租户可以管理自己命名空间中的服务和pod,就可以利用CVE-2020-8554 漏洞来窃取整个集群的流量。因此,攻击者可以入侵其中一个租户来利用该漏洞来拦截其他租户的流量。

缓解措施

Kubernetes产品安全委员会认为,在不对Kubernetes 用户功能特征做出修改的情况下是不可能修复该漏洞的。因此,建议限制对这些有漏洞的特征的访问来预防漏洞利用。委员会为External IP的使用提供了2个解决方案:定制的Admission Controller 和OPA Gatekeeper 限制。但是对Load Balancer IP 目前还没有解决方案。

总结

CVE-2020-8554是Kubernetes 服务中的一个设计漏洞。如果集群是多租户的,那么非特权用户也可以创建和更新服务。虽然漏洞目前还没有修复,Kubernetes产品安全委员会也给出了有效的缓解措施。

本文翻译自:https://unit42.paloaltonetworks.com/cve-2020-8554/ 

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/127033.html<

(0)
运维的头像运维
上一篇2025-02-24 11:59
下一篇 2025-02-24 12:00

相关推荐

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注