eBPF(extended Berkeley Packet Filter) 可謂 Linux 社區的新寵,很多大公司都開始投身于 eBPF 技術,如 Goole、Facebook、Twitter 等。eBPF 是從 BPF(也稱爲 cBPF:classic Berkeley Packet Filter)發展而來的,BPF 是專門爲過濾網絡數據包而創造的。但随着 eBPF 不斷完善和加強,現在的 eBPF 已經不再限于過濾網絡數據包了。
eBPF 用于在 Linux OS 内核中加載和運行用戶定義的程序,以觀察、更改和響應内核行爲,而不會影響内核模塊的不穩定。eBPF 直接從用戶空間提供内核級可見性。可見性和穩定性的結合使得 eBPF 框架對安全應用程序特别有吸引力。
我們會在本文詳細介紹 eBPF 的工作原理,以及它對于雲工作負載保護平台 ( CWPP ) 的重要性。
eBPF 架構概述
eBPF 程序允許我們觀察和響應内核中的應用程序負載行爲,而無需修改應用程序代碼本身。這對于許多應用程序都很有用,尤其是雲工作負載保護等安全應用程序。
爲了講解方便,我們對 ebpf.io 中的原始圖進行了修改。
架構簡述
以一個在用戶空間中運行的應用程序—— CWPP 代理爲例,它包括一個用于 Linux 内核中進程級可見性的 eBPF 程序。eBPF 程序本身是字節碼,盡管開發人員通常使用更高級别的編程語言,其編譯器支持 eBPF 字節碼。該 eBPF 程序被加載到 Linux 内核中,該程序立即由 eBPF 驗證引擎進行驗證。然後,程序被編譯并附加到設計目标内核事件,這就是所謂的 eBPF 程序是 " 事件驅動的 " 的真實意思。無論何時發生此事件,程序都會附加到此事件,運行其觀察和分析任務直至完成,并将結果返回給應用程序。
在 eBPF 程序和用戶空間應用程序 / 工作負載之間傳遞信息的機制被稱爲 "eBPFmap" 或簡稱爲 "map"。
eBPF 安全
eBPF 驗證引擎和即時編譯器是 eBPF 框架首先确保在内核中加載和運行的 eBPF 程序不會破壞内核穩定的方法。這便是第一條規則:無攻擊性。
考慮 eBPF 的替代方案:編寫内核模塊。内核模塊引起了對操作穩定性和複雜性的關注。雖然編寫内核模塊确實允許開發人員更改内核行爲,但這是一項高度專業化的技能,因此人員配備和保留便成爲一個問題。更明确地說,使用内核模塊會引發兩個關鍵風險問題:1. 内核模塊會使設備崩潰嗎?2、它是否會引入安全漏洞?
除了穩定性和安全性之外,還有操作時的功耗問題:内核模塊隻适用于特定的 Linux 内核版本和發行版。維護内核模塊會消耗寶貴的開發周期,不必要使操作管理複雜化。eBPF 框架解決了這些痛點,
在将任何 eBPF 程序加載到内核之前,它都要經過驗證引擎和 JIT 編譯器。驗證程序确保程序運行安全,不會使系統崩潰,也不會破壞數據。它驗證滿足以下幾個條件:
加載 eBPF 程序的進程具有執行此操作所需的權限;
eBPF 程序不會使系統崩潰;
eBPF 程序運行至完成,也就是說,它不會無限循環。
一旦經過驗證,JIT 編譯器就會将程序從字節碼轉換爲設備指令,從而優化執行速度。
現在 eBPF 程序已經驗證和編譯,它被附加到内核級事件,這樣當事件發生時,程序就會被觸發,直至運行完成,并将信息呈現給用戶空間應用程序。這就引出了 eBPFmap,或者簡單的 "map"。
eBPFmap
eBPFmap 是在 eBPF 程序和用戶空間應用程序之間傳遞信息的機制。支持雙向信息流。map 是 eBPF 程序和用戶空間應用程序可以讀取或寫入的數據結構。
例如,程序可能會在文件的 gzip 等事件上被觸發。eBPF 程序将向 map 中寫入有關該事件的一些信息,例如文件名、文件大小和 gzip 時間戳。它還可以增加給定時間段内 gzip 操作發生的次數。如果該數字超過某個阈值,eBPF 程序可以将 " 惡意 " 判斷寫入數據結構。簡單地說,eBPF 程序觀察到表明勒索軟件攻擊的行爲,并将此行爲标記爲惡意行爲。用戶空間程序(在我們的示例中是雲工作負載保護(CWPP)代理)可以讀取該 map,查看惡意判斷,并采取适當的操作。基本信息處理發生在 eBPF 程序中,最大限度地減少了傳遞給用戶空間應用程序的信息量,從而優化了性能。
CWPP 中 eBPF 的優勢
雲工作負載保護平台代理執行其他安全控制所沒有的操作,實時檢測并響應運行時威脅,如勒索軟件或零日威脅。這使得 CWPP 成爲雲防禦深度戰略的重要組成部分。一個組織可以而且經常應該有其他雲安全措施,如 AppSec、CSPM 等。每一項都在穩健的雲安全策略中發揮作用。CWPP 代理與這些其他控件一起工作,以提供運行時保護和記錄工作負載追蹤分析。
SentinelOne 控制台中顯示的 Linux 勒索軟件攻擊
如下圖所示,對雲計算實例(VM)的勒索軟件攻擊可以在幾毫秒内鎖定雲工作負載。請注意,在這段 1 分鍾的視頻中,CWPP 代理在勒索軟件啓動後幾分鍾(不到一秒鍾)就檢測到并阻止了勒索軟件攻擊。
嘗試從側面掃描解決方案獲取實時響應是無法實現的。側面掃描通常每天隻運行一次,因爲對雲計算實例的存儲卷進行快照檢查的成本非常高。此外,側面掃描架構在内核中缺乏進程級可見性。這些是 SOC 需要調查的法醫細節,并将事件适當标記并發送給适當的 DevOps 所有者。隻有使用 eBPF 框架的行爲、實時 CWPP 代理才能提供實時過程級可見性和穩定性的組合,使其成爲首選。
工作負載追蹤分析的曆史記錄不僅有助于在發生安全事件時進行調查,還可以進行主動威脅搜索。通過這種方式,攻擊者甚至可以在發動攻擊之前被阻止。
eBPF 框架在 CWPP 計劃中的應用提供了幾個優點,包括但不限于:
運行穩定性;
系統性能;
業務靈活性;
雖然内核模塊可以提供 CWPP 應用程序所需的内核可見性,但在内核中運行代碼可能是危險的。錯誤的操作會破壞系統的穩定(例如内核被攻擊),或在内核中引入安全漏洞。這兩種結果都是不可接受的,特别是在涉及 CWPP 代理的情況下。使用内核模塊的 CWPP 代理可能會導緻内核被攻擊,從而導緻 VM 崩潰并阻礙你的工作負載。這些威脅會直接影響到财務績效、訂單履行、客戶忠誠度。
與内核模塊形成鮮明對比的是,eBPF 框架包括諸如驗證引擎、JIT 編譯器等安全控件。因此,eBPF 程序不會使内核崩潰,它們也不能進入内核中的任意内存空間,這使得它們更不容易出現安全漏洞。eBPF 程序提供了所有内核級的可見性,并且沒有來自内核模塊的任何風險。基于這些原因,從運行穩定性的角度來看,eBPF 是 CWPP 的首選。
系統性能 / 資源效率
将信息從内核内部傳輸到用戶空間的速度緩慢,并且會帶來 CPU、内存性能損耗。相反,eBPF 框架使我們能夠觀察内核行爲,并在将結果的子集傳輸回用戶空間之前在内核内執行分析。這爲在用戶空間中運行并使用 eBPF 程序的 CWPP 代理創造了基本的性能優勢。eBPF 與具有内核模塊的 CWPP 代理相比,用最低的消耗提供了較高的可觀測性。
業務敏捷性
開發人員應該專注于創新,而不是解決内核模塊引入的内核依賴問題。通過從用戶空間進行操作,DevOps 可以更靈活地更新主機操作系統映像,而不必擔心更新與 CWPP 代理發生沖突。eBPF 使這成爲可能。因此,更多的 DevOps 可以用于創新,而不必花精力去維護。
此外,由于 CWPP 代理本身使用 eBPF 框架并避免内核模塊,因此供應商也更加注重創新。當然,客戶也從業務敏捷性中獲益。
以 SentinelOne 的産品爲例,說說 CWPP 的一些出色性能
高性能
獨立測試結果證明了這一點。2021 年 4 月,MITRE Engenuity 發布了 Carbanak 和 FIN7 的 MITRE ATT&CK 基準測試結果,這是一項專注于模拟金融威脅群體的評估。MITRE ATT&CK 首次在其測試中包含 Linux 服務器。SentinelOne 是唯一一個在 Windows 設備和 Linux 服務器之間具有 100% 可見性的供應商。我們擁有最豐富的檢測 ( MITRE 的術語是 " 分析檢測 " ) ,如下圖所示。
Visibility, MITRE Engenuity, Carbanak + FIN7
Analytic Detections, MITRE Engenuity, Carbanak+FIN7
如果 CWPP 要保護雲工作負載免受運行時攻擊并确保業務連續性,那麽它必須是實時的如果是延遲檢測,哪怕是幾秒鍾的時間,攻擊者都可以使雲工作負載停止。如果不是勒索軟件,那就是惡意軟件在你的雲足迹中悄悄傳播。從廣義上講,傳播範圍越廣,補救力度就越大。損失也就越大。正如 MITRE 定義的那樣,SentinelOne 提供了 100% 的實時檢測,零延遲。這就意味着,延遲越少越好。
Delayed Detections, MITRE, Carbanak + FIN 7
同樣,2022 年 MITRE Engenuity ATT&CK 測試顯示 SentinelOne 具有極高的性能。Wizard Spider+Sandworm 模拟還包括 Linux 服務器。此時,SentinelOne 再次以 99% 的分析覆蓋率領先于 CrowdStrike、Microsoft 或 TrendMicro。可以在 MITRE Engenuity 網站上進行直接比較。
2022 年 MITRE 信息圖
資源效率
任何應用程序,無論是 CWPP 代理還是其他應用程序,都需要計算和内存資源才能運行,這些資源都是有成本的。對于在固定和沉沒成本基礎設施(如數據中心)内的部署,此類應用程序會占用原本可用于主要業務工作負載的資源,雖然這不是一項增加的運營費用,但存在資源的機會成本。然而,對于雲 IaaS,所使用的資源是按需計量和付費的。部署 CWPP 代理可能必然會增加雲計算實例的大小(例如,從 t4g.medium 到 t4g.large),從而逐漸增加其運營費用。當然,這是一項必要的支出,但也是一項增量支出。
因此,SentinelOne 的産品更關注 CPU 和内存利用率,就像關注性能一樣。2022 年 7 月,SentinelOne 宣布支持 AWS Graviton3,這是最新一代 AWS ARM 處理器,在計算、功率等方面提供了進一步的優勢。