亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法

文檔序號(hào):6384246閱讀:276來源:國知局
專利名稱:基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種計(jì)算機(jī)軟件安全性測試方法,尤其是涉及一種基于程序符號(hào)執(zhí)行路徑簇劃分的并行測試方法。
背景技術(shù)
目前,符號(hào)執(zhí)行技術(shù)在軟件安全性測試領(lǐng)·域得到了日益廣泛的關(guān)注和應(yīng)用。符號(hào)執(zhí)行和Fuzzing等隨機(jī)生成測試用例的技術(shù)相比,能夠更加深入地理解目標(biāo)軟件,顯著提高軟件測試的代碼覆蓋率,進(jìn)而生成更有針對性的測試用例。但是符號(hào)執(zhí)行的最大問題是,由于軟件分支數(shù)目和循環(huán)次數(shù)巨大,存在著指數(shù)級(jí)增長的執(zhí)行路徑,導(dǎo)致符號(hào)執(zhí)行在實(shí)際應(yīng)用中具有路徑爆炸的問題,這已成為符號(hào)執(zhí)行應(yīng)用的最大瓶頸。為了有效緩解或解決符號(hào)執(zhí)行中路徑空間爆炸的問題,可以利用計(jì)算能力更強(qiáng)的硬件體系架構(gòu)實(shí)現(xiàn),比如分布式多處理器、多核、眾核、云計(jì)算等。這就需要將傳統(tǒng)的符號(hào)執(zhí)行改造成具有并行執(zhí)行能力的技術(shù)。當(dāng)前已有的并行符號(hào)執(zhí)行技術(shù),多是根據(jù)實(shí)際使用的分布式硬件平臺(tái)特點(diǎn),有效緩解了并行符號(hào)執(zhí)行的分布式測試節(jié)點(diǎn)通信、負(fù)載調(diào)度等關(guān)鍵問題。但是在測試節(jié)點(diǎn)負(fù)載分配上多是采用了簡單的路徑拆分或隨機(jī)將分支樹遷移,由于沒有深入理解程序內(nèi)部結(jié)構(gòu),缺少對程序執(zhí)行空間可并行化測試路徑關(guān)系的分析。如果將可并行測試的路徑分配到同一個(gè)測試節(jié)點(diǎn)測試,或者不適宜并行測試的路徑分配到了不同的測試節(jié)點(diǎn),就會(huì)造成無謂的通信開銷和冗余測試,降低并行處理能力。

發(fā)明內(nèi)容
本發(fā)明針對目前并行符號(hào)執(zhí)行效率不高的問題,提出一種基于路徑簇劃分的并行符號(hào)執(zhí)行方法。本發(fā)明所采用的技術(shù)方案
一種基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,包括下述步驟
O使用反匯編工具將被測可執(zhí)行程序進(jìn)行反匯編,得到被測可執(zhí)行程序的匯編代碼;
2)將所述匯編代碼轉(zhuǎn)換為統(tǒng)一的中間匯編語言形式,以屏蔽底層具體匯編語言的差

升;
3)根據(jù)中間匯編語言形式,生成被測可執(zhí)行程序的函數(shù)調(diào)用圖和控制流 4)定義危險(xiǎn)函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到危險(xiǎn)函數(shù);
5)定義輸入函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到輸入函數(shù);
6)分別建立“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)”兩兩之間的路徑,并歸約成路徑簇;
7)將步驟6)的3組路徑簇進(jìn)行點(diǎn)到點(diǎn)的連接,形成“程序進(jìn)入點(diǎn) 程序結(jié)束點(diǎn)”的完整路徑簇鏈集合,形成覆蓋輸入函數(shù)和危險(xiǎn)函數(shù)的完整程序執(zhí)行路徑;
8)以步驟7)形成的“程序進(jìn)入點(diǎn)一程序結(jié)束點(diǎn)”一個(gè)完整路徑簇鏈作為一個(gè)負(fù)載單位,分配到不同的分布式測試節(jié)點(diǎn),生成相應(yīng)的測試用例進(jìn)行實(shí)際程序安全測試。所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,在步驟4)中,定義了 4類危險(xiǎn)函數(shù),分別是字符串拷貝、內(nèi)存拷貝、格式化、格式轉(zhuǎn)換。所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,在步驟5)中,定義了 6類輸入函數(shù),分別是文件讀取、網(wǎng)絡(luò)數(shù)據(jù)讀取、管道及消息讀取、用戶輸入、環(huán)境變量讀取、連接函數(shù)。所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,在步驟3)中,通過編寫反匯編工具插件,實(shí)現(xiàn)被測可執(zhí)行程序控制流圖和函數(shù)調(diào)用圖的生成。所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,在步驟6)中,以分析被測可執(zhí)行程序控制依賴和數(shù)據(jù)依賴關(guān)系為基礎(chǔ),分別對進(jìn)行“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)”3組點(diǎn)到點(diǎn)的多條路徑進(jìn)行規(guī)約,形成點(diǎn)到點(diǎn)的路徑簇;被測可執(zhí)行程序中兩點(diǎn)之間的路徑簇規(guī)約概述為2個(gè)步驟①確定與符號(hào)執(zhí)行目標(biāo)點(diǎn)結(jié)果符號(hào)值有數(shù)據(jù)依賴關(guān)系的程序語句集合&找到與①中語句集合有控制依賴關(guān)系的語句集合。 本發(fā)明的有益積極效果1、本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,能夠切實(shí)提高并行符號(hào)執(zhí)行處理的能力和測試效率。針對當(dāng)前符號(hào)執(zhí)行存在路徑空間爆炸,對大型應(yīng)用程序的代碼測試覆蓋率較低的問題,運(yùn)用分布式測試平臺(tái)進(jìn)行并行符號(hào)執(zhí)行,顯著減少了符號(hào)執(zhí)行的時(shí)間開銷,提高了測試的覆蓋率和執(zhí)行路徑深度。路徑簇之間彼此獨(dú)立進(jìn)行程序的符號(hào)分析,同一路徑簇內(nèi)部共享控制依賴條件,據(jù)此可以將程序以路徑簇為單位進(jìn)行并行符號(hào)執(zhí)行時(shí)的負(fù)載分配,切實(shí)提高了并行符號(hào)執(zhí)行處理的能力和測試效率。2、本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,運(yùn)用程序依賴分析技術(shù)進(jìn)行路徑簇劃分,有效地改進(jìn)了目前并行符號(hào)執(zhí)行負(fù)載分配不均衡、并行效率不高的問題,在相同分布式硬件平臺(tái)下,大大提高了并行處理能力和執(zhí)行效率。本發(fā)明較好解決了單一依靠Fuzz動(dòng)態(tài)測試帶來的路徑狀態(tài)空間爆炸的問題,大大提高了路徑覆蓋的命中率和軟件測試分析的效率。


圖1為本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法流程方塊 圖2為基于程序控制依賴分析的路徑簇規(guī)約方法流程圖。
具體實(shí)施例方式實(shí)施例一參見圖1,本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,具體包括下述步驟1)使用反匯編工具將被測可執(zhí)行程序進(jìn)行反匯編,得到被測可執(zhí)行程序的匯編代碼;
2)將所述匯編代碼轉(zhuǎn)換為統(tǒng)一的中間匯編語言形式,以屏蔽底層具體匯編語言的差

升;
3)根據(jù)中間匯編語言形式,生成被測可執(zhí)行程序的函數(shù)調(diào)用圖和控制流 4)定義危險(xiǎn)函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到危險(xiǎn)函數(shù);
5)定義輸入函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到輸入函數(shù); 6)分別建立“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)”兩兩之間的路徑,并歸約成路徑簇;
7)將步驟6)的3組路徑簇進(jìn)行點(diǎn)到點(diǎn)的連接,形成“程序進(jìn)入點(diǎn)一程序結(jié)束點(diǎn)”的完整路徑簇鏈集合,形成覆蓋輸入函數(shù)和危險(xiǎn)函數(shù)的完整程序執(zhí)行路徑;
8)以步驟7)形成的“程序進(jìn)入點(diǎn)一程序結(jié)束點(diǎn)”一個(gè)完整路徑簇鏈作為一個(gè)負(fù)載單位,分配到不同的分布式測試節(jié)點(diǎn),生成相應(yīng)的測試用例進(jìn)行實(shí)際程序安全測試。實(shí)施例二 本實(shí)施例的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,與實(shí)施例一不同的是,進(jìn)一步的,在步驟4)中,定義了 4類危險(xiǎn)函數(shù),分別是字符串拷貝、內(nèi)存拷貝、格式化、格式轉(zhuǎn)換等。在步驟5)中,定義了 6類輸入函數(shù),分別是文件讀取、網(wǎng)絡(luò)數(shù)據(jù)讀取、管道及消息讀取、用戶輸入、環(huán)境變量讀取、連接函數(shù)等。實(shí)施例三參見圖2,本實(shí)施例的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,與實(shí)施例二不同的是,進(jìn)一步的,在步驟6)中,以分析程序控制依賴和數(shù)據(jù)依賴關(guān)系為基礎(chǔ),分別對進(jìn)行“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)” 3組點(diǎn)到點(diǎn)的多條路徑進(jìn)行規(guī)約,形成點(diǎn)到點(diǎn)的路徑簇。程序中兩點(diǎn)之間的路徑簇規(guī)約的可以概述為2個(gè)步驟:①確定與符號(hào)執(zhí)行目標(biāo)點(diǎn)結(jié)果符號(hào)值有數(shù)據(jù)依賴關(guān)系的程序語句集合;②找到與①中語句集合有控制依賴關(guān)系的語句集合。本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,在步驟3)中,通過編寫反匯編器插件,實(shí)現(xiàn)被測程序控制流圖和函數(shù)調(diào)用圖(CG)的生成。實(shí)施例四本實(shí)施例結(jié)合附圖,進(jìn)一步說明本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法的具體實(shí)現(xiàn)方式。參見圖1、圖2。本發(fā)明基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,實(shí)現(xiàn)的流程包括
步驟一將被測可執(zhí)行程序進(jìn)行反匯編,并將匯編代碼轉(zhuǎn)換為統(tǒng)一的中間匯編語言形式,從而構(gòu)建二進(jìn)制文件的控制流圖和調(diào)用 步驟二 根據(jù)危險(xiǎn)函數(shù)(敏感點(diǎn))和輸入函數(shù)特征,搜尋敏感點(diǎn)及輸入點(diǎn)所處函數(shù)位
置;
步驟三進(jìn)行路徑簇的規(guī)約與鏈接,形成路徑簇鏈,以路徑簇鏈為單位進(jìn)行分布式并行符號(hào)執(zhí)行測試。下面詳細(xì)說明步驟一、步驟二、步驟三所包含的相關(guān)內(nèi)容
步驟一將可執(zhí)行文件輸入反匯編器中,反匯編器識(shí)別二進(jìn)制文件編譯的機(jī)器語言,將其反匯編成對應(yīng)的X86。中間匯編翻譯模塊將反匯編代碼轉(zhuǎn)換成統(tǒng)一形式的中間匯編語言。中間匯編語言設(shè)計(jì)的主要原則如下(I)精簡指令集的設(shè)計(jì)思想;(2)足夠多的寄存器數(shù)量以適應(yīng)各種硬件體系結(jié)構(gòu);(3)盡量簡單的尋址方式,去除不利于閱讀的復(fù)雜尋址方式;(4) 3-操作數(shù)指令格式。步驟二 在二進(jìn)制目標(biāo)代碼分析過程中,由外部輸入引發(fā)的異常是分析和檢測的重點(diǎn),因?yàn)檫@種系統(tǒng)或者程序的異常都是不可信數(shù)據(jù)檢查不完備,很有可能被惡意利用。非法用戶通常利用程序處理外部輸入過程中存在的漏洞,構(gòu)造畸形輸入對程序的關(guān)鍵內(nèi)存區(qū)域,如棧、跳轉(zhuǎn)目的地址、函數(shù)返回地址等進(jìn)行改寫,依此劫持程序的執(zhí)行路徑,在獲得程序控制權(quán)后使得非法輸入中的惡意代碼如shellcode得到執(zhí)行。鑒于上述原因,軟件安全測試將關(guān)注的輸入函數(shù)和危險(xiǎn)函數(shù)作為分析的重點(diǎn)。因此,本發(fā)明將同時(shí)覆蓋輸入函數(shù)和危險(xiǎn)函數(shù)的關(guān)鍵路徑作為測試對象,并以此進(jìn)行并行符號(hào)執(zhí)行時(shí)的負(fù)載分配。1.危險(xiǎn)函數(shù)的定義
危險(xiǎn)就是系統(tǒng)的脆弱點(diǎn),這里定義了 4類敏感點(diǎn),分別是分別是字符串拷貝、內(nèi)存拷貝、格式化、格式轉(zhuǎn)換等。反匯編器提供了方便的接口,用于獲取下表等庫函數(shù)的調(diào)用位置。
權(quán)利要求
1.一種基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是包括下述步驟1)使用反匯編工具將被測可執(zhí)行程序進(jìn)行反匯編,得到被測可執(zhí)行程序的匯編代碼;2)將所述匯編代碼轉(zhuǎn)換為統(tǒng)一的中間匯編語言形式,以屏蔽底層具體匯編語言的差異3)根據(jù)中間匯編語言形式,生成被測可執(zhí)行程序的函數(shù)調(diào)用圖和控制流圖;4)定義危險(xiǎn)函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到危險(xiǎn)函數(shù);5)定義輸入函數(shù)特征,通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到輸入函數(shù);6)分別建立“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)”兩兩之間的路徑,并歸約成路徑簇;7)將步驟6)的3組路徑簇進(jìn)行點(diǎn)到點(diǎn)的連接,形成“程序進(jìn)入點(diǎn)一程序結(jié)束點(diǎn)”的完整路徑簇鏈集合,形成覆蓋輸入函數(shù)和危險(xiǎn)函數(shù)的完整程序執(zhí)行路徑;8)以步驟7)形成的“程序進(jìn)入點(diǎn)一程序結(jié)束點(diǎn)”一個(gè)完整路徑簇鏈作為一個(gè)負(fù)載單位,分配到不同的分布式測試節(jié)點(diǎn),生成相應(yīng)的測試用例進(jìn)行實(shí)際程序安全測試。
2.根據(jù)權(quán)利要求1所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是,在步驟4)中,定義了 4類危險(xiǎn)函數(shù),分別是字符串拷貝、內(nèi)存拷貝、格式化、格式轉(zhuǎn)換。
3.根據(jù)權(quán)利要求2所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是,在步驟5)中,定義了 6類輸入函數(shù),分別是文件讀取、網(wǎng)絡(luò)數(shù)據(jù)讀取、管道及消息讀取、用戶輸入、環(huán)境變量讀取、連接函數(shù)。
4.根據(jù)權(quán)利要求1所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是,在步驟5)中,定義了 6類輸入函數(shù),分別是文件讀取、網(wǎng)絡(luò)數(shù)據(jù)讀取、管道及消息讀取、用戶輸入、環(huán)境變量讀取、連接函數(shù)。
5.根據(jù)權(quán)利要求1 4任一項(xiàng)所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是,在步驟3)中,通過編寫反匯編工具插件,實(shí)現(xiàn)被測可執(zhí)行程序控制流圖和函數(shù)調(diào)用圖的生成。
6.根據(jù)權(quán)利要求5所述的基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,其特征是,在步驟6)中,以分析被測可執(zhí)行程序控制依賴和數(shù)據(jù)依賴關(guān)系為基礎(chǔ),分別對進(jìn)行“程序進(jìn)入點(diǎn)一調(diào)用輸入函數(shù)”,“調(diào)用輸入函數(shù)一調(diào)用危險(xiǎn)函數(shù)”,“調(diào)用危險(xiǎn)函數(shù)一程序結(jié)束點(diǎn)” 3組點(diǎn)到點(diǎn)的多條路徑進(jìn)行規(guī)約,形成點(diǎn)到點(diǎn)的路徑簇;被測可執(zhí)行程序中兩點(diǎn)之間的路徑簇規(guī)約概述為2個(gè)步驟①確定與符號(hào)執(zhí)行目標(biāo)點(diǎn)結(jié)果符號(hào)值有數(shù)據(jù)依賴關(guān)系的程序語句集合, 找到與Φ中浯句集合有控制依賴關(guān)系的語句集合。
全文摘要
本發(fā)明涉及一種基于程序符號(hào)執(zhí)行路徑簇劃分的計(jì)算機(jī)軟件安全性測試方法。一種基于路徑簇規(guī)約的并行符號(hào)執(zhí)行方法,將被測可執(zhí)行程序進(jìn)行反匯編;得到被測可執(zhí)行程序的匯編代碼,并轉(zhuǎn)換為統(tǒng)一的中間匯編語言形式;然后根據(jù)中間匯編語言形式生成被測可執(zhí)行程序的函數(shù)調(diào)用圖和控制流圖;通過對函數(shù)調(diào)用圖的靜態(tài)分析,找到危險(xiǎn)函數(shù)和輸入函數(shù);分別建立“程序進(jìn)入點(diǎn)、調(diào)用輸入函數(shù)、調(diào)用危險(xiǎn)函數(shù)、程序結(jié)束點(diǎn)”兩兩之間的路徑,并歸約成路徑簇;將得到的路徑簇進(jìn)行點(diǎn)到點(diǎn)的連接形成“程序進(jìn)入點(diǎn)→程序結(jié)束點(diǎn)”的完整路徑簇鏈集合;以前述步驟形成的“程序進(jìn)入點(diǎn)→程序結(jié)束點(diǎn)”一個(gè)完整路徑簇鏈作為一個(gè)負(fù)載單位,生成相應(yīng)的測試用例進(jìn)行實(shí)際程序安全測試。
文檔編號(hào)G06F11/36GK103049377SQ201210542210
公開日2013年4月17日 申請日期2012年12月14日 優(yōu)先權(quán)日2012年12月14日
發(fā)明者吳世忠, 郭濤, 張普含, 王嘉捷 申請人:中國信息安全測評中心
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1