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

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

實際上,這種操作行為是符合規(guī)范的。但是,惡意攻擊者也可以利用該功能來執(zhí)行中間人(MitM)攻擊。
Falco規(guī)則:檢測綁定外部IP地址的Kubernetes服務(wù)
如果你認為自己受到了漏洞CVE-2020-8554的影響,可以使用下列Falco規(guī)則來進行漏洞檢測:
- - 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)建或修改一個服務(wù)的話,F(xiàn)alco將會輸出下列安全事件:

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