CVE-2020-8554:Kubernetes中間人攻擊漏洞
12月4日,Kubernetes 產(chǎn)品安全委員會公開了一個新的Kubernetes漏洞——CVE-2020-8554。該漏洞是中危漏洞,影響所有的Kubernetes 版本,而且目前仍然沒有修復(fù)。
漏洞分析
CVE-2020-8554漏洞是Kubernetes服務(wù)中External IPs和 Load Balancer IPs 2個特征中的設(shè)計漏洞。Kubernetes服務(wù)是一種將運(yùn)行在pod集上的應(yīng)用以網(wǎng)絡(luò)服務(wù)的形式暴露。一個服務(wù)會暴露給一個或多個IP。一旦部署,集群中的節(jié)點(diǎn)就會將到服務(wù)IP的流量路由到提供該服務(wù)的后端pod。
當(dāng)集群管理和分配服務(wù)IP時,一切正常。但是如果Kubernetes 用戶能夠為其服務(wù)分配任意IP時就會出現(xiàn)問題。在這種情況下,惡意用戶可以分配一個其他終端已經(jīng)使用的IP 地址,攔截所有到該IP的集群流量??刂品?wù)IP的方法一共有2種:
- 分配一個外部IP地址。
- 通過修復(fù)status.loadBalancer.ingress.ip 域名分配一個Load Balancer IP。該方法要求有補(bǔ)丁服務(wù)/狀態(tài)權(quán)限。
下面是部署到集群后,攔截所有到IP地址8.8.8.8的DNS流量并路由到惡意DNS服務(wù)器pod的服務(wù)。
圖1. 濫用外部IP來攔截到8.8.8.8的DNS流量的服務(wù)
為了接收攔截的流量,攻擊者必須控制支持惡意服務(wù)的終端。在大多數(shù)情況下是一個pod,與上面例子中的惡意DNS服務(wù)器pod一樣。此外,外部終端也可以支持這樣的服務(wù),也就是說攻擊者可以將攔截的流量路由到集群意外的外部終端。但這要求攻擊者創(chuàng)建一個指向外部地址的Kubernetes終端,也就是說需要創(chuàng)建endpoint 權(quán)限。
受影響的產(chǎn)品
該漏洞影響所有的Kubernetes 版本,而且目前仍然沒有修復(fù)。滿足以下條件的集群會受到該漏洞的影響:
- 允許非admin Kubernetes用戶創(chuàng)建或更新服務(wù),或?qū)Ψ?wù)狀態(tài)打補(bǔ)丁;
- 允許非特權(quán)用戶控制pod,包括創(chuàng)建、更新和執(zhí)行;
- 允許非特權(quán)用戶創(chuàng)建或更新終端。
此外,多租戶集群是最危險的,因為其最有可能實(shí)現(xiàn)以上有漏洞的配置。多租戶集群一般使用Kubernetes 命名空間來分割租戶,限制每個租戶對其命名空間的權(quán)限。但只要有一個租戶可以管理自己命名空間中的服務(wù)和pod,就可以利用CVE-2020-8554 漏洞來竊取整個集群的流量。因此,攻擊者可以入侵其中一個租戶來利用該漏洞來攔截其他租戶的流量。
緩解措施
Kubernetes產(chǎn)品安全委員會認(rèn)為,在不對Kubernetes 用戶功能特征做出修改的情況下是不可能修復(fù)該漏洞的。因此,建議限制對這些有漏洞的特征的訪問來預(yù)防漏洞利用。委員會為External IP的使用提供了2個解決方案:定制的Admission Controller 和OPA Gatekeeper 限制。但是對Load Balancer IP 目前還沒有解決方案。
總結(jié)
CVE-2020-8554是Kubernetes 服務(wù)中的一個設(shè)計漏洞。如果集群是多租戶的,那么非特權(quán)用戶也可以創(chuàng)建和更新服務(wù)。雖然漏洞目前還沒有修復(fù),Kubernetes產(chǎn)品安全委員會也給出了有效的緩解措施。
本文翻譯自:https://unit42.paloaltonetworks.com/cve-2020-8554/