在涉及諸如Docker等應(yīng)用容器時(shí),多數(shù)開(kāi)發(fā)者可能會(huì)告訴你容器創(chuàng)新了開(kāi)發(fā)人員完成工作的方式。這種自包容的便攜應(yīng)用功能包,以及與之有關(guān)的依賴關(guān)系,都有助于開(kāi)發(fā)者和運(yùn)營(yíng)團(tuán)隊(duì)簡(jiǎn)化發(fā)布過(guò)程。
開(kāi)發(fā)人員喜歡應(yīng)用容器,這是因?yàn)樗麄兛梢曰ㄙM(fèi)更少的時(shí)間用于對(duì)生產(chǎn)平臺(tái)進(jìn)行鏡像,從而確保其編寫的軟件可以如其發(fā)布時(shí)所期望的那樣運(yùn)行,也不必說(shuō)在生產(chǎn)過(guò)程中真正調(diào)試配置問(wèn)題所花費(fèi)的更少時(shí)間,而容器的便攜性意味著當(dāng)代碼在環(huán)境之間運(yùn)動(dòng)時(shí),適當(dāng)?shù)呐渲每梢耘c應(yīng)用一起“旅行”。
從運(yùn)營(yíng)效率和開(kāi)發(fā)速度與市場(chǎng)的角度來(lái)看,容器也具有創(chuàng)新性。雖然從安全的觀點(diǎn)看,容器可能帶來(lái)一些挑戰(zhàn)。主要的挑戰(zhàn)之一就是跟蹤并減少漏洞可能極其復(fù)雜,尤其是當(dāng)不同的容器可能使用的依賴軟件屬于不同版本時(shí),問(wèn)題尤其嚴(yán)重。
例如,不妨考慮一種運(yùn)行著兩種不同容器化應(yīng)用的環(huán)境。兩種容器都可以提供一種更廣義應(yīng)用的一部分的服務(wù)。即使這些容器可能由同樣的語(yǔ)言編寫,例如用Python。它們也有可能使用不同的運(yùn)行時(shí)版本,例如,一個(gè)可能用的是Python 2.x版本,而另一個(gè)用的是Python 3.x。同樣地,所用的支持庫(kù)也有可能不同,甚至更為糟糕的是,使用同樣庫(kù)的不同版本。
還有可能存在不同的中間件,或者同樣中間件的不同版本,或者應(yīng)用程序運(yùn)行所需要的不同配置。
這種情況雖然復(fù)雜,但在開(kāi)始階段是可管理的,直至隨著時(shí)間的推移,影響到支持組件、庫(kù)和中間件的漏洞開(kāi)始出現(xiàn)。
為解決這些問(wèn)題,開(kāi)發(fā)者和安全團(tuán)隊(duì)需要明確地知道哪些應(yīng)用安裝在了什么地方,每個(gè)組件的什么版本運(yùn)行在哪個(gè)容器上,以及其相互之間如何交互,還有容器如何用于解決問(wèn)題等。
當(dāng)然,這個(gè)例子僅僅涉及了兩個(gè)容器,我們可以設(shè)想,一個(gè)擁有成千上萬(wàn)容器的公司將面臨更為復(fù)雜的問(wèn)題。
容器漏洞掃描
在很多情況下,安全團(tuán)隊(duì)可能會(huì)求助于傳統(tǒng)的安全工具來(lái)解決這些問(wèn)題。但是,使用傳統(tǒng)的安全工具解決容器所帶來(lái)的挑戰(zhàn)也會(huì)帶來(lái)新困難。當(dāng)然,傳統(tǒng)的漏洞掃描工具可以有助于標(biāo)識(shí)一些漏洞但有一些問(wèn)題需要注意。
首先,正如虛擬機(jī)一樣,這些工具可能是臨時(shí)性的或短暫運(yùn)行的,這意味著除非需要,否則它們就可以保持非活動(dòng)狀態(tài)。
其次,依賴所掃描的配置,在無(wú)需容器的情況下也有不少工具可以發(fā)現(xiàn)所安裝軟件版本。例如,工具可能顯示出Web服務(wù)器的版本需要更新,卻不能指明給定的Python庫(kù)需要更新。
為解決傳統(tǒng)漏洞掃描工具的問(wèn)題,新的安全工具已經(jīng)出現(xiàn)。這些工具重視提供正在運(yùn)行的容器的可見(jiàn)性,并且基于這種可見(jiàn)性,還可以交付運(yùn)行在容器上可能包含漏洞的軟件信息。其目標(biāo)很簡(jiǎn)單:發(fā)現(xiàn)哪些應(yīng)用運(yùn)行在哪個(gè)特定容器上,并且標(biāo)記出任何可能存在的問(wèn)題。
許多商業(yè)工具都提供了這種功能,也有很多其他工具可以使用。Anchore Engine、CoreOS Clair項(xiàng)目和Dagda等開(kāi)源工具可以確認(rèn)有漏洞的或易受攻擊的容器配置。其核心就是搜索容器中是否具有CVE清單中的項(xiàng)目。根據(jù)配置和具體的產(chǎn)品,這些開(kāi)源工具還可以查找惡意軟件、不安全的配置,以及其他的影響安全的問(wèn)題。
容器可以使得在重新利用來(lái)自其它源的軟件時(shí)容易一些,從而帶來(lái)更好的效果。但這會(huì)導(dǎo)致支離破碎的動(dòng)態(tài)變化的攻擊面。而容器掃描工具可以自由獲得,這有助于我們理解企業(yè)構(gòu)建和使用的鏡像中所包含的內(nèi)容。
這種工具對(duì)于查找和洞察容器中的安全信息是至關(guān)重要的?;谒l(fā)現(xiàn)的信息,這些工具可以采取進(jìn)一步的行動(dòng)。例如,可以標(biāo)記特定容器用于后續(xù)修復(fù),增加對(duì)有漏洞的容器的監(jiān)視直到有可用的修復(fù),隔離一個(gè)容器,或者直接向開(kāi)發(fā)者或管理者發(fā)出警告。這種工具可以由開(kāi)發(fā)人員使用,或者可以自動(dòng)集成到發(fā)布階段。
開(kāi)源容器漏洞掃描的益處
正如多數(shù)安全從業(yè)者所知道的那樣,開(kāi)源的安全工具可以帶來(lái)很多好處,即使有時(shí)安全團(tuán)隊(duì)知道最終可能會(huì)過(guò)渡到商業(yè)工具中,他們也樂(lè)此不疲。
開(kāi)源的首要好處是在預(yù)算的討論階段可以使團(tuán)隊(duì)構(gòu)建安全武庫(kù),同時(shí)還可以展示通過(guò)開(kāi)源工具的使用安全團(tuán)隊(duì)所獲得的價(jià)值。在公司決定購(gòu)買商業(yè)軟件之前展示公司可以從工具中獲得的價(jià)值,有助于簡(jiǎn)化與管理人員的交流過(guò)程,因?yàn)楹笳哂锌赡軗?dān)心這些工具的作用是否真實(shí)可靠。
其次,擁有強(qiáng)健的開(kāi)源選擇意味著安全團(tuán)隊(duì)不必在預(yù)算周期到來(lái)之前就可以部署安全工具。獲得預(yù)算可能會(huì)花費(fèi)很長(zhǎng)時(shí)間,有時(shí)甚至長(zhǎng)達(dá)一年甚至更長(zhǎng)才能獲得部署安全措施的資源。開(kāi)源容器漏洞掃描工具意味著,如果公司擁有內(nèi)部的技術(shù)專家可以支持其部署,安全團(tuán)隊(duì)就不必苦苦等待彌補(bǔ)安全差距或減輕風(fēng)險(xiǎn)。作為修復(fù)高風(fēng)險(xiǎn)漏洞的一項(xiàng)臨時(shí)的應(yīng)急措施,或者為了緊急部署短期安全控制,開(kāi)源容器漏洞掃描對(duì)于快速修補(bǔ)在審核時(shí)所發(fā)現(xiàn)的漏洞都非常有益。
容器掃描非常有價(jià)值,而且我們可以有多種開(kāi)源選項(xiàng)可以完成這種掃描,其實(shí)現(xiàn)成本也非常低。如此一來(lái),安全團(tuán)隊(duì)何妨一試?