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