1.一種黑盒與白盒相結(jié)合的執(zhí)行反饋驅(qū)動(dòng)的并行模糊測(cè)試方法,其步驟包括:
1)對(duì)測(cè)試軟件以及測(cè)試軟件的輸入種子文件進(jìn)行并行模糊測(cè)試;
2)監(jiān)控所述并行模糊測(cè)試的執(zhí)行過(guò)程并獲取執(zhí)行反饋信息,所述執(zhí)行反饋信息包括黑盒信息和白盒信息;
3)對(duì)獲取的黑盒信息和白盒信息建立量化模型,并根據(jù)量化后的指標(biāo)建立調(diào)度模型;
4)利用所述調(diào)度模型對(duì)每次模糊測(cè)試任務(wù)進(jìn)行動(dòng)態(tài)的調(diào)度執(zhí)行,直至整體測(cè)試任務(wù)完成。
2.如權(quán)利要求1所述的方法,其特征在于:所述黑盒信息用于衡量模糊測(cè)試對(duì)漏洞的整體發(fā)現(xiàn)能力,采用定量或定性的衡量方式;所述白盒信息用于衡量模糊測(cè)試的整體覆蓋情況,即對(duì)測(cè)試軟件的測(cè)試的全面性;所述黑盒信息和所述白盒信息的指標(biāo)的選取根據(jù)測(cè)試的目的和需求進(jìn)行設(shè)定和調(diào)整。
3.如權(quán)利要求2所述的方法,其特征在于:所述黑盒信息使用發(fā)現(xiàn)漏洞的速率來(lái)描述,包括:平均單位時(shí)間發(fā)現(xiàn)漏洞的個(gè)數(shù)、平均每單位測(cè)試樣本數(shù)發(fā)現(xiàn)漏洞的數(shù)目、單位時(shí)間新增漏洞的數(shù)目;或者所述黑盒信息采用定性方式衡量,根據(jù)測(cè)試漏洞發(fā)現(xiàn)的數(shù)目設(shè)定發(fā)現(xiàn)漏洞的能力。
4.如權(quán)利要求2所述的方法,其特征在于:所述白盒信息為覆蓋率信息,包括:代碼覆蓋率、路徑覆蓋率、新增代碼覆蓋率、新增路徑覆蓋率;或者使用循環(huán)覆蓋、參數(shù)值覆蓋、函式覆蓋的方式描述白盒信息。
5.如權(quán)利要求4所述的方法,其特征在于,所述白盒信息中路徑覆蓋率的計(jì)算方法是:
a)計(jì)算當(dāng)前測(cè)試軟件的所有輸入種子文件的路徑覆蓋率:
其中#tested_path表示測(cè)試軟件的輸入種子文件的已經(jīng)測(cè)試到的路徑信息,#program_static_path表示測(cè)試軟件的靜態(tài)的所有路徑信息,coverageseed表示當(dāng)前輸入種子文件已經(jīng)測(cè)試的樣本對(duì)測(cè)試軟件的路徑覆蓋率;
b)根據(jù)測(cè)試軟件的所有輸入種子文件的路徑覆蓋率信息,計(jì)算測(cè)試軟件已測(cè)的路徑覆蓋率:
其中表示該軟件的所有輸入種子文件的路徑覆蓋的并集,#program_static_path表示測(cè)試軟件的靜態(tài)路徑集合,coverageprogram表示測(cè)試軟件已測(cè)得的路 徑覆蓋率。
6.如權(quán)利要求1至5中任一項(xiàng)所述的方法,其特征在于:對(duì)于測(cè)試過(guò)程中的黑盒信息,通過(guò)直接對(duì)測(cè)試程序的執(zhí)行結(jié)果進(jìn)行統(tǒng)計(jì)分析來(lái)獲??;對(duì)于測(cè)試過(guò)程中的白盒信息,通過(guò)在模糊測(cè)試執(zhí)行過(guò)程中使用插樁工具進(jìn)行動(dòng)態(tài)插樁,在程序執(zhí)行過(guò)程中動(dòng)態(tài)獲取模糊測(cè)試樣本執(zhí)行過(guò)程中的白盒信息。
7.如權(quán)利要求6所述的方法,其特征在于:步驟2)中執(zhí)行模糊測(cè)試并動(dòng)態(tài)獲取執(zhí)行反饋信息的方法是:
(1)模糊測(cè)試節(jié)點(diǎn)根據(jù)輸入的種子樣本文件和參數(shù)生成大量的測(cè)試樣本;
(2)模糊測(cè)試工具使用測(cè)試軟件對(duì)選取的測(cè)試樣本進(jìn)行測(cè)試執(zhí)行,同時(shí)加載對(duì)測(cè)試執(zhí)行正常與否的監(jiān)控程序以及動(dòng)態(tài)插樁工具對(duì)程序的執(zhí)行狀態(tài)及測(cè)試情況進(jìn)行監(jiān)控;
(3)該測(cè)試樣本文件執(zhí)行結(jié)束后獲取該測(cè)試的執(zhí)行狀態(tài)以及執(zhí)行白盒統(tǒng)計(jì)信息;
(4)首先將統(tǒng)計(jì)信息與程序的靜態(tài)白盒信息相比較,獲取當(dāng)前測(cè)試輸入種子樣本的覆蓋率信息,并更新整個(gè)測(cè)試軟件的覆蓋率信息,得到測(cè)試軟件以及對(duì)應(yīng)測(cè)試輸入樣本文件的覆蓋率信息;
(5)判斷程序的執(zhí)行結(jié)束狀態(tài),如果是正常結(jié)束,則選取下一個(gè)測(cè)試樣本進(jìn)行測(cè)試;否則,更新測(cè)試軟件以及對(duì)應(yīng)輸入種子文件的異常統(tǒng)計(jì)信息;
(6)判斷是否有未測(cè)試樣本,如果有則繼續(xù)選取測(cè)試樣本,執(zhí)行步驟(2);否則退出該測(cè)試流程。
8.如權(quán)利要求1所述的方法,其特征在于:步驟3)建立所述調(diào)度模型時(shí),首先將不同的反饋信息的量化指標(biāo)數(shù)據(jù)進(jìn)行歸一化處理,將所有的反饋數(shù)據(jù)映射為0到1之間的數(shù)據(jù);然后對(duì)每個(gè)反饋信息確定其對(duì)模糊測(cè)試執(zhí)行效果的影響,包括影響因素與執(zhí)行效果的關(guān)系的確立以及其對(duì)整體調(diào)度的影響因子的確定;然后建立模糊測(cè)試調(diào)度與所有反饋信息之間的關(guān)系模型。
9.如權(quán)利要求1所述的方法,其特征在于:步驟4)中每次調(diào)度是為一個(gè)測(cè)試節(jié)點(diǎn)的依次測(cè)試任務(wù)選取待測(cè)試的軟件,同時(shí)為該測(cè)試軟件選取相應(yīng)的輸入種子文件,每次調(diào)度后測(cè)試節(jié)點(diǎn)針對(duì)該軟件及對(duì)應(yīng)的輸入種子文件進(jìn)行指定數(shù)目的迭代測(cè)試,測(cè)試完成后進(jìn)入下一次的調(diào)度選取過(guò)程,直至測(cè)試任務(wù)完成。
10.一種采用權(quán)利要求1所述方法的黑盒與白盒相結(jié)合的執(zhí)行反饋驅(qū)動(dòng)的并行模糊測(cè)試系統(tǒng),其特征在于,包括測(cè)試模塊和控制模塊;所述測(cè)試模塊負(fù)責(zé)并行模糊測(cè)試的執(zhí)行,包含若干測(cè)試節(jié)點(diǎn),每個(gè)測(cè)試節(jié)點(diǎn)對(duì)測(cè)試軟件執(zhí)行模糊測(cè)試,并監(jiān)控測(cè)試結(jié)果以獲取執(zhí)行反饋信息,所述執(zhí)行反饋信息包括黑盒信息和白盒信息;控制模塊負(fù)責(zé)測(cè)試模塊的調(diào)度和分配執(zhí)行, 在測(cè)試模塊執(zhí)行結(jié)束后,利用執(zhí)行過(guò)程中的黑盒和白盒反饋信息進(jìn)行并行模糊測(cè)試的動(dòng)態(tài)調(diào)度。