Microsoft 正在努力為 Windows 提供擴展的 Berkeley Packet Filter (eBPF) 支持

閱讀時間圖標 2分鐘讀


讀者幫助支持 MSpoweruser。如果您透過我們的連結購買,我們可能會獲得佣金。 工具提示圖標

請閱讀我們的揭露頁面,了解如何幫助 MSPoweruser 維持編輯團隊的發展 阅读更多

ZDNet報告 微軟正在努力將 Linux 安全工具擴展伯克利數據包過濾器 (eBPF) 引入 Windows 10。

該工具目前可以在 Linux 的 Windows 子系統上運行,但微軟正在致力於原生支持,問題是該工具在內核上下文中運行代碼,這會引發各種安全問題。

然而,這項工作可能是值得的,因為 eBPF 廣泛用於網絡過濾、分析和管理,還用於系統調用過濾和進程上下文跟踪,並構成了 Cilium、Falco 和 Tracee 等多種安全應用程序的基礎; Kubernetes 觀察程序(如 Hubble 和 Pixie)以及工具鏈(如 Clang)。

ebpf-for-windows 項目旨在利用幾個現有的 eBPF 開源項目,並添加“粘合劑”以使它們在 Windows 上運行。

如圖所示,現有的 eBPF 工具鏈(clang 等)可用於從各種語言的源代碼生成 eBPF 字節碼。 字節碼可以被任何應用程序使用,或者通過 Netsh 命令行工具使用,該工具使用公開 Libbpf API 的共享庫,儘管這仍在進行中。

eBPF 字節碼被發送到靜態驗證器(PREVAIL 驗證器),該驗證器託管在受用戶模式保護的進程(允許內核組件信任由其信任的密鑰簽名的用戶模式守護進程的 Windows 安全環境)中。 如果字節碼通過了所有驗證程序檢查,它可以被加載到解釋器(從內核模式執行上下文中的 uBPF),或 JIT 編譯(通過 uBPF JIT 編譯器)並將本機代碼加載到內核模式執行中上下文(但請參閱底部關於 HVCI 的常見問題解答)。

安裝到內核模式執行上下文中的 eBPF 程序可以附加到各種鉤子(目前目前有兩個鉤子:XDP 和一個套接字綁定鉤子)並調用由 eBPF shim 公開的各種幫助 API,它在內部包裝公共 Windows 內核 API,允許在現有版本的 Windows 上使用 eBPF。 隨著時間的推移,將添加更多的鉤子和助手。

最終結果將是一個 Windows 特定的 eBPF 託管環境,這將允許 Windows 開發人員使用開源 eBPF 程序而無需重新編碼。

退房 GitHub 上的 ebpf-for-windows 項目.

有關主題的更多資訊: eGMP, 微軟, 10窗口

發表評論

您的電子郵件地址將不會被發表。 必填字段標 *