File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ title : eBPF
3
+ status : Completed
4
+ category : 架構
5
+ ---
6
+
7
+ ## 是什麼 {#what-it-is}
8
+
9
+ eBPF(延伸柏克萊封包篩選器)是一種允許小型沙盒程式或腳本在 Linux 系統核心空間執行的技術,不需要修改核心原始碼載入 Linux 核心模組。
10
+
11
+ Linux 系統有兩個空間:核心空間和使用者空間。
12
+ 核心空間是作業系統的核心,也是唯一可以無限制存取硬體的部分。
13
+
14
+ 應用程式會停留在使用者空間,當它們需要更高權限時,就會向核心發送要求。
15
+ 對於需要更彈性的應用程式,像是直接存取硬體,核心可以透過所謂的「Linux 核心模組」進行擴充。
16
+ 這種方式擴充了核心的預設功能,允許應用程式更深度地存取底層元件。
17
+ 不過,這種方法也會帶來安全風險,因此 eBPF 成為更有吸引力的替代方案。
18
+
19
+ ## 解決的問題 {#problem-it-addresses}
20
+
21
+ 通常狀況下,應用程式在使用者空間執行,如果應用程式需要核心的某些權限(E.g. 存取某些硬體),
22
+ 會透過「系統呼叫」向核心提出請求。
23
+ 在大多數情況下,這種方法都能正常執行。不過,在某些情況下,開發人員需要更靈活的低階系統存取方式。
24
+ 可觀察性、安全性和網路功能就是很好的範例。
25
+ 為此,我們可以使用 Linux 核心模組,在不修改核心原始碼的情況下延伸核心基礎。
26
+ 雖然使用 Linux 核心模組有很多好處,但也會帶來安全風險。
27
+ 由於 Linux 核心模組在核心空間內執行,它們可能會導致核心崩潰,而核心一旦崩潰,整個機器也會當機。
28
+ 此外,核心模組擁有更高的權限,可以直接存取系統資源。如果沒有適當的安全保護,攻擊者就會利用這些漏洞。
29
+
30
+ ## 如何幫助我們 {#how-it-helps}
31
+
32
+ eBPF 提供比 Linux 核心模組更可控的環境,以執行使用者自訂的程式。
33
+ 它在核心的沙盒環境中執行,提供隔離並降低風險。
34
+ 如果漏洞或缺失在 eBPF 程式中被利用,其影響通常僅限於沙盒環境。
35
+ 此外,在 eBPF 程式開始在核心中執行之前,它必須通過一些驗證。
36
+ 驗證器元件會檢查 eBPF 程式是否存在潛藏的安全違規行為,
37
+ 像是違規存取記憶體、無窮迴圈和未經授權的核心函式。
38
+ 這樣它就能確保程式不會進入無窮迴圈並導致核心崩潰。
39
+ 與 Linux 核心模組相比,這些安全控制措施使 eBPF 成為在 Linux 核心中執行應用程式更安全的選擇。
You can’t perform that action at this time.
0 commit comments