[發(fā)明專利]一種提高模糊測試效率的方法和系統(tǒng)有效
| 申請?zhí)枺?/td> | 201811257109.8 | 申請日: | 2018-10-26 |
| 公開(公告)號: | CN109522221B | 公開(公告)日: | 2021-08-31 |
| 發(fā)明(設(shè)計)人: | 陳愷;宗珮媛;梁瑞剛 | 申請(專利權(quán))人: | 中國科學院信息工程研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京君尚知識產(chǎn)權(quán)代理有限公司 11200 | 代理人: | 邱曉鋒 |
| 地址: | 100093 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 提高 模糊 測試 效率 方法 系統(tǒng) | ||
本發(fā)明涉及一種提高模糊測試效率的方法和系統(tǒng)。該方法包括:1)收集模糊測試器變異生成的輸入和所述輸入的目標代碼可達性信息,作為訓練數(shù)據(jù);2)利用訓練數(shù)據(jù)訓練輸入與目標代碼可達性的深度學習模型;3)利用訓練完成的深度學習模型判斷新的輸入在目標程序中的目標代碼可達性,若可達則將新的輸入交付給目標程序執(zhí)行,若不可達則丟棄新的輸入。進一步地,步驟3)中若不可達則通過比較不可達輸入的特征與新的輸入的特征是否相似來檢查預(yù)判值是否可信,若可信則丟棄此輸入,否則將新的輸入交付給目標程序執(zhí)行。本發(fā)明側(cè)重于過濾模糊測試中無法到達目標代碼的無用輸入,可以與其他模糊測試方法互補或同時使用,從而有效提高模糊測試效率。
技術(shù)領(lǐng)域
本發(fā)明屬于計算機軟件技術(shù)、模糊測試技術(shù)領(lǐng)域,主要涉及一種加速模糊測試發(fā)現(xiàn)軟件漏洞的方法和系統(tǒng),更確切地是通過提前過濾無法到達目標的測試用例來節(jié)省測試程序執(zhí)行時間的加速模糊測試的方法和系統(tǒng)。
背景技術(shù)
模糊測試技術(shù)是暴露計算機程序異常的最流行的軟件測試技術(shù)之一。通常,模糊測試工具生成許多程序輸入并將它們提供給程序,隨即通過監(jiān)視程序執(zhí)行過程中崩潰等異常情況,模糊測試工具可以捕獲隱藏的錯誤或漏洞。模糊測試技術(shù)旨在找出理想的程序輸入,使其可以繞過一系列檢查(例如,格式檢查),命中有缺陷的代碼并觸發(fā)錯誤。而在實際情況中,由于大量程序輸入中只有很小的比例能到達有缺陷的代碼,生成這樣的程序輸入非常困難。因此,一些模糊測試工具以提高目標程序的代碼覆蓋率為目標,希望通過觸發(fā)更多程序分支來觸發(fā)錯誤。另一方面,一些模糊測試工具旨在生成輸入到達錯誤代碼以觸發(fā)指定的錯誤,這極大地幫助模糊測試工具快速暴露目標程序的異常,這種通過盡可能命中目標代碼的模糊測試被稱為有目標的模糊測試。有目標的模糊測試通常包括兩個主要步驟。首先,它產(chǎn)生各種輸入并逐漸改變它們;其次,它執(zhí)行目標程序并監(jiān)控異常的發(fā)生。目前大多數(shù)模糊測試技術(shù)都集中在第一步。它們依賴于目標程序的執(zhí)行來判斷輸入是否可以觸發(fā)錯誤異常。
實際上,如果不執(zhí)行目標程序,很難判斷一個新的輸入是否可以到達錯誤代碼。一個理論上可行的解決辦法是符號執(zhí)行,它可以提取從程序起點到錯誤代碼的所有條件語句,然后使用條件語句中的約束和輸入上的相關(guān)操作來構(gòu)建模型。然而,對于真實的程序,由于路徑爆炸問題和符號執(zhí)行效率的瓶頸,符號執(zhí)行難以在中大型軟件程序中應(yīng)用。
由于深度學習模型良好的數(shù)據(jù)擬合能力,一些研究試圖利用深度學習技術(shù)來提高模糊測試技術(shù)的效率。Rajpal等人提出了一種通過學習輸入變異位置與覆蓋率關(guān)系的方法來變異出覆蓋新路徑的輸入,同樣地,Godefroid等人通過對輸入文件的語法進行建模來生成新的變異輸入用于觸發(fā)新的程序路徑。這類工作寄希望于新的程序路徑能夠觸發(fā)漏洞,而現(xiàn)實是有缺陷的代碼需要滿足的條件往往不止一條,難以被新生成的輸入首次到達就觸發(fā)。而Angora使用輕量級污點分析技術(shù)來跟蹤輸入字節(jié)對控制流的影響,并通過深度學習中的梯度下降搜索算法來生成變異輸入來觸發(fā)目標代碼塊。這類工作受到了污點分析和符號求解等程序分析技術(shù)的限制,只能在一些簡單軟件中進行脆弱性檢查。此外,上述方法都無法避免生成無效的程序輸入(例如,無法觸發(fā)新路徑或無法到達目標代碼的輸入),而本發(fā)明中的方法旨在過濾無效的程序輸入,為模糊測試器節(jié)省程序運行時間。
發(fā)明內(nèi)容
針對上述問題,本發(fā)明通過構(gòu)建一個模型來判斷輸入到錯誤代碼的可達性,該模型可以過濾無法到達錯誤代碼的輸入,因此不需要使用無效輸入執(zhí)行目標程序。如果使用該模型的判斷時間比實際執(zhí)行的時間短得多,則在模糊測試過程中可以節(jié)省大量時間。
本發(fā)明的目標是讓目標模糊器在真正執(zhí)行程序前識別并丟棄無法到達目標代碼的輸入以節(jié)省模糊測試器的時間。為了避免重量級程序分析(例如符號執(zhí)行),僅使用先前輸入的可達性來構(gòu)建模型。不同于那些主要關(guān)注如何生成合適輸入以達到錯誤代碼的方法,本方法是與其他模糊測試方法互補兼容的方法,而不是替代方案。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國科學院信息工程研究所,未經(jīng)中國科學院信息工程研究所許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811257109.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種文本測試方法及裝置
- 下一篇:一種用于教育云平臺的異常捕獲方法及裝置





