您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Kubernetes的中間人漏洞CVE-2020-8554的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
2020年12月4日,Kubernetes產品安全委員會披露了一個新的Kubernetes漏洞,即CVE-2020-8554。這是一個中危漏洞,所有的Kubernetes版本都會受到該漏洞的影響。該漏洞允許Kubernetes服務將集群流量攔截至任意IP地址,任何可以管理服務的用戶可以利用此漏洞對群集中的Pod和節點執行中間人(MITM)攻擊。
攻擊者可以利用MITM攻擊偽裝成內部或外部節點,然后從網絡流量中獲取憑證,在將目標用戶的數據發送到其預期目標之前篡改目標用戶的數據,或完全阻止其與特定IP地址通信。不過,如果使用了TLS址類的加密協議的話,攻擊者就沒那么輕松了。
多用戶集群受該漏洞的影響較大,因為它們最有可能擁有可以管理服務的非管理員用戶。
Kubernetes產品安全委員會確定,修補CVE-2020-8554將導致Kubernetes的多個功能發生變化,因此短期內沒有解決該漏洞的方案。相反,委員會提供了幾種限制方案,可以緩解該漏洞的影響。
CVE-2020-8554源于Kubernetes服務的兩個特性中的設計缺陷:外部IP和負載平衡器IP。Kubernetes服務是將運行在一組Pod上的應用程序公開為網絡服務的抽象方法。一個服務會暴露在一個或多個IP地址上,一旦部署完成,集群中的節點將把發往服務IP的流量路由到組成服務的一個后備Pod中。
在集群管理和分配服務IP時,一切都正常。但是當Kubernetes用戶能夠為其服務分配任意IP時,問題就出現了。在這種情況下,惡意用戶可以分配已被其他節點(內部或外部)使用的IP,并截獲這些IP的所有群集流量。我們有兩種方法可以控制服務的IP:
分配一個外部IP;
通過loadBalancer.ingress.ip字段來分配一個負載均衡器IP,這個方法要求patch service/status權限。
下面的服務在部署至集群時,將會把所有的集群DNS流量攔截至8.8.8.8這個IP地址(Google的DNS服務器),然后路由到evil-dns-server Pod中:
為了接收到攔截的流量,攻擊者必須控制支持其惡意服務的節點。在大多數情況下,我們會選擇一個Pod,不過服務也可以由外部節點(而不是集群Pod)托管,這意味著攻擊者還可以將截獲的流量路由到集群外部的一個外部節點。這要求攻擊者創建指向外部地址的Kubernetes節點,這需要create endpoint權限。
如果你發現了以下幾種情況之一的話,說明你可能受到攻擊了:
服務不應該暴露給外部IP或負載均衡器IP;
一個服務的外部IP或負載均衡器IP匹配集群中的一個外部IP地址,比如說一個Pod IP或其他服務的集群IP;
一個服務的外部IP或負載均衡器IP指向一個已知的外部域名,比如說8.8.8,我們可以執行nslookup <externalIP>來判斷一個IP是否指向一個已知域名;
一個服務的負載均衡器IP為0.0.1,表明節點主機流量已被劫持;
如需識別集群中的服務是否暴露給了外部IP地址,可以運行下列命令:
kubectl get services –all-namespaces -o=jsonpath='{“NAMESPACE\tNAME\tEXTERNAL IPS\n”}{range .items[?(.spec.externalIPs)]}{.metadata.namespace}{“\t”}{.metadata.name}{“\t”}{.spec.externalIPs}{“\n”}{end}’ | column -t -s “$(printf ‘\t’)”
如需識別集群中的服務是否暴露給了負載均衡器IP地址,可以運行下列命令:
kubectl get services –all-namespaces -o=jsonpath='{“NAMESPACE\tNAME\tLOAD BALANCER IPs\n”}{range .items[?(.status.loadBalancer.ingress[*].ip)]}{.metadata.namespace}{“\t”}{.metadata.name}{“\t[“}{range .status.loadBalancer.ingress[*]}{“\””}{.ip}{“\”,”}{end}{“]\n”}{end}’ | sed ‘s/\(.*\),/\1/’ |column -t -s “$(printf ‘\t’)”
Prisma Cloud Compute針對Rego規則內置的Admission支持,可以用于實現Kubernetes產品安全委員會提出的緩解方案。
客戶可以使用以下方法設置許可規則,以阻止服務訪問外部IP,客戶害可以通過設置白名單來選擇允許的IP地址。
按照Prisma Cloud Compute的文檔在你的集群中啟用Admission Control。
下載【Mitigation for Kubernetes CVE-2020-8554 – External IPs】規則模板,我們可以使用下列命令下載規則:
wget https://raw.githubusercontent.com/twistlock/k8s-cve-2020-8554-mitigations/main/PrismaExternalIPs.json
進入到‘Defend/Access/Admission’并點擊‘Import’,然后選擇已下載好的規則模板,并點擊‘Add’按鈕:
要將某些IP作為外部IP使用,請按照下圖所示更新規則,以下規則白名單IP為54.74.83:
規則設置好之后,任何嘗試將服務暴露給已禁止的外部IP的行為都將失敗,并且還會觸發警報。
CVE-2020-8554是一個獨特的漏洞,源于Kubernetes服務的設計缺陷。如果您的集群是多用戶集群,或者允許未經授權的用戶創建和更新服務,那么您將有可能受到該漏洞的影響。如果集群中的應用程序沒有通過TLS強制加密通信,那么您將面臨更大的風險。即使該漏洞未被修復,Kubernetes產品安全委員會提出的緩解措施也可以有效地防止此類攻擊。
感謝各位的閱讀!關于“Kubernetes的中間人漏洞CVE-2020-8554的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。