999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種結合eBPF與KFENCE的Linux內核態內存漏洞檢測方法的研究

2021-09-26 08:19:46中國船舶重工集團公司第七一六研究所王凱龍
電子世界 2021年16期
關鍵詞:頁面檢測方法

中國船舶重工集團公司第七一六研究所 王凱龍

內存漏洞包括內存泄漏(Memory Leak)、重復釋放內存(Double Free)和釋放后讀寫(Use after Free),均源于內存的動態分配過程。內存泄漏是指應用程序運行過程中未及時將動態分配的堆區內存釋放,導致可用內存持續減少,進而造成系統內存耗盡,運行緩慢甚至崩潰的嚴重問題。重復釋放同一塊內存、釋放后讀寫會造成指針訪問未知區域,這兩種漏洞均會導致不可預測的結果。

Linux內核基于C語言編寫,在具有高運行效率的同時也存在著較大的內存泄漏隱患。內核在管理內存資源的同時,也占用內存資源,不合理的使用可能會造成各種異常。

目前定位內存漏洞的方法主要有靜態檢測與動態檢測。靜態檢測方法通過直接檢視源碼,可以較早發現問題,以較低的代價進行修復,但誤報漏報的風險較大。動態檢測方法通過插入檢測代碼到目標程序中,實時跟蹤內存操作,可以得到較準確的檢測結果。但目前多數動態檢測方法不支持內存泄漏檢測,且有概率引入新的安全風險,不適合在生產環境中大量使用。

eBPF技術是近年來linux系統領域的一個重大創新,具備較高的執行效率和生產環境安全性,支持用戶可編程,加入系統后無需重復編譯內核。將eBPF技術與內存漏洞動態檢測方法相結合,可有效支持內存泄漏檢測,并在保證檢測準確性的同時有效降低對系統性能的影響。

1 原理和方法

1.1 eBPF/BCC

誕生于1992年的伯克利包過濾伯克利包過濾(Berkeley Bag過濾),可以免去內核到用戶空間的無用數據包拷貝。BPF程序包含一個簡單的字節碼,可經用戶空間注入內核,經過驗證程序進行檢查(防止內核崩潰或安全問題)后附加到套接字。BPF的語言簡潔易用,同時BPF為編譯而設計實現了內核即時(JIT)虛擬機,這是該工具的杰出特色。

2013年,BPF在原有基礎上增加了map與tail call等新功能,性能也得到顯著提高。修改后版本稱eBPF,與經典BPF做區別。同時,JIT虛擬機被重寫。eBPF比經典BPF更接近本機語言,且在內核中開放了新的掛載點,可以基于Event運行程序,非常高效,可支持內核內編程,并可以增強其他跟蹤器。

eBPF在功能上做了較大拓展,可通過kprobe得到內核函數運行信息,無需額外加入插樁代碼重新編譯內核,也無需借助類似gdb的調試工具。除此之外可以即時獲取代碼執行當前的寄存器狀態以及調用棧信息。其原理類似在指令中增加保存點,內核執行至此會自動保存當前寄存器狀態與棧信息,然后進入斷點處掛載的處理程序。程序執行完畢,內核返回到保存點位置,并將寄存器狀態恢復。

BCC(BPF Compiler Collection)是基于eBPF的開發工具包。它封裝了一系列高效的內核跟蹤和操作接口,并提供了開箱即用的檢測工具和Demo。BCC在eBPF提供的接口基礎上進行封裝,同時提供高級語言對應編程接口。

圖1 eBPF運行流程圖

1.2 內核態動態內存漏洞檢測方法

KFENCE是一個低采樣的內存錯誤檢測工具,可以Patch形式編入內核。它根據采樣間隔進行受保護的內存分配,采樣間隔到期后,通過主分配器(SLAB或SLUB)進行的下一次分配將由KFENCE的對象池提供,同時重置計時器,等待到期后的下一次分配。每個KFENCE對象都駐留在專用頁面上,對象頁面左右兩側的頁面是受保護頁面,其屬性為受保護狀態,對它們的任何訪問都會導致頁面錯誤,KFENCE攔截此類頁面錯誤并報告越界訪問。在KFENCE對象被釋放后,對象的頁面將再次受到保護,并被標記為已釋放,對該對象的任何訪問都會導致故障。KFENCE攔截此故障,并報告use-after-free錯誤。

圖2 KFENCE保護內存分布圖

KFENCE犧牲了一定的檢測精度換取了較小的性能開銷,相比于與同類方法,更適合在產品環境中部署,用于檢測內存漏洞。

2 基于eBPF/KFENCE的linux內核態內存漏洞檢測方法

KFENCE檢測方法可用于檢查內存訪問越界、重復釋放和use-after-free問題,但無法檢測內存泄漏問題,另外,僅支持內存監測,無法對內存錯誤做即時處理。本文通過加入eBPF模塊,補足了內存泄漏檢測功能,同時在KFENCE接口處掛載內存錯誤處理ePBF模塊,對所報錯誤進行即時處理,可有效降低內存錯誤對系統運行造成的負面影響。

針對內存泄漏問題,Linux公開了用于內存分配的跟蹤點,可以通過eBPF程序對其進行檢測。本文采用的內存泄漏檢測方法跟蹤并匹配內存分配和重新分配請求,并收集記錄每個分配的調用堆棧,最終可以打印一個概要,其中統計了調用堆棧申請后沒有釋放的內存數量。

方法流程如圖3所示。

圖3 基于eBPF/KFENCE的linux內核態內存漏洞檢測方法流程圖

(1)各線程的每次內存申請和釋放均由eBPF模塊記錄,模塊通過判斷分配和釋放操作的不匹配,定位出泄漏內存的調用棧。

(2)KFENCE按預設時間間隔進行采樣,每次時間間隔到期后的下一次內存分配將從KFENCE對象池進行分配,對此塊內存的操作將受到KFENCE的監控。

(3)若內存訪問出現越界錯誤或釋放后使用錯誤,系統拋出故障,由KFENCE接收,轉交eBPF模塊處理。

(4)內存占用期間由ePBF模塊監控,可實時獲取不同內核線程的內存占用情況,某線程內存占用持續增長達到閾值后報出內存泄漏風險。

(5)若內存釋放出現重復釋放錯誤,系統拋出故障,由KFENCE接收,轉交ePBF模塊處理。

3 驗證測試

本次測試環境為x86平臺,單CPU四核,4G內存,linux內核版本5.9.1。為更好體現本方法對系統響應時間的影響,預先加入內核實時補丁,版本為5.9.1-rt20。測試內容包括內存漏洞檢測功能測試與檢測方法對系統性能影響測試。

3.1 內存漏洞檢測方法功能測試

本文選取了KFENCE測試集,并從內存漏洞測試集Juliet Test Suite中選取了CWE-401 Memory Leak的一部分移植至內核態用于功能驗證。將本文提出的內存漏洞檢測方法在該測試集中進行實驗。

測試集具體信息如表1所示。

表1 測試集具體信息

3.2 檢測方法對系統性能影響測試

測試關注的性能項為系統響應時間與內存占用率,本文選取的測試工具為開源測試工具rt-test和系統內存統計工具free。測試階段分兩次運行系統,一次執行檢測,另一次不執行檢測。系統響應時間記錄1000000次,并統計響應時間分布情況,測試結果如表2所示。

表2 測試結果

3.3 測試結論

功能測試結果顯示,本文提出的測試模塊可以較準確地檢測到各個種類的內核態內存漏洞。性能測試結果顯示,測試模塊對系統響應時間的影響保持在us級,未產生過大延遲,最大響應延遲增加3us,內存占用率提高0.07%,未對系統性能產生明顯影響。

Linux內核中在具有高運行效率的同時也存在著較大的內存泄漏隱患,可能會引發不可預測的系統異常,有必要進行運行時的動態檢測,但現有的動態檢測方法不能較好的覆蓋所有種類的內存漏洞,且對系統性能有一定的影響,不適合在生產環境中大量使用。本文提出了一種基于eBPF/KFENCE的linux內核態內存漏洞檢測方法,經實驗驗證,該方法可以較準確地檢測所有常見種類的內存漏洞,且對系統性能影響小,具有較高的實用價值。

猜你喜歡
頁面檢測方法
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
小波變換在PCB缺陷檢測中的應用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: jizz国产视频| 六月婷婷精品视频在线观看| 成人午夜视频免费看欧美| 国产真实乱人视频| 一本色道久久88| 精品超清无码视频在线观看| 国产亚洲高清在线精品99| 二级特黄绝大片免费视频大片| 欧美一级在线播放| 国产精品任我爽爆在线播放6080 | 精品三级在线| 亚洲欧美日韩综合二区三区| 久久综合结合久久狠狠狠97色| 国产丝袜丝视频在线观看| 久久精品国产精品一区二区| 久久毛片免费基地| 成·人免费午夜无码视频在线观看| 午夜视频免费试看| 国产黄色片在线看| 在线视频亚洲色图| 国产精品一区二区无码免费看片| 亚洲成人免费在线| 国产精品久久久久婷婷五月| 嫩草国产在线| 欧美a网站| 日韩亚洲高清一区二区| jijzzizz老师出水喷水喷出| 成人永久免费A∨一级在线播放| 亚洲首页在线观看| 四虎国产永久在线观看| 色婷婷综合激情视频免费看| 亚洲欧美日韩中文字幕一区二区三区| 欧美色视频日本| 国产精品三级专区| 国产欧美又粗又猛又爽老| a网站在线观看| 手机成人午夜在线视频| 久久久波多野结衣av一区二区| 91精品国产自产在线老师啪l| 日韩高清欧美| 精品福利视频导航| 午夜a视频| 夜精品a一区二区三区| 一区二区三区精品视频在线观看| 欧美成人精品一区二区| 日本国产精品一区久久久| 国产亚洲精久久久久久无码AV| 国产XXXX做受性欧美88| 久久久久免费精品国产| 欧美午夜小视频| 四虎影视国产精品| 亚洲一级毛片免费观看| 亚洲AⅤ永久无码精品毛片| 欧美视频在线第一页| 国产精品美女自慰喷水| 99爱视频精品免视看| 人与鲁专区| 欧美精品xx| 亚洲一级毛片在线播放| 亚洲国产成人麻豆精品| 亚洲 欧美 日韩综合一区| 3D动漫精品啪啪一区二区下载| 丰满人妻被猛烈进入无码| 国模粉嫩小泬视频在线观看 | 亚洲区一区| 久久永久免费人妻精品| 精品成人一区二区三区电影| 国产激情无码一区二区免费| 日韩av手机在线| 91精品国产情侣高潮露脸| 久久a毛片| 欧美专区日韩专区| 狠狠色噜噜狠狠狠狠色综合久 | 免费中文字幕一级毛片| 国产在线观看99| 国产va在线观看| 2021精品国产自在现线看| 91免费在线看| 亚洲AV无码乱码在线观看代蜜桃| 亚洲国产中文综合专区在| 婷婷六月激情综合一区| 97se亚洲综合在线韩国专区福利|