如何使用Falco檢測(cè)漏洞CVE-2020-8554
漏洞概述
漏洞CVE-2020-8554是一個(gè)能夠影響多用戶Kubernetes群集的漏洞,如果潛在的攻擊者可以創(chuàng)建或編輯服務(wù)和Pod,那么他們就可以攔截來(lái)自集群中其他Pod或節(jié)點(diǎn)的流量了。
攻擊者如果能夠創(chuàng)建一個(gè)ClusterIP服務(wù)并設(shè)置.spec.externalIPs字段的話,他們就能夠攔截全部到該IP的流量。除此之外,攻擊者還可以修復(fù)LoadBalancer服務(wù)的狀態(tài),并通過(guò)設(shè)置status.loadBalancer.ingress.ip來(lái)實(shí)現(xiàn)類似的效果。通常來(lái)說(shuō),這種都屬于特權(quán)操作,一般不會(huì)授予普通用戶去進(jìn)行操作訪問(wèn)。
這個(gè)漏洞屬于Kubernetes設(shè)計(jì)缺陷,如果不對(duì)用戶層面的運(yùn)行機(jī)制進(jìn)行修改的話,該漏洞將很難被修復(fù)或緩解。
安全按等級(jí)
中危
漏洞分析
Kubernetes (簡(jiǎn)稱K8s)是是一個(gè)開(kāi)源的,用于管理云平臺(tái)中多個(gè)主機(jī)上的容器化的應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡(jiǎn)單并且高效,Kubernetes提供了應(yīng)用部署、規(guī)劃、更新、維護(hù)的一種機(jī)制。K8s 最早是由谷歌開(kāi)發(fā)的,目前由Cloud Native Computing Foundation 基金會(huì)維護(hù)。
研究人員在K8s 中發(fā)現(xiàn)一個(gè)影響所有K8s版本的設(shè)計(jì)漏洞,允許租戶創(chuàng)建和更新服務(wù)的多租戶集群成為最易受到攻擊的目標(biāo)。如果攻擊者可以創(chuàng)建或編輯服務(wù)或pod,可能就可以攔截集群中來(lái)自其他pod的流量。如果用任意的外部IP 來(lái)創(chuàng)建一個(gè)服務(wù),集群中到該IP 的流量就會(huì)被路由到該服務(wù),這樣有權(quán)限利用外部IP 來(lái)創(chuàng)建服務(wù)的攻擊者就可以攔截到任意目標(biāo)IP的流量。
CVE-2020-8554漏洞是中危漏洞,有創(chuàng)建和編輯服務(wù)和pod等基本租戶權(quán)限的攻擊者可以在沒(méi)有任何用戶交互的情況下遠(yuǎn)程利用該漏洞。
由于External IP (外部IP)服務(wù)并沒(méi)有廣泛應(yīng)用于多租戶集群中,而且授予租戶LoadBalancer IP 的補(bǔ)丁服務(wù)/狀態(tài)權(quán)限并不推薦,因此該漏洞只影響少量的Kubernetes 部署。
使用Falco檢測(cè)CVE-2020-8554
檢測(cè)針對(duì)該漏洞的漏洞利用嘗試或攻擊活動(dòng)是防范此類網(wǎng)絡(luò)攻擊的關(guān)鍵,我們現(xiàn)在可以使用Falco來(lái)在主機(jī)和容器層面檢測(cè)針對(duì)該漏洞的而已活動(dòng)。Falco是CNCF的開(kāi)源項(xiàng)目,可以用于容器和Kubernetes的運(yùn)行時(shí)威脅檢測(cè)。
Falco的好處之一是其功能強(qiáng)大而靈活的規(guī)則語(yǔ)言,當(dāng)Falco發(fā)現(xiàn)由一組可定制的規(guī)則定義的異常行為時(shí),它將為我們生成并報(bào)告安全事件。與此同時(shí),F(xiàn)alco還提供了一些現(xiàn)成的檢測(cè)規(guī)則可供我們使用。
接下來(lái),我們一起看一看如何使用Falco來(lái)檢測(cè)何時(shí)有人試圖使用外部IP創(chuàng)建集群類型的服務(wù)事件。
如前文所述,漏洞CVE-2020-8554是由Kubernetes設(shè)計(jì)缺陷造成的。它允許具有創(chuàng)建/修復(fù)服務(wù)權(quán)限的用戶將網(wǎng)絡(luò)流量重定向到外部IP地址。大多數(shù)情況下,當(dāng)一個(gè)只用于內(nèi)部通信的服務(wù)被創(chuàng)建時(shí),一個(gè)私有IP地址被分配給這個(gè)服務(wù)。

由于這是一個(gè)私有IP地址,那么Kubernetes集群中就沒(méi)有人可以訪問(wèn)這種服務(wù)了。不過(guò),用戶還可以給這個(gè)服務(wù)配置并綁定一個(gè)外部IP地址。

實(shí)際上,這種操作行為是符合規(guī)范的。但是,惡意攻擊者也可以利用該功能來(lái)執(zhí)行中間人(MitM)攻擊。
Falco規(guī)則:檢測(cè)綁定外部IP地址的Kubernetes服務(wù)
如果你認(rèn)為自己受到了漏洞CVE-2020-8554的影響,可以使用下列Falco規(guī)則來(lái)進(jìn)行漏洞檢測(cè):
- - macro: service_with_external_IP
- condition: (jevt.value[/requestObject/spec/externalIPs] exists and jevt.value[/requestObject/spec/externalIPs] != "<NA>")
- - rule: Create/Update ClusterIP Service with External IP
- desc: Detect an attempt to modify a ClusterIP type service with external IP assigned (CVE-2020-8554)"
- condition:kevt and service and kmodify and jevt.value[/responseObject/spec/type]=ClusterIP and service_with_external_IP
- output: ClusterIP type service created/updated with external IP assigned (user=%ka.user.name service=%ka.target.name ns=%ka.target.namespace operation=%ka.verb ports=%ka.req.service.ports external IP=%jevt.value[/requestObject/spec/externalIPs])
- priority: WARNING
- source: k8s_audit
當(dāng)有人使用外部IP地址創(chuàng)建或修改一個(gè)服務(wù)的話,F(xiàn)alco將會(huì)輸出下列安全事件:

總結(jié)
請(qǐng)記住,漏洞CVE-2020-8554是一個(gè)由于設(shè)計(jì)缺陷而無(wú)法修復(fù)的漏洞,因此我們建議廣大用戶應(yīng)該使用適當(dāng)?shù)陌踩ぞ邅?lái)對(duì)Kubernetes集群進(jìn)行安全監(jiān)控。