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

Razzer:通過模糊測試查找內核數據競爭漏洞

2019-10-15 09:02:28談心
中國教育網絡 2019年8期
關鍵詞:指令程序

文/談心

內核中的數據競爭可能導致許多有害行為。最嚴重的后果是數據競爭導致內存污染最終可能造成非法權限提升,例如CVE-2016-8655, CVE-2017-2636, and CVE-2017-17712。目前的技術在內核數據競爭漏洞的檢測與防護方面都存在一定的局限性,其原因是內核中的數據競爭漏洞受到一些系統不確定性行為的影響,比如線程的調度與同步機制。因此與普通的漏洞相比,要檢測這類漏洞除了需要控制流和數據流信息以外,還需要精準地執行信息。

在該項工作中,本文提出并設計了針對內核中的數據競爭類型漏洞的模糊測試(Fuzzing)工具Razzer。本文的思路是引導Fuzzing工具去盡可能地執行到存在數據競爭漏洞的代碼。這包含了兩種技術:一是通過靜態分析來定位潛在存在數據競爭的代碼;二是一種確定性的線程交錯技術,來控制線程調度,以提供精確的并行執行信息,降低不確定性。本工作并沒有去解決同步機制對多線程fuzzing的影響。

問題定義

為了更好地檢測數據競爭類型漏洞,文中對這類問題給出了一個明確的定義。

如果目標程序內兩條內存訪問的指令滿足以下3個條件,就是數據競爭:1. 訪問的內存地址相同;2. 至少其中一條指令是對內存的寫;3. 兩條指令可以并發執行。

同時,數據競爭并不都是漏洞,有一些數據競爭可能是開發者有意設計的,有一些數據競爭行為可能產生非預期的行為,這些才是數據競爭漏洞。文中還引入了一些標注,以便后續的說明:

RacePair_{cand}:可能滿足上面三個條件的RacePair

- RacePair_{true}:已確定滿足上面三個條件的RacePair,是RacePair_{cand}的子集

- RacePair_{benign}:屬于預期內的數據競爭

- RacePair_{harm}:非預期的數據競爭

本文給出了一個具體的例子CVE-2017-2636來具體說明,相關代碼如圖1所示。

一個用戶態程序的兩個線程A、B,分別調用了系統函數ioctl和write,這兩個系統函數會由內核來執行。在參數滿足一定條件的情況下,線程A和B都會去訪問同一個內存地址n_hdlc->tbuf,滿足條件一;其中第440行是對內存的寫,第216行是對內存的讀,滿足條件二;這兩處訪存可以并行執行,滿足條件三,因此這是一組RacePair_{true}。而且在這個例子中,程序的行為會由于兩條指令執行先后的不同而變化。當第216行先于440行執行,n_hdlc->buf會被壓入free_list兩次,在后續的代碼中,free_list中的元素會被依次釋放(第269行)。因此最終會導致double free的問題。這一組指令是一組RacePair_{harm}。

圖1 代碼示例

設計與實現

本文把檢測內核中的數據競爭漏洞拆分成了兩個設計需求。

1. 找到一個執行RacePair_{cand}的程序。即找到一個多線程的用戶態程序,每個線程能夠在內核態分別執行到RaceRair_{cand}的指令。

2. 找到一個線程執行序列,使得這RacePair_{cand}的指令能并行執行。

需求1把問題做了簡化,并不去考慮并行執行的問題,就不用考慮線程調度對分析的影響。需求2主要是去尋找一個交錯執行的線程調度方案,使得RacePair_{cand}的指令能并行執行。現在的大部分工具都是只針對上述某一個需求的,而且都存在一定的局限性。

圖2 工具架構

對于需求1,Google的內核Fuzz工具Syzkaller會隨機生成一系列的系統調用,隨機組合成多線程程序,然后運行。但不會考慮線程調度對程序運行的影響。而且純隨機的生成系統調用使得其效率較低。

對于需求2,有一些關注線程交錯執行隨機化地工作,比如 SKI和PCT 算法。這些工具對于給定的一個程序,會去探索所有可能的線程交錯執行序列來執行這個程序。但其缺點是這些工具的算法隨機性都比較強,效率不高。因為在這個研究課題的場景下,我們只需要關心RacePair_{cand}指令的線程調度情況,其他指令的執行順序不是我們所關注的。

下面介紹本工作的設計思路。

Razzer結合使用了靜態分析和動態分析的方法。先通過靜態分析得到內核中潛在的存在數據競爭的代碼RacePair_{cand}。之后會進行兩階段的動態分析,第一階段進行單線程Fuzz,找到一個能執行到RacePair_{cand}的用戶態程序。然后按照算法將這個程序轉化為一個多線程程序(滿足條件一)。第二階段是多線程Fuzz。會尋找特定的線程交錯,使得在執行多線程程序時能并行執行RacePair_{cand}。如果找到了,則獲得了一個RacePair_{true}。Razzer還會檢測內核是否出現了錯誤,如果RacePair_{true}在程序后續執行過程中,導致了內核錯誤,則得到一個RacePair_{harm}。整個工具的架構如圖2所示。

圖3 轉化算法

以下是一些設計上的細節問題:

1. 靜態分析:文中使用了Point_to分析來尋找內核中對同一個結構體的內存訪問。但傳統的Point_to分析具有誤報率高,復雜度高的缺陷。對于靜態分析的結果,Razzer會通過后續的動態分析來確認,以避免誤報。在性能上,本文基于一定的insight,對內核代碼進行了分部分分析,以減小分析的代碼量。

2. 線程調度:待Fuzz的內核運行在虛擬化的環境中,為了控制虛擬CPU的調度,作者修改了虛擬環境的Hypervisor,增加了以下功能:為每個虛擬CPU設置斷點,精確地控制在恢復執行時哪個線程的訪存語句先執行,不同的執行順序會導致后續是否存在錯誤行為,新的Hypervisor給Razzer提供了準確控制CPU調度的能力。

3. 多線程Fuzz:這一步的關鍵是將單線程Fuzz輸出的一個單線程程序Pst,轉化為一個多線程版本Pmt。在轉換過程中還會進行一些插樁,與Hypervisor協作控制程序的調度。轉化算法如圖3所示。

當Pmt中的RacePair_{cand}指令都觸發斷點時,Razzer會檢查訪存指令的訪問地址是否相同,如果相同,則判定為RacePair_{true}。可以注意到在Pmt的最后加入了一些隨機的syscall,這是為了使數據競爭如果造成了惡性后果,程序會報錯。當檢測到一個RacePair_{true},會把結果反饋回生成算法,保持前面的代碼不變,只修改后續隨機添加的syscall,進行新的Fuzz。如果其中某個Pmt使kernel報錯,則是一個RacePair_{harm}。

評價

Razzer最終發現了30個惡性的數據競爭漏洞。其中有16個已經被確認。數據競爭引起的漏洞往往難以復現,更難以找到原因并修復,Razzer生成的漏洞報告極大幫助了開發者對漏洞進行修復。此外作者還測量了工具的性能開銷,并與最新的Fuzzing工具進行了比較。在可接受的額外開銷下,能夠更有效率地Fuzz這一類漏洞。

Razzer是一個專門Fuzz內核中數據競爭漏洞的工具,其亮點有兩個:第一是通過靜態分析得到一些RacePair_{cand},再用動態分析確認,即降低誤報又減少了搜索空間。第二通過算法與工具的結合,給Fuzz工具提供了比較準確的線程并行執行狀態,解決了Fuzz多線程程序的重大挑戰,值得借鑒。

猜你喜歡
指令程序
聽我指令:大催眠術
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 欧美一区二区三区欧美日韩亚洲| 91久久精品国产| 香蕉视频国产精品人| 亚洲无码视频图片| 国产欧美日本在线观看| 又粗又硬又大又爽免费视频播放| 欧美69视频在线| 人妻无码中文字幕一区二区三区| 理论片一区| 精品自拍视频在线观看| 波多野结衣一区二区三视频 | 色综合久久88| 亚洲男人天堂网址| 成人午夜视频在线| 亚州AV秘 一区二区三区| 伊人精品成人久久综合| 国产日本欧美在线观看| 久久精品国产精品一区二区| 狼友视频国产精品首页| 亚洲最新在线| 澳门av无码| 日本欧美视频在线观看| 婷婷丁香色| 国产在线视频欧美亚综合| 国产三级国产精品国产普男人| 首页亚洲国产丝袜长腿综合| 亚洲国产综合自在线另类| 国产一级在线播放| a毛片在线免费观看| 午夜激情福利视频| 亚洲成a人片在线观看88| 国产杨幂丝袜av在线播放| 久久久噜噜噜| 国产91精品久久| 国产国产人成免费视频77777| 欧美日韩另类国产| 国产美女91视频| 亚洲中文字幕23页在线| 91精品啪在线观看国产| 国产99视频在线| 国产99精品久久| 国产成人精品亚洲日本对白优播| 国产精品观看视频免费完整版| 精品久久久久久久久久久| 亚洲午夜福利精品无码| 日韩天堂在线观看| 日韩黄色在线| 国产另类视频| 国产极品嫩模在线观看91| 国产精品久久国产精麻豆99网站| 91久久精品国产| 中文字幕免费在线视频| 一级毛片在线免费看| 亚洲成人手机在线| 亚洲国产高清精品线久久| 亚洲第一页在线观看| 国产玖玖视频| 她的性爱视频| 亚洲第一成网站| 手机看片1024久久精品你懂的| 免费国产无遮挡又黄又爽| 中文字幕日韩欧美| 91亚洲精品国产自在现线| 日韩a在线观看免费观看| 欧美在线观看不卡| 日韩精品欧美国产在线| 亚洲区一区| 午夜日本永久乱码免费播放片| av在线人妻熟妇| 亚洲综合极品香蕉久久网| 久久精品国产精品一区二区| 伊人91在线| 日韩中文字幕亚洲无线码| 欧美精品亚洲精品日韩专| 国产91麻豆免费观看| 夜夜操国产| 午夜电影在线观看国产1区| www.国产福利| 中文成人无码国产亚洲| 欧洲欧美人成免费全部视频 | 精品国产网| 一级毛片免费观看不卡视频|