如何利用 Deepfence 來檢測(cè)和彌補(bǔ) Log4j2 漏洞
譯文作者丨Owen Garrett
譯者丨陳峻
策劃丨孫淑娟
與經(jīng)典的 OpenSSL Heartbleed、Apache Struts 的漏洞類似,log4j2 漏洞對(duì)于以數(shù)字化為基礎(chǔ)的企業(yè)所造成的深遠(yuǎn)影響,遠(yuǎn)不止打上可用的補(bǔ)丁,以及重新部署應(yīng)用那么簡(jiǎn)單。我們往往還需要及時(shí)發(fā)現(xiàn)、并彌補(bǔ)生產(chǎn)環(huán)境與平臺(tái)中的潛在漏洞。下面,我將向您展示如何使用 Deepfence 的 ThreatMapper 和 ThreatStryker,來實(shí)現(xiàn)這一點(diǎn)。
作為一個(gè)開源的安全、可觀察性平臺(tái),Deepfence ThreatMapper(https://github.com/deepfence/ThreatMapper)可實(shí)現(xiàn)在跨容器、Kubernetes、云平臺(tái)、無服務(wù)器環(huán)境、VM(虛擬機(jī))、以及裸金屬等生產(chǎn)環(huán)境和應(yīng)用中,搜索包括 Log4j2 在內(nèi)的各種漏洞,進(jìn)而根據(jù)漏洞被利用的風(fēng)險(xiǎn)程度,予以排名。也就是說,ThreatMapper 通過進(jìn)一步計(jì)算每個(gè)漏洞的利用率,來消減掃描工具所產(chǎn)生的誤報(bào),以便您發(fā)現(xiàn)和鎖定對(duì)于應(yīng)用程序可能構(gòu)成的最大風(fēng)險(xiǎn)。
Deepfence ThreatStryker(https://deepfence.io/threatstryker/)則在擴(kuò)展了 ThreatMapper 的基礎(chǔ)上,通過捕獲網(wǎng)絡(luò)流量,識(shí)別攻擊的特征,洞察攻擊者在目標(biāo)應(yīng)用中的獨(dú)特行為,進(jìn)而通過執(zhí)行預(yù)定義的安全策略,實(shí)現(xiàn)立即阻斷。
作為一個(gè)演示環(huán)境,下面是一個(gè)存在著 Log4j2 漏洞的 Java 應(yīng)用容器映像。我將向您展示攻擊者是如何遠(yuǎn)程利用它,以及如何使用 ThreatMapper 和 ThreatStryker 來實(shí)時(shí)檢測(cè)和防范針對(duì) Log4j2 的攻擊。
如何使用 ThreatMapper 找到最容易被利用的漏洞
請(qǐng)參閱鏈接 https://deepfence.io/visualize-attack-paths-in-production-environments-with-threatmapper/ 中的步驟 1 到 4,安裝 ThreatMapper,并開始您的第一次漏洞掃描。您可以在 ThreatMapper 控制臺(tái)的“最可利用漏洞(Most Exploitable Vulnerabilities)”報(bào)告中,查看到那些最嚴(yán)重的漏洞。
下圖向您展示了,我在對(duì)演示環(huán)境進(jìn)行掃描之后,發(fā)現(xiàn)的最容易被利用的漏洞報(bào)告的上半部分。ThreatMapper 不但突出顯示了風(fēng)險(xiǎn)最大的漏洞,并顯示了那些可能會(huì)被利用的攻擊路徑。您可以在圖中位于 HAproxy 的后面,看到 Log4j 容器(已用文本標(biāo)出,便于您的參考)。這便可以利用 log4j2 漏洞,開展攻擊的路徑。
當(dāng)您將鼠標(biāo)懸停在上述攻擊路徑中的關(guān)鍵節(jié)點(diǎn)上時(shí),您將看到有關(guān)該漏洞的相關(guān)信息。例如,節(jié)點(diǎn) deepfenceio/log4j-vulnerable-app:latest 具有 Top CVE:CVE-2021-44228 的網(wǎng)絡(luò)攻擊向量類型(Attack Vector type:network)。攻擊者可以通過 Port:8080 訪問到。
向下滾動(dòng)頁(yè)面,您將看到整張排名列表,其中各種詳細(xì)信息一目了然。
當(dāng)您單擊特定漏洞項(xiàng)時(shí),將能夠更加深入地了解、并在表格和 JSON 視圖中,查看到詳細(xì)的信息。在上述演示中,我們單擊了排名第一的漏洞 Log4j,并查看到了與之相關(guān)的信息。
目前,ThreatMapper 可以提取 50 多種不同的威脅源,并盡可能地為用戶提供針對(duì)各種特定漏洞的最新威脅源。同時(shí),ThreatMapper 還提供了指向外部資源的鏈接,以便您獲取有關(guān)漏洞的最新消息。例如,在表格視圖中,您可以看到存在問題的包、它所在的位置(例如它正運(yùn)行在哪個(gè)容器中)、CVSS(Common Vulnerability Scoring System,通用漏洞評(píng)分系統(tǒng))的評(píng)分、修復(fù)它的版本、以及其他便于您理解其嚴(yán)重性和修復(fù)方式的信息。
如何識(shí)別 Log4j2 類攻擊,并使用 ThreatStryker 予以阻止
為了發(fā)現(xiàn)目標(biāo)系統(tǒng)中是否存在諸如 Log4j2 之類最嚴(yán)重的可利用漏洞,您需要應(yīng)用臨時(shí)的 WAF(Web Application Firewall,Web 應(yīng)用防火墻)規(guī)則,來限制攻擊者對(duì)于此類漏洞的訪問和利用,同時(shí)也應(yīng)當(dāng)與開發(fā)團(tuán)隊(duì)協(xié)作,去優(yōu)先修復(fù)這些漏洞。不過常言道:我們需要知其然,更要知其所以然。不知您是否考慮過如下問題:
- 攻擊者是否已經(jīng)領(lǐng)先了您一步?
- 攻擊者在運(yùn)用何種嘗試來發(fā)現(xiàn)漏洞?
- 他們是否已經(jīng)找到了漏洞利用的入口?
- 他們是否在使用它進(jìn)行橫向擴(kuò)展,進(jìn)而在您的應(yīng)用中獲得額外的控制?
- 您是否能立即阻止他們?
對(duì)于上述問題,ThreatStryker 正好能夠派上用場(chǎng)。ThreatStryker 建立在 ThreatMapper 執(zhí)行的靜態(tài)分析之上,添加了運(yùn)行時(shí)(runtime)的檢查功能,以確定攻擊者為了利用潛在漏洞所做的各項(xiàng)嘗試。
通常,ThreatStryker 會(huì)從您的應(yīng)用程序中,捕獲兩種主要類型的運(yùn)行時(shí)遙測(cè)數(shù)據(jù)(runtime telemetry):
- 攻擊指標(biāo):通過深度捕獲數(shù)據(jù)包,它能夠發(fā)現(xiàn)各種嗅探、橫向傳播、命令和控制(command-and-control)、滲透、以及其他攻擊活動(dòng)。
- 危害指標(biāo):通過在主機(jī)上捕獲進(jìn)程和文件系統(tǒng)的異常,它能夠發(fā)現(xiàn)攻擊者是否已成功地利用了那些易受攻擊的組件。
由于 ThreatStryker 的數(shù)據(jù)包捕獲(https://deepfence.io/deep-packet-inspection/)功能運(yùn)行在后臺(tái),因此它可以對(duì)來自所有節(jié)點(diǎn)和容器的流量,進(jìn)行靜默式采樣。出于本演示的目的,我手動(dòng)啟動(dòng)數(shù)據(jù)包的捕獲功能,并選擇需要監(jiān)控的特定進(jìn)程:
執(zhí)行該數(shù)據(jù)包捕獲功能是不需要代理或內(nèi)核模塊的。ThreatStryker 使用 eBPF(譯者注:extended Berkeley Packet Filter,是一種可以在 Linux 內(nèi)核中運(yùn)行用戶編寫的程序,而不需要修改內(nèi)核代碼或加載內(nèi)核模塊的技術(shù))來抓取流量,對(duì)其進(jìn)行采樣,然后將其與運(yùn)行時(shí)的威脅源進(jìn)行匹配,以識(shí)別出各種類型的惡意流量。
在收集到足夠的流量,并完成數(shù)據(jù)檢查和分析后,您將會(huì)看到包含如下警報(bào)的結(jié)果報(bào)告。
ThreatStryker 使用網(wǎng)絡(luò)殺傷鏈(Cyber Kill Chain)框架(https://www2.deloitte.com/content/dam/Deloitte/sg/Documents/risk/sea-risk-cyber-101-july2017.pdf)的擴(kuò)展版本,來模擬攻擊行為。在意圖階段(Intent Stage),它會(huì)將事件映射到網(wǎng)絡(luò)殺傷鏈中,并以上下文的方式,提供攻擊類型和嚴(yán)重程度。您只需單擊下半部分列表中的某個(gè)警報(bào),就能夠看到各種深入的詳細(xì)信息。例如,下圖是我在單擊了嘗試獲取管理員權(quán)限警報(bào)后,所看到的內(nèi)容。下半部分有一個(gè)?;鶊D(Sankey Diagram)。該圖顯示了惡意活動(dòng)隨著時(shí)間變化,而推進(jìn)的情況。這方便了您開展追蹤,應(yīng)用策略,以及獲悉正在發(fā)生的攻擊。而上半部分則包括了表格和 JSON 視圖。它收錄了各種觸發(fā)警報(bào)的詳細(xì)信息,您可以上下滾動(dòng),以查看包括數(shù)據(jù)包的有效負(fù)載、以及違規(guī)字符串等大量的表述信息。如圖所示,我停留在了臭名昭著的 ${jndi:ldap 字符串處,它便是 Log4j2 攻擊的簽名。
上面的示例展示了針對(duì)入站(或入口)流量的檢查。此類檢查可以有效地發(fā)現(xiàn)、并報(bào)告各種利用 Log4j2 漏洞,獲取管理員權(quán)限的行為。不過,光有入站流量檢查顯然是不夠的。ThreatStryker 也會(huì)去檢查出站(或出口)流量、以及各種主機(jī)上的異常情況。
讓我們來查看另一個(gè)警報(bào) --Suspicious tracing event process strace /bin/ls -l:23408 trying to ptrace:23409。它是在主機(jī)檢查中產(chǎn)生的,即:一個(gè)進(jìn)程正在嘗試著執(zhí)行系統(tǒng)追蹤。這是在正常操作中并不常見的事件,它指示了攻擊者已經(jīng)找到了破壞容器或應(yīng)用程序的方法。
孤立地看,這些事件中的每一個(gè)都足以引起安全人員的警覺,并且它們表明了攻擊的演變階段。而當(dāng) ThreatStryker 為事件添加意圖和分類時(shí),它會(huì)進(jìn)一步將各項(xiàng)攻擊指標(biāo)和危害程度關(guān)聯(lián)起來,以描述攻擊是如何演變的,以及漏洞被利用的風(fēng)險(xiǎn)是如何增加的。
當(dāng)然,您也可以使用一系列監(jiān)控工具,實(shí)時(shí)跟蹤 ThreatStryker 事件日志,或者在 ThreatStryker 中配置好安全措施,以便在目標(biāo)達(dá)到確定性的閾值時(shí),予以干預(yù),并抑制正在發(fā)生的攻擊。
如下圖所示,在 ThreatStryker 的保護(hù)策略(Protection Policies)儀表板中,您可以定義各種安全策略(包括隔離策略和網(wǎng)絡(luò)策略等),以阻止正在進(jìn)行的各類攻擊。
您可能已經(jīng)注意到了,在該演示環(huán)境中,我們尚未創(chuàng)建或設(shè)置任何保護(hù)策略。為此,請(qǐng)單擊網(wǎng)絡(luò)策略(Network Policies)選項(xiàng)卡,然后單擊右上角的添加策略(Add Policy)按鈕。您將看到一個(gè)選項(xiàng)菜單,并可以在其中選擇嚴(yán)重性、警報(bào)類型、意圖類型等。
接著,您可以在所選的時(shí)段內(nèi),自定義或無限期地阻止入站和出站流量。
當(dāng)然,僅靠阻斷攻擊只能部分解決問題。對(duì)此,ThreatStryker 還可以識(shí)別主機(jī)上已發(fā)生的攻擊事件,包括:異常的文件系統(tǒng)篡改、進(jìn)程活動(dòng)、以及主機(jī)或負(fù)載已被攻陷等狀況。對(duì)此,我們可以采用各種隔離政策,根據(jù)實(shí)際情況予以凍結(jié)、阻止、終止或刪除主機(jī),防止攻擊影響的進(jìn)一步傳播與惡化。
若要?jiǎng)?chuàng)建隔離策略,請(qǐng)前往保護(hù)策略(Protection Policies)儀表板上的隔離策略(Quarantine Policies)選項(xiàng)卡,單擊添加策略(Add Policy)。下圖便是我們?cè)谘菔经h(huán)境中創(chuàng)建的示例策略。
小結(jié)
綜上所述,作為一個(gè)開源的平臺(tái),ThreatMapper 可以學(xué)習(xí)到應(yīng)用程序的邏輯拓?fù)浣Y(jié)構(gòu),識(shí)別潛在的易受攻擊負(fù)載,并針對(duì) 50 多個(gè)不同的威脅源開展掃描工作,進(jìn)而實(shí)時(shí)、準(zhǔn)確地向您展示和提供有關(guān)每個(gè)負(fù)載可能存在的漏洞信息。通過將發(fā)現(xiàn)的結(jié)果與攻擊面相關(guān)聯(lián),ThreatMapper 會(huì)告訴您,諸如 Log4j2 之類的漏洞是如何被利用的,以便您迅速采取行之有效的修復(fù)措施。
而 ThreatStryker 是建立在由 ThreatMapper 創(chuàng)建的漏洞圖表和信息的基礎(chǔ)上,通過識(shí)別攻擊行為,判斷攻擊步驟,進(jìn)而阻斷和防范其攻陷目標(biāo)應(yīng)用。
- 參考鏈接:
- ThreatMapper 和 ThreatStryker 的演示視頻 --https://go.deepfence.io/log4j2-vulnerability-detection-protection
- ThreatStryker 的實(shí)時(shí)沙箱 --https://deepfence.io/view-enterprise-sandbox/
- 在 GitHub 上獲取全開源的 ThreatMapper--https://github.com/deepfence/ThreatMapper
譯者介紹
陳 峻 (Julian Chen),51CTO 社區(qū)編輯,具有十多年的 IT 項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn);持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。