面向漏洞挖掘的基于符號分治區(qū)的測試用例生成技術(shù)
發(fā)布時間:2021-12-01 23:05
在漏洞挖掘中,符號執(zhí)行技術(shù)是一種常用的測試用例生成技術(shù)。但當軟件中包含加解密、校驗和檢驗等復(fù)雜數(shù)學(xué)運算函數(shù)時,使用符號執(zhí)行技術(shù)生成測試用例存在無法有效求解約束表達式的問題,導(dǎo)致漏洞挖掘效率低下。針對該問題,文章結(jié)合分治算法的思想提出基于符號分治區(qū)的測試用例生成技術(shù)。首先通過靜態(tài)分析技術(shù)識別軟件中的加解密、校驗和檢驗等函數(shù);然后以程序中的加解密、校驗和檢驗函數(shù)為分界點對軟件進行分區(qū),符號執(zhí)行引擎每執(zhí)行到軟件的一個分治區(qū),就在本區(qū)引入一個新的符號變元進行約束構(gòu)建,在約束求解時從軟件最后一個分治區(qū)開始遞歸求解。基于該方法,文章在符號執(zhí)行平臺S2E上實現(xiàn)了漏洞挖掘原型系統(tǒng)Divide,并與現(xiàn)有的符號執(zhí)行生成測試用例技術(shù)進行對比實驗。實驗結(jié)果表明,文章方法能夠快速、有效地生成測試用例,提高漏洞挖掘的效率。
【文章來源】:信息網(wǎng)絡(luò)安全. 2020,20(05)北大核心CSCD
【文章頁數(shù)】:8 頁
【部分圖文】:
圖1分治區(qū)劃分示意圖??5)令分治區(qū)2的符號表達式F4〇〇aF5〇〇aF6〇;)等??于“AAAA”,求解得到分治區(qū)2的具體輸入值/
?*p=0;??13?}??14?b64decode(buf,?buf2);??15?puts(MThe?decode?result1');??16?puts(buf2);??17}??以32位系統(tǒng)為例,執(zhí)行到分治點函數(shù)b6Wecode〇??時如鑛取辟麵言息進行分析。32位系統(tǒng)的函數(shù)參??數(shù)以及函數(shù)返回地址都放置在函數(shù)的堆?臻g中,通過??對函數(shù)調(diào)用前后的行分析即可獲取函麵回職??與函數(shù)參數(shù)信息。當程序流執(zhí)行callb^Wecode指令后,??b?decode〇的堆?臻g如圖3所示。函數(shù)找從棧頂?shù)綏??底依次保存該函雖行完畢的返回脈,函數(shù)的參數(shù)1??(buf?)、參數(shù)2?(?buf2)等信息。當軟件執(zhí)行到函數(shù)掛鉤??祖時,首先讀取締器ESP的值,獲取函麵纖頂??在內(nèi)存中的位置;之后從函數(shù)找讀取函數(shù)執(zhí)行完畢后的??返回地址以及用來引人符號變元的內(nèi)存空間的地址;最??后將寄存器EIP的值覆蓋為函數(shù)的返回地址以跳過該函??數(shù)的執(zhí)行。??esp??????返回地址??Argl?(buf)??Arg2?(buf2)??ebp??圖3堆棧空間示例??以代碼1為例,符號變元引入可以理解為如下過??程:辟執(zhí)行引擎執(zhí)行到代碼行14時調(diào)用符號引入模??塊,分析b64decode〇的堆棧,獲取代碼行15的EIP值??與b64decode〇中第2個參數(shù)bu£2的地址。在buf2的地??址空間內(nèi)引人新的符號變元,并跳過代碼行15的執(zhí)行,??直織行代碼行16。??符號變元引入的詳細算法如算法1所示。算法輸??人為分治點函數(shù)地址,輸出為新引人的符號變元。算??法1通過函數(shù)getSymb〇進行調(diào)用。??算法1符號變元引入
3?vl一1))??(And?(Eq?0x41?(Read?w8?0x2?v〇))??(And?(Eq?0x41?(Read?w8?0x1?vl_1))??(Eq?0x41?(Read?w8?0x0?vl_l)))))????calculated?pathConstraints'?size?=?2,?original?pathConstraints'?size?=?Z??圖6約束構(gòu)建??個分治區(qū)的約束,使約束表達式的值等于sir中的內(nèi)容??并求解,得到的值即為輸人。求解結(jié)果如圖7所示。??00000000?娜■?YWFhYQ==.??00000010??00000020??60060036??60060040??00006056??00000060??圖7求解結(jié)果??4結(jié)束語??當軟件中包含加解密、校驗和檢驗等復(fù)雜數(shù)學(xué)運??算函數(shù)時,細符^撕技術(shù)生成測試用例存在無法有??效求解約束表達式的問題。針對該問題,本文提出了基??于符號分治區(qū)的測試用例生成技術(shù)。通過實例可以看出??本:能夠函數(shù)的約棘解問題,能??夠細咖密,校錄復(fù)雜數(shù)學(xué)運算函數(shù)盼測試??用例方釀具優(yōu)勢,提高了漏洞挖掘的效率。但本妓??法需要先通過對軟件的靜態(tài)分析得到作為分治點的函數(shù)??的相關(guān)信息,對軟件靜態(tài)分析能力要求較高。下一步的??工^把函麵要施加入軟般析狐提高發(fā)現(xiàn)??與分析軟件中分治點函數(shù)信息的能力。?(責編馬珂)??參考文獻:??[1]?DONG?Qixing.?Research?on?Test?Case?Generation?Technology?Based??on?Dynamic?Symbol?Execution[D]
【參考文獻】:
期刊論文
[1]模型檢測中狀態(tài)爆炸問題研究綜述[J]. 侯剛,周寬久,勇嘉偉,任龍濤,王小龍. 計算機科學(xué). 2013(S1)
[2]基于符號化執(zhí)行的Fuzzing測試方法[J]. 陳建敏,舒輝,熊小兵. 計算機工程. 2009(21)
碩士論文
[1]基于動態(tài)符號執(zhí)行的測試用例生成技術(shù)研究[D]. 董齊興.中國科學(xué)技術(shù)大學(xué) 2014
本文編號:3527222
【文章來源】:信息網(wǎng)絡(luò)安全. 2020,20(05)北大核心CSCD
【文章頁數(shù)】:8 頁
【部分圖文】:
圖1分治區(qū)劃分示意圖??5)令分治區(qū)2的符號表達式F4〇〇aF5〇〇aF6〇;)等??于“AAAA”,求解得到分治區(qū)2的具體輸入值/
?*p=0;??13?}??14?b64decode(buf,?buf2);??15?puts(MThe?decode?result1');??16?puts(buf2);??17}??以32位系統(tǒng)為例,執(zhí)行到分治點函數(shù)b6Wecode〇??時如鑛取辟麵言息進行分析。32位系統(tǒng)的函數(shù)參??數(shù)以及函數(shù)返回地址都放置在函數(shù)的堆?臻g中,通過??對函數(shù)調(diào)用前后的行分析即可獲取函麵回職??與函數(shù)參數(shù)信息。當程序流執(zhí)行callb^Wecode指令后,??b?decode〇的堆?臻g如圖3所示。函數(shù)找從棧頂?shù)綏??底依次保存該函雖行完畢的返回脈,函數(shù)的參數(shù)1??(buf?)、參數(shù)2?(?buf2)等信息。當軟件執(zhí)行到函數(shù)掛鉤??祖時,首先讀取締器ESP的值,獲取函麵纖頂??在內(nèi)存中的位置;之后從函數(shù)找讀取函數(shù)執(zhí)行完畢后的??返回地址以及用來引人符號變元的內(nèi)存空間的地址;最??后將寄存器EIP的值覆蓋為函數(shù)的返回地址以跳過該函??數(shù)的執(zhí)行。??esp??????返回地址??Argl?(buf)??Arg2?(buf2)??ebp??圖3堆棧空間示例??以代碼1為例,符號變元引入可以理解為如下過??程:辟執(zhí)行引擎執(zhí)行到代碼行14時調(diào)用符號引入模??塊,分析b64decode〇的堆棧,獲取代碼行15的EIP值??與b64decode〇中第2個參數(shù)bu£2的地址。在buf2的地??址空間內(nèi)引人新的符號變元,并跳過代碼行15的執(zhí)行,??直織行代碼行16。??符號變元引入的詳細算法如算法1所示。算法輸??人為分治點函數(shù)地址,輸出為新引人的符號變元。算??法1通過函數(shù)getSymb〇進行調(diào)用。??算法1符號變元引入
3?vl一1))??(And?(Eq?0x41?(Read?w8?0x2?v〇))??(And?(Eq?0x41?(Read?w8?0x1?vl_1))??(Eq?0x41?(Read?w8?0x0?vl_l)))))????calculated?pathConstraints'?size?=?2,?original?pathConstraints'?size?=?Z??圖6約束構(gòu)建??個分治區(qū)的約束,使約束表達式的值等于sir中的內(nèi)容??并求解,得到的值即為輸人。求解結(jié)果如圖7所示。??00000000?娜■?YWFhYQ==.??00000010??00000020??60060036??60060040??00006056??00000060??圖7求解結(jié)果??4結(jié)束語??當軟件中包含加解密、校驗和檢驗等復(fù)雜數(shù)學(xué)運??算函數(shù)時,細符^撕技術(shù)生成測試用例存在無法有??效求解約束表達式的問題。針對該問題,本文提出了基??于符號分治區(qū)的測試用例生成技術(shù)。通過實例可以看出??本:能夠函數(shù)的約棘解問題,能??夠細咖密,校錄復(fù)雜數(shù)學(xué)運算函數(shù)盼測試??用例方釀具優(yōu)勢,提高了漏洞挖掘的效率。但本妓??法需要先通過對軟件的靜態(tài)分析得到作為分治點的函數(shù)??的相關(guān)信息,對軟件靜態(tài)分析能力要求較高。下一步的??工^把函麵要施加入軟般析狐提高發(fā)現(xiàn)??與分析軟件中分治點函數(shù)信息的能力。?(責編馬珂)??參考文獻:??[1]?DONG?Qixing.?Research?on?Test?Case?Generation?Technology?Based??on?Dynamic?Symbol?Execution[D]
【參考文獻】:
期刊論文
[1]模型檢測中狀態(tài)爆炸問題研究綜述[J]. 侯剛,周寬久,勇嘉偉,任龍濤,王小龍. 計算機科學(xué). 2013(S1)
[2]基于符號化執(zhí)行的Fuzzing測試方法[J]. 陳建敏,舒輝,熊小兵. 計算機工程. 2009(21)
碩士論文
[1]基于動態(tài)符號執(zhí)行的測試用例生成技術(shù)研究[D]. 董齊興.中國科學(xué)技術(shù)大學(xué) 2014
本文編號:3527222
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/3527222.html
最近更新
教材專著