演講嘉賓 | 梁洪亮
回顧整理 | 廖 濤
排版校對 | 宋夕明
嘉賓介紹
OS安全分論壇
梁洪亮,博士,北京郵電大學副教授,博士生導師。研究興趣為可信軟件與智能系統。
視頻回顧
打開嗶哩嗶哩APP,觀看更清晰視頻
正文內容
軟件缺陷是影響軟件質量的關鍵因素,軟件缺陷分析能夠幫助開發和測試團隊及時識別和分析軟件中的缺陷問題,從而制定相應的解決方案,并持續改進軟件質量和可靠性。目前有哪些高效可靠的軟件缺陷分析方法呢?北京郵電大學梁洪亮老師在第二屆OpenHarmony技術大會上進行了精彩分享。
相較于黑盒/白盒測試而言,模糊測試(Fuzzing)具有可完全自動化、高效率、無誤報等優勢,已經成為當前最熱門的軟件缺陷分析方法之一。通過變異給定的一組種子輸入,模糊測試可以生成大量隨機的或意料之外的測試用例,以觸發被測軟件中的崩潰、斷言失敗或內存泄漏等異常。截止2023年8月,谷歌開放的開源模糊測試框架OSS-Fuzz已幫助1000個項目識別并修復了10000多個漏洞和36000個缺陷。
定向模糊測試是指給定一組測試目標(例如代碼位置),關注于朝向這些測試目標進行搜索,可用于補丁測試、崩潰復現、靜態分析報告驗證等場景。盡管現實軟件中通常存在多個缺陷或漏洞,但是已有模糊測試方法和工具難以處理多個目標。例如,傳統模糊測試工具的粗粒度能量調度方案導致測試的覆蓋率不全面且執行效率較低;導向模糊測試工具在探索階段和利用階段也存在效率和質量的平衡難題。
針對上述問題,梁老師團隊提出并實現了序列引導的多目標混合模糊測試方案“LeoFuzz”。LeoFuzz的核心思想為:
在靜態分析階段,給定被測程序和目標集合,LeoFuzz首先生成目標序列,并對待測程序進行插樁編譯,生成可執行程序。
在模糊測試階段,如果模糊器(Fuzzer)生成的種子輸入使得被測程序崩潰,則存儲到崩潰隊列中;如果增加了目標序列覆蓋率,則存儲到導向隊列中;如果增加了代碼覆蓋率,則存儲到覆蓋隊列中,否則丟棄。
模糊器和混合執行器獨立執行被測程序,并通過共享覆蓋種子隊列和導向種子隊列相互幫助。
LeoFuzz創新提出了動態協調探索-利用兩階段策略。在最初的探索階段,當覆蓋種子數量在總種子中的比率大于某個閾值時,意味著模糊器具有足夠的代碼覆蓋信息,那么應切換到利用階段。當利用階段未生成導向種子的連續執行次數超過某個閾值時,表明當前模糊器的利用能力不足,那么應切換到探索階段。
同時,LeoFuzz也提出了新的能量調度策略,重點考慮了種子和目標之間的多種關系:目標序列TSi的優先級priority、目標序列TSi的全局最大覆蓋率gMaxCov、種子在目標序列 (TSi) 上的序列覆蓋率seqCov。用一個綜合因子(CF)來表示它們的關系。CF的表達式如下:
在基于7個開源軟件(例如objdump,readelf,cxxfilt等)的31個漏洞的實驗評估中,LeoFuzz對單個目標的測試表現優于Beacon、QSYM、AFLGo、Lolly和Berry等基線工具;對多個目標的測試表現也優于QSYM、AFLGo、Lolly、Berry和WindRanger等基線工具。
通過創新的技術手段,LeoFuzz大幅提升了軟件系統缺陷的發現效率和準確率,為開源社區軟件安全分析提供了一種高效的解決思路。未來,希望更多的創新技術能夠使能OpenHarmony,為OpenHarmony技術生態助力。
E N D
關注我們,獲取更多精彩。
審核編輯 黃宇
-
軟件
+關注
關注
69文章
4921瀏覽量
87403 -
軟件缺陷
+關注
關注
0文章
6瀏覽量
7192
發布評論請先 登錄
相關推薦
評論