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