当前位置: 首页 > 科技观察

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

时间:2023-03-13 03:51:47 科技观察

12月4日,Kubernetes产品安全委员会披露了一个新的Kubernetes漏洞——CVE-2020-8554。该漏洞为中危漏洞,影响所有Kubernetes版本,目前仍未修复。漏洞分析CVE-2020-8554漏洞是Kubernetes服务中ExternalIPs和LoadBalancerIPs这两个特性的设计漏洞。Kubernetes服务是运行在pod集上并将其公开为网络服务的应用程序。一项服务暴露给一个或多个IP。部署后,集群中的节点将流量路由到服务IP到提供该服务的后端pod。当集群管理和分配服务IP时,一切正常。但是当Kubernetes用户能够为他们的服务分配任意IP时,问题就出现了。在这种情况下,恶意用户可以分配一个已被其他端点使用的IP地址,并拦截到该IP的所有集群流量。有2种方法可以控制服务IP:分配外部IP地址。通过固定status.loadBalancer.ingress.ip域名来分配负载均衡器IP。此方法需要补丁服务/状态权限。下面的服务在部署到集群时会拦截所有流向IP地址8.8.8.8的DNS流量,并将其路由到恶意DNS服务器pod。图1.滥用外部IP拦截到8.8.8.8的DNS流量的服务为了接收拦截的流量,攻击者必须控制支持恶意服务的端点。在大多数情况下是一个pod,如上例中的恶意DNS服务器pod。此外,外部端点也可以支持此类服务,这意味着攻击者可以将拦截的流量路由到集群外部的外部端点。但这需要攻击者创建一个指向外部地址的Kubernetes端点,这意味着创建端点权限。受影响的产品该漏洞影响所有Kubernetes版本,目前仍未修复。满足以下条件的集群受此漏洞影响:允许非管理员Kubernetes用户创建或更新服务,或修补服务状态;允许非特权用户控制pod,包括创建、更新和执行;允许非特权用户创建或更新终端。此外,多租户集群是最危险的,因为它们最有可能实现上述易受攻击的配置。多租户集群一般使用Kubernetes命名空间来划分租户,并限制每个租户对其命名空间的权限。但只要一个租户可以在自己的命名空间中管理服务和pod,就可以利用CVE-2020-8554漏洞窃取整个集群的流量。因此,攻击者可以破坏其中一个租户,利用该漏洞拦截其他租户的流量。缓解措施Kubernetes产品安全委员会认为,如果不对Kubernetes用户功能进行更改,则无法修复该漏洞。因此,建议限制对这些易受攻击的功能的访问以防止被利用。组委会针对ExternalIP的使用提供了2种解决方案:自定义AdmissionController和OPAGatekeeper限制。但是目前没有LoadBalancerIP的解决方案。摘要CVE-2020-8554是Kubernetes服务中的一个设计漏洞。如果集群是多租户的,那么非特权用户也可以创建和更新服务。虽然该漏洞尚未修复,但Kubernetes产品安全委员会也给出了有效的缓解措施。本文翻译自:https://unit42.paloaltonetworks.com/cve-2020-8554/