請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/80039| 標題: | 利用環境隔離提升 libFuzzer 模糊器之可比性 icLibFuzzer: Isolated-context libFuzzer for Improving Fuzzer Comparability |
| 作者: | Yu-Chuan Liang 梁友銓 |
| 指導教授: | 蕭旭君(Hsu-Chun Hsiao) |
| 關鍵字: | icLibFuzzer, |
| 出版年 : | 2021 |
| 學位: | 碩士 |
| 摘要: | libFuzzer 是一個十分強大的模糊器,人們曾利用他在真實世界的程式中找到了成千上萬的漏洞。然而,其他的模糊器在試圖與 libFuzzer 或其變體比較的時候,遇到了兩個主要的限制。首先,比較的測度相較於較常見的代碼覆蓋程度,被限制在了第一個崩潰發生的時間。因為 libFuzzer 當模糊測試目標崩潰的時候就會立即中止。第二點,儘管 libFuzzer 在開啟忽略崩潰模式時可以在找到崩潰後繼續進行模糊測試,仍然有可能因為程式本身預期一個乾淨的全域環境而導致 libFuzzer 產生出錯誤的結果。因此,那些想要和 libFuzzer 比較的模糊器被限制只能使用仔細修改過的程式,或者是那些沒有痊癒環境相依性的程式。為了解決這個環境汙染的問題並提升 libFuzzer 與其他模糊器之間的的可比較性,我們展示了一種新的 libFuzzer 模式,名叫環境隔離式 icLibFuzzer,他隔絕了模糊器實例和模糊測試目標的環境,讓模糊測試目標的環境可以在每次執行結束之後有效的重新初始化。為了要實作出 icLibFuzzer,我們提取了來自 AFL 的設計靈感及目的,修改了 libFuzzer 的進程中 (in-process) 基礎架構,改成了輕量的分叉服務器,並且提出了架構打包,將模糊測試的速度再進一步提升了兩倍左右。我們拿 icLibFuzzer 來和其他四個最先進的模糊器 (AFL,Angora,QSYM,和 Honggfuzz) 在數個真實世界的程式上進行比較。我們的實驗結果顯示,icLibFuzzer 相比於其他模糊器在大部分我們測試的程式上,在實驗了二十四小時後都取得了較好的結果,並且在二十四小時後繼續保持領先直到七十二小時實驗結束。為了要展示我們能夠輕易地跟上 libFuzzer 的最新更新,我們將 icLibFuzzer 更新為最新版本的 libFuzzer (由 LLVM9 更新至 LLVM11)。我們的實驗結果初步顯示,LLVM11 版本的 icLibFuzzer 相比於 LLVM9 版本的 icLibFuzzer 以及 AFL++ (AFL家族中最先進的其中一個模糊器) 都擁有不錯的結果。我們希望 icLibFuzzer 能夠當作另外一個模糊測試研究的基準線。我們的程式碼已經公布在 Github 上。 |
| URI: | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/80039 |
| DOI: | 10.6342/NTU202101508 |
| 全文授權: | 同意授權(全球公開) |
| 顯示於系所單位: | 資訊工程學系 |
文件中的檔案:
| 檔案 | 大小 | 格式 | |
|---|---|---|---|
| U0001-1607202112171300.pdf | 1.2 MB | Adobe PDF | 檢視/開啟 |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。
