《戴世鑫--eBPF在安全領域的應用實踐.pdf》由會員分享,可在線閱讀,更多相關《戴世鑫--eBPF在安全領域的應用實踐.pdf(29頁珍藏版)》請在三個皮匠報告上搜索。
1、eBPF在安全領域的應用實踐第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m中 國 西 安戴世鑫中興通訊信息安全治理存在的挑戰eBPF能解決的問題權限失敗通用維測方案展望第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m中 國 西 安 Linux在各領域廣泛應用,有近60%的嵌入式產品選擇Linux作為操作系統。典型應用領域有路由器、汽車、機器人、智能終端等。信息安全治理存在的挑戰第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f
2、t r a v e l.c o m安全威脅加劇隨著萬物互聯時代的到來,設備從傳統的單機向網聯化、智能化擴展,信息安全日趨重要,設備上暴露的安全漏洞可能引發更加嚴重的后果。以5G電信設備為例:5G 網絡實現了移動網絡從面向人的連接向面向機器連接的演變,安全問題可能引發嚴重事故。電信設備面臨基礎設施、網管接口等方面的安全威脅。操作系統作為基站設備必要部分,是電信業務運行的基礎,需提升安全性以應對上述威脅。另外,隨著國際局勢變化等影響,近年國內外運營商、政府等對電信設備的安全測試愈加嚴格。信息安全治理存在的挑戰第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r
3、a v e l.c o m為應對安全威脅,對系統每個層面均進行信息安全治理。如漏洞處理、內核功能層的網絡安全配置、用戶組件層的鑒權認證、應用層的服務安全等。其中,應用操作系統提供的安全機制進行安全加固,是一個必要環節。信息安全治理存在的挑戰第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m信息安全治理存在的挑戰操作系統給產品提供多種安全機制。但加固后業務申請權限失敗時,內核提供信息有限,業務很難及時定位原因。內核僅返回一個錯誤編號EXXX,業務側原因是啥?為什么不允許?為什么參數無效?為什么權限不夠?為引導用戶更好地使用安全機制
4、,進行安全設計與安全部署。迫切需要一種高效的權限失敗根因分析方案。第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m工具名功能優點缺點capable獲取所有申請的能力與結果能力缺失的故障能夠定位缺失的能力單能力缺失場景retsnoop獲取特定函數集合的返回值能批量的對內核興趣函數執行結果進行監控應用門檻高,需要知道函數清單eperm獲取系統調用層面發生權限失敗能監控系統調用層面發生的權限失敗單系統調用場景audit日志獲取SELinux等鑒權模塊生成日志SELinux等少部分鑒權模塊原生支持覆蓋不全安全領域存在的問題社區現有解決
5、方案無法滿足權限失敗定位訴求,無完備的Linux權限失敗分析工具及方案。第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m安全領域存在的問題應對權限失敗,更完善的分析方案是?第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o meBPF能解決的問題eBPF是一種在Linux內核中實現的安全且高效的沙盒執行環境。能夠在不修改源碼或加載內核模塊的情況下,注入
6、一段程序至系統幾乎任意位置,且被安全地執行,最終達到對系統觀測和流程修改的目的。eBPF廣泛應用于安全審計、性能分析、網絡過濾等領域。eBPF優勢:1、高效。更專注于數據處理;數據采集與分析一體;統一的方法使用內核各種維測機制;便捷的數據通信機制,利于數據處理。2、安全。eBPF程序執行前會進行驗證,確保其不會對系統造成破壞。3、維測模塊與產品解耦,跨平臺與跨版本。第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o mkprobe/uprobe/ftrace/tracepoint/perf_event/USDT/user_event
7、/xdp/sock安全跨平臺版本統一維測解耦便捷通信eBPF能解決的問題attach1、eBPF程序可協同的trace機制清單:動態插樁:以uprobe、kprobe為例。arch_uprobe_exception_notifynotifier_call_chain_atomic_notifier_call_chainatomic_notifier_call_chainnotify_diedo_int3int3 2、協同的基本原理:動態插樁、靜態插樁。eBPF 程序需要掛載到某個內核路徑(掛載點)才能被執行。kprobeperf_eventraw_tracepointtracepointupr
8、obetracecgrouplsmnetnsxdpfreplaceusdtksyscallnetfilternetkittcxeBPF能解決的問題第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m統一的方法使用內核各種維測機制。靜態插樁:以tracepoint為例。_bpf_prog_run32trace_call_bpfperf_call_bpf_exit perf_syscall_exittrace_sys_exitsyscall_trace_exitel0_svc_commonel0_svc_handlerel0_svc1
9、、trace_pipe應用場景:僅需要獲取特定內核函數參數等無需進一步處理的簡單信息,比如刪除文件時的文件路徑是什么?2、共享數據 bss應用場景:需要在內核中采集數據,并在用戶態進行處理。輪詢機制。3、map應用場景:內核采集的數據類型為字典,即 鍵名k:鍵值v 的形式,比如特定進程PID調用某個函數的次數。4、pin_map應用場景:將map關聯為一個文件,不同程序也能夠通過該文件訪問map。5、perf_event應用場景:基于事件驅動的通信方式perf_event。eBPF能解決的問題第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e
10、l.c o m便捷的數據通信機制。eBPF程序為了保證安全,基于eBPF verifier,對程序做了約束:時間維度:有限步數內程序能安全完成?;贒FS的方式遍歷BPF程序的所有指令執行分支,不能出現:程序最大執行步數大于閾值、指令流存在環(for/while/goto)、指令不可達(unreachable)、非法jmp(不能跳出BPF代碼段范圍)、調用了非法函數(要么inline,只能調用輔助函數,如調用了普通內核函數vfs_open)、數據不安全訪問(stack溢出/索引值為變量/指針有效性/指針對齊/BPF helper函數參數類型檢查).空間維度:函數堆棧限制。eBPF能解決的問題第
11、 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o meBPF保證運行時安全。eBPF開發方案優點缺點推薦應用場景libbpf1、CORE。2、相對bcc效率高。NA支持CORE。bcc1、python接口,開發效率高。1、性能影響大。啟動時編譯。2、空間大。引入的clang+llvm庫大。維測方案快速進行方案可行性驗證。BPF匯編/cBPF1、易調優,執行效率高,1、匯編,晦澀,難維護。NA*還有社區eunomia-bpf、coolbpf等優秀的方案待探索eBPF能解決的問題第 二 屆 中 國 e B P F 開 發 者 大 會W
12、W W.e b p f t r a v e l.c o meBPF開發方案。eBPF可方便滿足以下用戶態場景應用要求:1、函數參數讀寫2、函數局部變量讀寫3、全局變量讀寫4、函數返回值讀寫5、輕量級進程熱補丁/函數流程修改6、漏洞攻擊阻斷eBPF能解決的問題第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m一切準備就緒,如何實現權限失敗定位?資源訪問權限失敗定義:存在一個函數調用鏈,底層函數以語句return-EP
13、ERM;或return-EACCES返回,稱此時發生了一次權限失敗。例如,/典型的一次錯誤碼EPERM調用過程回溯 return-EPERM;cap_capable ns_capable_common capable_wrt_inode_uidgid generic_permission kretprobe_trampoline inode_permission lookup_open do_last path_openat do_filp_open do_sys_open _x64_sys_open-libc_fun1_xxx 0 x406000.func1-業務故定位包含“return-E
14、xxx”語句的底層函數是關鍵。怎么定位?第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m權限失敗通用維測方案第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m依據權限失敗場景,團隊開發了三種定位算法策略,從三種維度定位權限失敗原因:權限故障通用維測方案策略功能優點缺點審計鑒權函數監控鑒權相關的函數鑒權情況適用于90%場景權限失敗定位,性能開銷小鑒權函數難以提取全,低概率無法定位函數返回值回溯構建函數返回值的傳遞過程所有場景性能開銷大,不適用商用環境函數執行流差異
15、函數執行流角度定位差異定位所有場景性能開銷大,不適用商用環境用戶態:權限故障表現,#mknod nod0 c 1 1mknod:nod0:不允許的操作#date-s 1date:無法設置日期:不允許的操作#mkdir/usr/sbin/dir0mkdir:無法創建目錄“/usr/sbin/dir0”:權限不夠#rm/proc/self/statusrm:無法刪除/proc/self/status:不允許的操作審計鑒權函數法權限故障發生時,內核必定至少存在一次“return-Exxx”語句的執行,內核:某處必定存在函數包含一次return-Exxx執行如何找到所有可觀測的興趣函數?第 二 屆 中
16、 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m審計鑒權函數法內核函數調用鏈視角下,遍歷所有會導致權限故障的最底層函數,并使用eBPF對該函數清單進行觀測。綠色:可觀測函數。紅色:內核未導出函數,不可觀測。第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m演示:針對創建設備失敗,提示無權限問題,該方案可識別到權限失敗發生,并給出了失敗原因與參考解決方案。審計鑒權函數法第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c
17、o m函數指針導致法1無法定位,可基于函數執行流對比法進行定位,基于eBPF獲取目標業務進程狀態,配合動靜態構建的函數執行流可得到目標業務鑒權失敗點。相同操作,2種不同的內核鑒權流程:執行流1:func1func2 DIFFfunc3func4func5執行流2:func1func2 DIFFfunc3func6func4func5函數執行流差異法第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m演示:業務刪除文件失敗,可得知故障點是由may_delete觸發。函數執行流差異法第 二 屆 中 國 e B P F 開 發 者 大
18、會W W W.e b p f t r a v e l.c o m調用堆棧能反饋函數在觀測時刻的調用關系,函數返回值傳遞過程是否也能類似思路獲???動靜態分析構建函數調用關系,并基于eBPF對涉及函數進行觀測,分析函數調用過程中函數返回值的傳遞過程。函數返回值回溯法第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m演示:rm/proc/self/status失敗,返回錯誤碼-EPERM??芍b權失敗與may_delete有關。函數返回值回溯法第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a
19、 v e l.c o m第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m經實踐驗證,可降低約1/3權限失敗定位耗時,有效幫助了用戶更好地使用操作系統安全機制,利于安全設計與安全部署。權限故障通用維測方案第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o mZealDoctor維測調優框架ZealDoctor維測調優框架采集與分析解耦:減少不必要的重復采集,減少性能消耗;策略復用,提高工具靈活度。精簡依賴:基于eBPF、ftrace、kprobe等內核自帶功能。標準化IO:精簡代碼,減少消耗,且容易按需擴展??缙脚_:框架基于標準C開發,工具組件支持C、Python??膳cSysOM對接,擴展邊緣場景。展望01提高eBPF程序的可調試性02eBPF支持低版本內核第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m03eBPF安全問題第 二 屆 中 國 e B P F 開 發 者 大 會W W W.e b p f t r a v e l.c o m