不完全反饋模糊測試框架的制作方法
【專利摘要】本發(fā)明基于變異生成測試案例的情況,提出了一種不完全反饋模糊測試框架,該測試框架在CERT基本模糊測試框架的基礎(chǔ)上引入隱式狄利克雷分布LDA。本發(fā)明提出的不完全反饋模糊測試框架,解決了模糊測試時,當(dāng)目標(biāo)系統(tǒng)的詳細(xì)故障信息不能獲取,而只能通過外部觀測器獲取部分信息時,現(xiàn)行方法失效的問題。與現(xiàn)行方法相比,本發(fā)明的測試框架可最大程度上發(fā)現(xiàn)目標(biāo)系統(tǒng)應(yīng)用的特定錯誤。本測試框架既不對種子的預(yù)選做任何前提假設(shè),也不對測試案例的生產(chǎn)方式做任何限制。因此,本框架可與多種相關(guān)方法接合。另外,對測試環(huán)境和儀器也沒有任何特殊要求。
【專利說明】
不完全反饋模糊測試框架
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及軟件系統(tǒng)安全性檢測領(lǐng)域,具體涉及一種在僅能獲取目標(biāo)系統(tǒng)部分故 障信息的情況下進(jìn)行模糊測試的方法框架。此框架考慮了問題的隨機(jī)性并創(chuàng)新性地利用隱 式狄利克雷分布(LDA)通過系統(tǒng)的外部監(jiān)測將測試輸入與目標(biāo)系統(tǒng)內(nèi)部錯誤聯(lián)系起來。
【背景技術(shù)】
[0002] 發(fā)現(xiàn)目標(biāo)系統(tǒng)的所有漏洞,關(guān)鍵在于能否獲取目標(biāo)系統(tǒng)報錯信息的詳細(xì)內(nèi)容,也 即列舉攻擊面的能力非常重要。在時間充足的情況下,目前通過核心文件的信息來聯(lián)系測 試輸入和系統(tǒng)錯誤。然而,在例如工業(yè)控制系統(tǒng)等情況下,核心文件無法獲取,測試框架就 必須通過外部的一些指標(biāo)來對錯誤狀態(tài)進(jìn)行估測。因為只能獲取關(guān)于目標(biāo)系統(tǒng)內(nèi)部錯誤狀 態(tài)的不完整信息,聯(lián)系測試輸入與系統(tǒng)錯誤變得非常困難。
[0003] 模糊測試或稱為模糊檢驗是一種檢測軟件系統(tǒng)安全性的方法。模糊測試將目標(biāo)系 統(tǒng)的應(yīng)用接口暴露給未經(jīng)驗證或無任何預(yù)期結(jié)果的輸入,其目的在于誘發(fā)系統(tǒng)故障,如錯 誤斷言、例外、崩潰和內(nèi)存泄露等。模糊測試在生成測試輸入時不對目標(biāo)系統(tǒng)做任何已知假 設(shè),因此是一種"黑箱"技術(shù)。模糊測試的基本流程如圖1所示。
[0004] 生成用于測試的案例有兩種方式:一種是隨機(jī)生成,另一種是由一個種子和一定 的"變異"規(guī)則生成。種子一般根據(jù)所感興趣的領(lǐng)域進(jìn)行選擇。例如,用于測試電子郵件程 序的SMTP模糊測試器所選的種子不同于TCP/IP模糊測試器。種子選取、變異方式、以及目 標(biāo)系統(tǒng)的狀態(tài)對測試結(jié)果都會產(chǎn)生影響。
[0005] 通常情況下,可以獲得系統(tǒng)故障信息的詳細(xì)內(nèi)容,故障信息的反饋是"完整"的。 例如核心文件(內(nèi)存轉(zhuǎn)儲)允許分析員進(jìn)行回溯進(jìn)而確定導(dǎo)致系統(tǒng)故障的根本原因。在本 文作所考慮的情況下,如核心文件這樣的詳細(xì)輸出是沒有的,僅能獲取一些觀測指標(biāo),而這 些指標(biāo)只能反映出一部分系統(tǒng)的故障信息。由于信息的"不完整"性,對故障模式的分類也 會變的不完整和粗糙。現(xiàn)行方法便會失效,不能推斷出導(dǎo)致系統(tǒng)故障的相關(guān)輸入案例的特 征。
[0006]目前模糊測試的發(fā)展主要集中在如何生成測試案例,例如網(wǎng)絡(luò)協(xié)議的模糊測試主 要關(guān)心如何生成測試數(shù)據(jù)包使其能繞過防火墻。盡管存在例如Sulley這樣的框架可提供 有效的工具對例外情況進(jìn)行監(jiān)控,但仍然要解決整個模糊測試過程。因為其目的是自動發(fā) 現(xiàn)盡量多的特定錯誤信息,對輸入空間進(jìn)行有效探索的算法是解決整個問題的關(guān)鍵。
[0007] CERT-BFF (CERT基本模糊測試框架)是一個近來發(fā)明的自動模糊測試框架。它通 過統(tǒng)計模型來指導(dǎo)種子的選取。整體流程如圖2所示。
[0008] CERT-BFF的具體步驟如下:
[0009] 1.初始化種子集和種子的分布
[0010] 2.進(jìn)行如下循環(huán)直到停止:
[0011] a)從種子分布中抽樣一個種子
[0012] i.從當(dāng)前種子生成一個測試案例
[0013] ii.運行目標(biāo)應(yīng)用
[0014] iii.得到錯誤狀態(tài)
[0015] iv.更新錯誤密度
[0016] b)更新種子分布
[0017] 其中,錯誤密度指的是對于一個給定種子,找到一種特定錯誤所需測試案例所占 的比例。種子分布指的是分配給每個種子一個概率值,它可通過對所有種子的錯誤密度進(jìn) 行正則化得到。因為種子分布反映的是每個種子引發(fā)某種錯誤的概率,所以從種子分布進(jìn) 行抽樣其目的一方面在于最大化引發(fā)某種錯誤的次數(shù),另一方面在于盡量擴(kuò)大其編碼的覆 蓋范圍,例如,并沒有任何一個種子被完全排除在抽樣過程之外。用來判斷種子所引發(fā)錯 誤的信息可從核心文件中獲取。
[0018] LDA最初是對文本進(jìn)行建模的概率模型。對于給定的一組語料,其中包括D個文 檔,文檔由包含V個詞的詞典生成。利用LDA可得到(i)每個文檔關(guān)于K個隱含主題的概 率分布,(ii)對于詞典中每個詞所分配的主題。另外,LDA可用來預(yù)測詞出現(xiàn)在文檔中的概 率。此概率模型可描述為公式(1):
[0019] Φ k~Dirichlet ( β )從詞典中抽樣一個詞
[0020] Θ Dirichlet ( α )抽樣一個主題分布
[0021] 么;廠~;Ca.tcgieaH$)抽樣一個主題
[0022] ~ Cklegka!:(珍句)抽樣一個詞(1)
[0023] 其中α是一個K維的參數(shù)向量,β是一個KX V維的矩陣,Θ j,是K維的參 數(shù)向量。
[0024] 式(1)中:每個文檔服從一個K維的狄利克雷分布(Κ個主題),其參數(shù)服從另一 個參數(shù)為α的狄利克雷分布。文檔中的詞從給定的詞典中以一定概率進(jìn)行選擇。每個詞 屬于某一隱含的主題,主題又決定上了詞在詞典中的概率分布。換句話說,一個詞在某個文 檔中出現(xiàn)的可能性依賴于主題。LDA的概率圖模型如圖3所示。
[0025] LDA對每個種子進(jìn)行建模,給每個種子設(shè)定一個概率分布(亦被稱為"主題分 布"),并對測試案例進(jìn)行聚類。雖然可直接根據(jù)觀測到的故障模式對測試案例進(jìn)行分類,但 由于觀測到的信息并非真正的系統(tǒng)內(nèi)部故障模式,因而得到的聚類結(jié)果會比較粗糙甚至不 包含有用的信息。
【發(fā)明內(nèi)容】
[0026] 針對現(xiàn)有模糊測試的缺點與不足,本發(fā)明基于變異生成測試案例的情況,提出一 種不完全反饋模糊測試框架,該測試框架在CERT基本模糊測試框架的基礎(chǔ)上引入隱式狄 利克雷分布LDA,其具體步驟如下:
[0027] 1)初始化種子集和種子分布;
[0028] 2)進(jìn)行如下循環(huán)直到停止:
[0029] a)從種子分布中抽樣一個種子:
[0030] i.從當(dāng)前種子生成一個測試案例;
[0031] ii.運行目標(biāo)應(yīng)用;
[0032] iii.獲取并保存種子、測試案例和錯誤狀態(tài);
[0033] b)估計/更新LDA模型;
[0034] c)更新種子分布;
[0035] 其中,在所述LDA中:
[0036] 文檔對應(yīng)于種子;
[0037] 詞對應(yīng)于可觀測錯誤狀態(tài);
[0038] 主題對應(yīng)于錯誤狀態(tài)。
[0039] 進(jìn)一步地,在模糊測試的過程中收集種子,測試案例和觀測到的錯誤狀態(tài)的數(shù)據(jù), 通過基于變分的算法或使用基于模擬的算法完成估計LDA模型。
[0040] 進(jìn)一步地,其中,所述更新種子分布具體為:
[0041] 每個種子服從一個K維的分布,米用熵來衡量分布的覆蓋大小。概率分布q的熵 H (q)定義如下:
[0042]
[0043] 通過正則化各種子的熵得到種子的分布。
[0044] 例如,種子S1, ...,sN分別具有分布p p ...,pN,種子的分布有下式得到
[0045]
[0046] 基于此分布來抽取種子對輸入空間進(jìn)行探索。
[0047] 進(jìn)一步地,其中,步驟a中的步驟i、ii及iii由外部測試器執(zhí)行。
[0048] 進(jìn)一步地,其中,步驟a中的步驟iii包含以下步驟:
[0049] 獲取錯誤狀態(tài)后,將錯誤模式數(shù)據(jù)寫入數(shù)據(jù)庫;
[0050] 判斷是否已超過最大測試案例數(shù),如是否,返回至i繼續(xù)該循環(huán);否則斷續(xù)判斷是 否停止測試,如果是則結(jié)束測試,如果否則將種子集及測試案例存入數(shù)據(jù)庫中用于之后更 新模型。
[0051] 本發(fā)明中,LDA將系統(tǒng)內(nèi)部故障模式建模為隱類型并把它與外部觀測到的故障模 式聯(lián)系起來。由此,相比上面提到的直接聚類方法,LDA是一個更貼近問題本身的模型?;?于此模型,通過概率后驗的推斷分析,可得到每個種子的隱類型概率分布,并且可得到每個 測試案例所屬于的隱類型。
[0052] 本發(fā)明提出的不完全反饋模糊測試框架,適用于模糊測試時,當(dāng)目標(biāo)系統(tǒng)的詳細(xì) 故障信息不能獲取,而只能通過外部觀測器獲取部分信息的情況。與現(xiàn)行方法相比,本測試 框架具有一定的先進(jìn)性,可最大程度上發(fā)現(xiàn)目標(biāo)系統(tǒng)應(yīng)用的特定錯誤。本測試框架既不對 種子的預(yù)選做任何前提假設(shè),也不對測試案例的生產(chǎn)方式做任何限制。因此,本框架可與多 種相關(guān)方法接合。另外,對測試環(huán)境和儀器也沒有任何特殊要求。
【附圖說明】
[0053] 圖1為模糊測試的基本流程示意圖;
[0054] 圖2為現(xiàn)有技術(shù)中CERT-BFF的流程圖;
[0055] 圖3為LDA的概率圖模型;
[0056] 圖4為本發(fā)明的不完全反饋模糊測試框架的流程圖。
【具體實施方式】
[0057] 為了更好地理解并實施本發(fā)明,下面以具體實施例的方式對本發(fā)明進(jìn)行詳細(xì)闡 述。應(yīng)當(dāng)注意的是,下面的實施僅用于對本發(fā)明進(jìn)行說明而非作為對本發(fā)明的限制。
[0058] 首先,為了將LDA應(yīng)用于模糊測試以形成本發(fā)明的不完全反饋模糊測試,做出以 下聯(lián)系:
[0059] 文檔對應(yīng)于種子;
[0060] 詞對應(yīng)于可觀測錯誤狀態(tài);
[0061] 主題對應(yīng)于錯誤狀態(tài)。
[0062] 即為如下聯(lián)系:
[0063] ?文檔 ^_^種子
[0064] ?詞 <--^可觀測錯誤狀態(tài)
[0065] ?主題 ^-?錯誤狀態(tài)
[0066] 基于LDA的模糊測試框架與圖2所示的CERT-BFF的框架類似,只是在其外層循環(huán) 加入了 LDA,具體圖4所示:程序開始之后首先初始化種子集和種子分布;然后進(jìn)行如下循 環(huán)直到停止:
[0067] a)從種子分布中抽樣一個種子,并由測試器執(zhí)行以下操作:
[0068] i.從當(dāng)前種子生成一個測試案例
[0069] ii.運行目標(biāo)應(yīng)用
[0070] iii.獲取并保存種子、測試案例和錯誤狀態(tài),并將錯誤模式數(shù)據(jù)寫入數(shù)據(jù)庫;判 斷是否已超過最大測試案例數(shù),如是否,返回至i繼續(xù)該循環(huán);否則斷續(xù)判斷是否停止測 試,如果是則結(jié)束測試,如果否則將種子集及測試案例存入數(shù)據(jù)庫中;
[0071] b)估計/更新LDA模型;
[0072] c)更新種子分布。
[0073] 至此,完成一個不完全反饋模糊測試循環(huán),并且可以繼續(xù)執(zhí)行下一個模糊測試。
[0074] 其中種子分布更新可為:
[0075] 在CERT-BFF中,種子分布的定義如下:
[0076]
[0077] 其中Cl1是種子s i的錯誤密度。
[0078] 因為在LDA中,"主題"對應(yīng)于目標(biāo)系統(tǒng)內(nèi)部的錯誤狀態(tài),為了最大化可覆蓋錯誤的 范圍,應(yīng)當(dāng)選擇對各個內(nèi)部錯誤狀態(tài)概率分布比較均勻的種子。此處可采用熵來衡量一個 分布的覆蓋大小。一個概率分布q的熵H(q)的定義如下
[0079]
[0080] 因為熵是一個凸函數(shù)且當(dāng)取均勻分布時其值達(dá)到最大,因此種子的分布可通過正 則化各種子的熵得到。
[0081] 在上述模糊測試的過程中收集種子,測試案例和觀測到的錯誤狀態(tài)的數(shù)據(jù)。假設(shè) 共有F+1個可能的觀測狀態(tài),種子s每個狀態(tài)觀測到的計數(shù)分別為 ηι,... nF。這些計數(shù)為 LDA的輸入,可用矩陣表示:
[0082]
[0083] LDA模型的估計可利用例如David M. Blei等人及Yee W. The等人提出的基于變分 的算法,或使用例如Porteous等提出的基于模擬的算法。
[0084] 以上所述實例僅表達(dá)了本發(fā)明的實施方式,其描述較為具體和詳細(xì),但并不能因 此而理解為對本發(fā)明專利的限制。應(yīng)該指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫 離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因 此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【主權(quán)項】
1. 一種不完全反饋模糊測試框架,該測試框架在CERT基本模糊測試框架的基礎(chǔ)上引 入隱式狄利克雷分布LDA,其具體步驟如下: 1) 初始化種子集和種子分布; 2) 進(jìn)行如下循環(huán)直到停止: a) 從種子分布中抽樣一個種子:1. 從當(dāng)前種子生成一個測試案例; ii. 運行目標(biāo)應(yīng)用; iii. 獲取并保存種子、測試案例和錯誤狀態(tài); b) 估計/更新LDA模型; C)更新種子分布; 其中,在所述LDA中: 文檔對應(yīng)于種子; 詞對應(yīng)于可觀測錯誤狀態(tài); 主題對應(yīng)于錯誤狀態(tài)。2. 根據(jù)權(quán)利要求1所述的不完全反饋模糊測試框架,其中,在模糊測試的過程中收集 種子,測試案例和觀測到的錯誤狀態(tài)的數(shù)據(jù),通過基于變分的算法或使用基于模擬的算法 完成估計LDA模型。3. 根據(jù)權(quán)利要求1所述的不完全反饋模糊測試框架,其中,所述更新種子分布具體為: 每個種子服從一個K維的分布,采用賭來衡量分布的覆蓋大小。概率分布q的賭H(q) 定義如下:通過正則化各種子的賭得到種子的分布。4. 根據(jù)權(quán)利要求1所述的不完全反饋模糊測試框架,其中,步驟a中的步驟i、i i及i i i 由外部測試器執(zhí)行。5. 根據(jù)權(quán)利要求1所述的不完全反饋模糊測試框架,其中,步驟a中的步驟iii包含W 下步驟: 獲取錯誤狀態(tài)后,將錯誤模式數(shù)據(jù)寫入數(shù)據(jù)庫; 判斷是否已超過最大測試案例數(shù),如是否,返回至i繼續(xù)該循環(huán);否則斷續(xù)判斷是否停 止測試,如果是則結(jié)束測試,如果否則將種子集及測試案例存入數(shù)據(jù)庫中用于之后更新模 型。
【文檔編號】G06F11/36GK105938451SQ201510845116
【公開日】2016年9月14日
【申請日】2015年11月26日
【發(fā)明人】孫易安
【申請人】北京匡恩網(wǎng)絡(luò)科技有限責(zé)任公司