《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于Q-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法研究
基于Q-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法研究
2020年電子技術(shù)應(yīng)用第4期
荊 琛1,2,傅曉彤1,董 偉2,趙云飛2
1.西安電子科技大學(xué) 網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安710071;2.華北計(jì)算機(jī)系統(tǒng)工程研究所,北京102209
摘要: 現(xiàn)有的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試技術(shù)在測(cè)試時(shí),輔助類型報(bào)文重復(fù)交互,測(cè)試效率低,且為確保測(cè)試用例有效性,僅向協(xié)議實(shí)體輸入報(bào)文類型與被測(cè)狀態(tài)相對(duì)應(yīng)的測(cè)試用例,導(dǎo)致無法發(fā)現(xiàn)由報(bào)文異常輸入順序所引出的協(xié)議缺陷。針對(duì)這些問題,基于Q-學(xué)習(xí)算法設(shè)計(jì)出一種有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法,不需要引導(dǎo)狀態(tài)的輔助報(bào)文,且能在確保一定的測(cè)試用例有效性前提下,進(jìn)行報(bào)文異常輸入順序測(cè)試。實(shí)驗(yàn)結(jié)果表明,所提出的模糊測(cè)試方法可以顯著提高測(cè)試效率和漏洞挖掘能力。
中圖分類號(hào): TN915.08
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.191091
中文引用格式: 荊琛,傅曉彤,董偉,等. 基于Q-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法研究[J].電子技術(shù)應(yīng)用,2020,46(4):49-52,56.
英文引用格式: Jing Chen,F(xiàn)u Xiaotong,Dong Wei,et al. Research on fuzzing method of stateful network protocol based on Q-learning algorithm[J]. Application of Electronic Technique,2020,46(4):49-52,56.
Research on fuzzing method of stateful network protocol based on Q-learning algorithm
Jing Chen1,2,F(xiàn)u Xiaotong1,Dong Wei2,Zhao Yunfei2
1.School of Cyber Engineering,Xidian University,Xi′an 710071,China; 2.National Computer System Engineering Research Institute of China,Beijing 102209,China
Abstract: For the current stateful network protocol fuzzing technology, the auxiliary type message repeated interaction affects the test efficiency and ensures the validity of the test case by inputting the corresponding test case according to the state of the protocol entity, so that the message abnormality input sequence test cannot be performed. In this paper, a stateful network protocol fuzzing method is designed based on Q-learning algorithm. The auxiliary message of the boot state is not required, and the message abnormality input sequence test can be performed under the premise of ensuring the validity of the test case. Experimental results show that this fuzzing method can significantly improve test efficiency and vulnerability mining capabilities.
Key words : fuzzing;vulnerability mining;Q-learning algorithm;reinforcement learning

0 引言

    協(xié)議漏洞挖掘是保證網(wǎng)絡(luò)通信安全的重要手段,傳統(tǒng)漏洞挖掘技術(shù)主要包括逆向分析[1-2]模糊測(cè)試[3]。其中,模糊測(cè)試具有準(zhǔn)確率高、不要求源代碼、適用性高等優(yōu)點(diǎn),是目前最常用的協(xié)議漏洞挖掘方法。有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試技術(shù)的主要發(fā)展歷程如下。

    最初,使用傳統(tǒng)的模糊測(cè)試方法對(duì)包括有狀態(tài)網(wǎng)絡(luò)協(xié)議在內(nèi)的所有網(wǎng)絡(luò)協(xié)議進(jìn)行測(cè)試,通過變異或生成的方法產(chǎn)生大量測(cè)試用例,將其作為協(xié)議實(shí)體程序的輸入,期望這些不尋常的輸入能引發(fā)協(xié)議實(shí)體異常,從中找到協(xié)議的安全漏洞[4-5]。這種測(cè)試方法對(duì)于有狀態(tài)網(wǎng)絡(luò)協(xié)議來說,當(dāng)測(cè)試用例與協(xié)議實(shí)體狀態(tài)不匹配時(shí),測(cè)試用例可能會(huì)被協(xié)議實(shí)體直接丟棄,測(cè)試用例有效性低[6]。

    于是,研究人員提出了根據(jù)協(xié)議狀態(tài)機(jī)構(gòu)造測(cè)試序列的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法[7-9],主要包括3個(gè)步驟:(1)通過正常的報(bào)文交互,將協(xié)議實(shí)體引導(dǎo)至某個(gè)待測(cè)狀態(tài),這些正常交互報(bào)文所構(gòu)成的序列稱為前置引導(dǎo)序列;(2)向協(xié)議實(shí)體輸入報(bào)文類型與被測(cè)狀態(tài)相對(duì)應(yīng)的測(cè)試用例,檢測(cè)是否存在異常,如果檢測(cè)到協(xié)議實(shí)體在處理測(cè)試用例后出現(xiàn)系統(tǒng)崩潰或者停止響應(yīng)等異常情況,則保存錯(cuò)誤現(xiàn)場(chǎng)以待進(jìn)一步分析;(3)若未檢測(cè)到異常,還需按照特定順序輸入正常報(bào)文將協(xié)議實(shí)體引導(dǎo)至終止?fàn)顟B(tài),準(zhǔn)備下一輪測(cè)試,這些正常報(bào)文所構(gòu)成的序列被稱為回歸序列。這種測(cè)試方法提高了測(cè)試用例有效性,但前置引導(dǎo)序列和回歸序列這些輔助報(bào)文在測(cè)試過程中的重復(fù)交互降低了測(cè)試效率,且因是根據(jù)協(xié)議實(shí)體所處的協(xié)議狀態(tài)輸入報(bào)文類型相對(duì)應(yīng)的測(cè)試用例,導(dǎo)致無法發(fā)現(xiàn)由報(bào)文異常輸入順序所引出的協(xié)議缺陷。

    因此,本文針對(duì)有狀態(tài)網(wǎng)絡(luò)協(xié)議提出了一種基于Q-學(xué)習(xí)算法的模糊測(cè)試方法,不需要引導(dǎo)狀態(tài)的輔助類型報(bào)文,且能在確保一定的測(cè)試用例有效性前提下,引入報(bào)文異常輸入順序測(cè)試。

1 關(guān)于有狀態(tài)網(wǎng)絡(luò)協(xié)議的模糊測(cè)試

1.1 有狀態(tài)網(wǎng)絡(luò)協(xié)議

    根據(jù)輸入報(bào)文相互之間是否存在關(guān)聯(lián),網(wǎng)絡(luò)通信協(xié)議可分為無狀態(tài)協(xié)議和有狀態(tài)協(xié)議兩類[10]。無狀態(tài)協(xié)議是指報(bào)文發(fā)送方輸出的各個(gè)報(bào)文之間沒有關(guān)聯(lián)性,而對(duì)于有狀態(tài)協(xié)議,協(xié)議實(shí)體會(huì)記錄所接收到的報(bào)文信息,在處理報(bào)文后可能會(huì)出現(xiàn)協(xié)議狀態(tài)的變化。有狀態(tài)網(wǎng)絡(luò)通信協(xié)議通常采用確定有限狀態(tài)機(jī)(Deterministic Finite Automation,DFA)[11]作為協(xié)議交互的形式化描述模型。

    將DFA定義為一個(gè)六元組M=(S,I,O,δ,β,T),其中:S={s0,s1,…,sn}是有限狀態(tài)集合,其中s0表示為M的初始狀態(tài),且在任意時(shí)刻,M只能處于某一狀態(tài)si,有限狀態(tài)機(jī)由s0狀態(tài)開始接收輸入;I={i1,i2,…,im}是有限輸入符號(hào)集合;O={o1,o2,…,om}是有限輸出符號(hào)集合;δ:S×I→S是狀態(tài)遷移函數(shù);β:S×I→O是狀態(tài)輸出函數(shù);T是終結(jié)狀態(tài)集合。當(dāng)DFA應(yīng)用于網(wǎng)絡(luò)協(xié)議描述時(shí),I表示協(xié)議實(shí)體可接受并正常處理的輸入報(bào)文類型集合,O表示協(xié)議實(shí)體輸出的報(bào)文類型集合,以M表示協(xié)議狀態(tài)機(jī)。

    以FTP協(xié)議[12]狀態(tài)機(jī)為例,其輸入輸出報(bào)文類型的抽象符號(hào)如表1所示,M包括8個(gè)狀態(tài),狀態(tài)集合S={s0,s1,s2,s3,s4,s5,s6,s7}。狀態(tài)機(jī)M如圖1所示,其中s0到s1的遷移表示為i1/o1,它表示協(xié)議實(shí)體處于s0狀態(tài)時(shí),如果接收USER類型報(bào)文(用i1表示),將輸出331類型報(bào)文(用o1表示),同時(shí)協(xié)議實(shí)體狀態(tài)遷移至s1狀態(tài)。

ck1-b1.gif

ck1-t1.gif

1.2 關(guān)于有狀態(tài)網(wǎng)絡(luò)協(xié)議的模糊測(cè)試

    在實(shí)施模糊測(cè)試時(shí),協(xié)議實(shí)體對(duì)每個(gè)測(cè)試用例會(huì)給出相應(yīng)的反饋信息[13],例如當(dāng)測(cè)試用例不能被正確地接收處理時(shí),協(xié)議實(shí)體會(huì)通過響應(yīng)報(bào)文的形式告知。當(dāng)協(xié)議實(shí)體處于狀態(tài)si,輸入報(bào)文im,根據(jù)協(xié)議狀態(tài)機(jī)將協(xié)議在狀態(tài)si處理報(bào)文im后輸出的響應(yīng)報(bào)文on稱為由狀態(tài)si與輸入im確定的期望響應(yīng)報(bào)文,如果得到的輸出不是響應(yīng)報(bào)文on,則稱之為由狀態(tài)si與輸入im確定的非期望響應(yīng)報(bào)文;若根據(jù)協(xié)議狀態(tài)機(jī),狀態(tài)si與報(bào)文im并無對(duì)應(yīng)關(guān)系,則將得到的任何響應(yīng)報(bào)文都稱為由狀態(tài)si與輸入im確定的非期望響應(yīng)報(bào)文。另外,在測(cè)試時(shí),若在設(shè)定時(shí)間閾值內(nèi)未返回任何報(bào)文,也視為得到的是非期望響應(yīng)報(bào)文。關(guān)于有狀態(tài)網(wǎng)絡(luò)協(xié)議的模糊測(cè)試,測(cè)試用例可以分為以下4類:

    (1)第一類測(cè)試用例導(dǎo)致協(xié)議實(shí)體崩潰;

    (2)第二類測(cè)試用例能夠被程序正確接收處理,可以引發(fā)協(xié)議實(shí)體狀態(tài)跳轉(zhuǎn)并輸出期望響應(yīng)報(bào)文;

    (3)第三類是導(dǎo)致協(xié)議實(shí)體輸出非期望響應(yīng)報(bào)文的被協(xié)議實(shí)體直接丟棄的測(cè)試用例,沒有進(jìn)行程序執(zhí)行過程,不會(huì)引發(fā)協(xié)議實(shí)體程序異常和狀態(tài)的轉(zhuǎn)換;

    (4)第四類是導(dǎo)致協(xié)議實(shí)體輸出非期望響應(yīng)報(bào)文的引出協(xié)議實(shí)體缺陷的測(cè)試用例。

    對(duì)網(wǎng)絡(luò)協(xié)議的模糊測(cè)試過程主要是為了發(fā)現(xiàn)能夠觸發(fā)協(xié)議實(shí)體異常的測(cè)試用例,對(duì)于確定的測(cè)試用例集,如何能讓這些測(cè)試用例在模糊測(cè)試過程中達(dá)到最佳效果?考慮降低第三類測(cè)試用例的出現(xiàn)率,提高第一、四類測(cè)試用例的出現(xiàn)率。關(guān)于一個(gè)測(cè)試用例,它是觸發(fā)協(xié)議實(shí)體異常的第一、四類測(cè)試用例,還是被程序正確處理的第二類測(cè)試用例,或是被丟棄的第三類測(cè)試用例?這與輸入該測(cè)試用例時(shí)協(xié)議實(shí)體所處的狀態(tài)密切相關(guān)。因此,考慮在測(cè)試時(shí)根據(jù)協(xié)議實(shí)體狀態(tài)選取測(cè)試用例。對(duì)協(xié)議實(shí)體的狀態(tài)推斷主要依據(jù)于協(xié)議實(shí)體的響應(yīng)報(bào)文。對(duì)于在si狀態(tài)下輸入由im變異生成的測(cè)試用例,如果協(xié)議實(shí)體的響應(yīng)報(bào)文是協(xié)議狀態(tài)si和輸入im所對(duì)應(yīng)的期望響應(yīng)報(bào)文,那么表明測(cè)試用例為第二類測(cè)試用例,被協(xié)議實(shí)體正常接收處理,協(xié)議實(shí)體狀態(tài)已經(jīng)處于sj狀態(tài),可以根據(jù)狀態(tài)sj選取測(cè)試用例進(jìn)行下一步測(cè)試。如果協(xié)議實(shí)體的響應(yīng)報(bào)文屬于協(xié)議狀態(tài)si和輸入im所對(duì)應(yīng)的非期望響應(yīng)報(bào)文,那么協(xié)議實(shí)體可能仍處于si狀態(tài),也可能由于測(cè)試用例的作用,跳轉(zhuǎn)到狀態(tài)si之外的狀態(tài)。在這種情況下,需要輸入與狀態(tài)si相對(duì)應(yīng)的正常輸入報(bào)文in,觀察協(xié)議實(shí)體的響應(yīng),如果響應(yīng)報(bào)文是狀態(tài)si和輸入in所對(duì)應(yīng)的期望響應(yīng)報(bào)文,那么表明測(cè)試用例為第三類測(cè)試用例且此時(shí)協(xié)議實(shí)體已經(jīng)被引導(dǎo)至sq狀態(tài),繼續(xù)輸入根據(jù)狀態(tài)sq選取的測(cè)試用例進(jìn)行測(cè)試;如果響應(yīng)報(bào)文是狀態(tài)si和輸入in所對(duì)應(yīng)的非期望響應(yīng)報(bào)文,那么在輸入報(bào)文in之前,協(xié)議實(shí)體可能出現(xiàn)異常,表明測(cè)試用例為第四類測(cè)試用例,需要保存輸入數(shù)據(jù)以待進(jìn)一步分析。

2 基于Q-學(xué)習(xí)算法的模糊測(cè)試方法

2.1 強(qiáng)化學(xué)習(xí)

    強(qiáng)化學(xué)習(xí)是一種從環(huán)境狀態(tài)映射到動(dòng)作的學(xué)習(xí),目標(biāo)是使智能體在與環(huán)境的互動(dòng)過程中獲得最大累積獎(jiǎng)賞[14]。強(qiáng)化學(xué)習(xí)把學(xué)習(xí)看作試探評(píng)價(jià)過程,如圖2所示,智能體根據(jù)環(huán)境狀態(tài)st選擇一個(gè)動(dòng)作at作用于環(huán)境,環(huán)境在動(dòng)作at的作用下轉(zhuǎn)移到狀態(tài)st+1,同時(shí)產(chǎn)生一個(gè)獎(jiǎng)賞rt反饋給智能體,智能體再根據(jù)獎(jiǎng)賞rt與狀態(tài)st+1選擇下一個(gè)動(dòng)作,選擇原則是使獎(jiǎng)賞最大化。

ck1-t2.gif

    強(qiáng)化學(xué)習(xí)的目的是尋找一個(gè)策略π:S→A,使得每個(gè)狀態(tài)s的值函數(shù)Vπ(s)或狀態(tài)-動(dòng)作值函數(shù)Qπ(s,a)達(dá)到最大?!爸岛瘮?shù)”與“狀態(tài)-動(dòng)作值函數(shù)”分別表示指定“狀態(tài)”上以及指定“狀態(tài)-動(dòng)作”上的累積獎(jiǎng)賞[15]

ck1-gs1-4.gif

    Q-學(xué)習(xí)算法[16]是一種異策略時(shí)序差分強(qiáng)化學(xué)習(xí)算法,Q-學(xué)習(xí)算法中狀態(tài)-動(dòng)作值函數(shù)采用實(shí)際Q值增量式更新,對(duì)于狀態(tài)-動(dòng)作對(duì)(s,a)的值函數(shù)Q(s,a),根據(jù)每次采樣得到的立即獎(jiǎng)賞r進(jìn)行一次更新:

ck1-gs5.gif

2.2 基于Q-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法

    在1.2小節(jié),已經(jīng)提出根據(jù)協(xié)議實(shí)體狀態(tài)選取測(cè)試用例的思想。由于主要是想通過輸入報(bào)文類型與被測(cè)狀態(tài)不對(duì)應(yīng)的測(cè)試用例引入報(bào)文異常輸入順序測(cè)試,提高漏洞挖掘能力,因此,考慮根據(jù)協(xié)議實(shí)體狀態(tài)選擇報(bào)文類型,然后根據(jù)報(bào)文類型選取測(cè)試用例進(jìn)行測(cè)試。那么,應(yīng)該以何種策略來根據(jù)協(xié)議實(shí)體狀態(tài)選擇報(bào)文類型,以使得在引入報(bào)文異常輸入順序測(cè)試后仍能確保一定的測(cè)試用例有效性呢?這一問題可以通過制定恰當(dāng)?shù)莫?jiǎng)賞規(guī)則轉(zhuǎn)化為強(qiáng)化學(xué)習(xí)中尋找策略π的問題來加以解決,下面就通過Q-學(xué)習(xí)算法來解決該問題。

    (1)狀態(tài)集合

    S={s0,s1,…,sn},即協(xié)議的狀態(tài)集合。

    (2)動(dòng)作集合

    A={a1,a2,…,am}={i1,i2,…,im},即協(xié)議的輸入報(bào)文類型集合。

    (3)動(dòng)作探索策略

    Q-學(xué)習(xí)通過探索-利用過程發(fā)現(xiàn)最優(yōu)獎(jiǎng)賞,“利用”過程選擇最大Q值所對(duì)應(yīng)的輸入報(bào)文類型,“探索”過程則是隨機(jī)選擇輸入報(bào)文類型以防止發(fā)現(xiàn)不了最優(yōu)獎(jiǎng)賞。本文采用“ck1-2.2-x1.gif-貪婪探索策略”,在協(xié)議狀態(tài)s下以小概率ck1-2.2-x1.gif隨機(jī)選擇輸入報(bào)文類型,以概率1-ck1-2.2-x1.gif選擇具有最大Q值的輸入報(bào)文類型。

    (4)立即獎(jiǎng)賞

    在協(xié)議狀態(tài)s下選擇報(bào)文類型為a的測(cè)試用例進(jìn)行測(cè)試后,根據(jù)測(cè)試用例的類別確定狀態(tài)-動(dòng)作對(duì)(s,a)的立即獎(jiǎng)賞r。

     ck1-gs6.gif

    根據(jù)協(xié)議實(shí)體狀態(tài)s,依據(jù)“ck1-2.2-x1.gif-貪婪探索策略”選擇報(bào)文類型為a的測(cè)試用例對(duì)協(xié)議實(shí)體進(jìn)行測(cè)試。輸入測(cè)試用例后,通過觀察協(xié)議實(shí)體是否崩潰判斷測(cè)試用例是否為第一類測(cè)試用例;通過響應(yīng)報(bào)文分析協(xié)議實(shí)體狀態(tài)并區(qū)分第二、三、四類測(cè)試用例。根據(jù)測(cè)試用例的類別確定狀態(tài)-動(dòng)作對(duì)(s,a)的立即獎(jiǎng)賞r,通過獎(jiǎng)賞r更新Q值與策略π,降低第三類測(cè)試用例的出現(xiàn)率,提高第一、四類測(cè)試用例的出現(xiàn)率?;赒-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法描述如下:

    (1)建立狀態(tài)空間S和動(dòng)作空間A;

    (2)初始化Q值表和策略π;

    (3)初始化協(xié)議實(shí)體狀態(tài)至s0;

    (4)依據(jù)“ck1-2.2-x1.gif-貪婪探索策略”,根據(jù)協(xié)議實(shí)體當(dāng)前狀態(tài)s選擇報(bào)文類型為a的測(cè)試用例輸入?yún)f(xié)議實(shí)體;

    (5)在協(xié)議實(shí)體處理測(cè)試用例后,觀察協(xié)議實(shí)體反饋信息,分析協(xié)議實(shí)體當(dāng)前狀態(tài),判斷測(cè)試用例類別,確定狀態(tài)-動(dòng)作對(duì)(s,a)的立即獎(jiǎng)賞r;

    (6)更新Q值表;

    (7)更新策略π;

    (8)若測(cè)試用例為第一、四類測(cè)試用例,記錄異常后跳轉(zhuǎn)至步驟(3);若協(xié)議實(shí)體當(dāng)前狀態(tài)為協(xié)議終結(jié)狀態(tài),跳轉(zhuǎn)至步驟(3);否則跳轉(zhuǎn)至步驟(4)。

3 實(shí)驗(yàn)與分析

3.1 實(shí)驗(yàn)建立

    Sulley[17]是目前較為成熟的模糊測(cè)試框架,有對(duì)有狀態(tài)網(wǎng)絡(luò)協(xié)議進(jìn)行模糊測(cè)試的完整測(cè)試方案。本文方法Q-Fuzzing 將與Sulley按照以下描述場(chǎng)景進(jìn)行仿真實(shí)驗(yàn)對(duì)比:以FTP協(xié)議實(shí)體作為測(cè)試對(duì)象,兩種方法均采用由Sulley變異策略生成的測(cè)試用例,測(cè)試用例的漏洞挖掘效力相當(dāng)。

3.2 實(shí)驗(yàn)結(jié)果分析

3.2.1 測(cè)試效率評(píng)估

    測(cè)試效率是指單位時(shí)間輸入的測(cè)試用例數(shù)量,用向被測(cè)協(xié)議實(shí)體輸入的測(cè)試用例個(gè)數(shù)與發(fā)送報(bào)文的總數(shù)的比值ck1-3.2.1-x1.gif值來衡量測(cè)試效率,ck1-3.2.1-x1.gif值的數(shù)學(xué)表達(dá)式為:ck1-3.2.1-x1.gif=∑A/∑m,其中,∑A表示輸入的測(cè)試用例總數(shù),∑m表示發(fā)送報(bào)文的總數(shù)?!艫一定時(shí),ck1-3.2.1-x1.gif值越大,說明發(fā)送輔助類型的報(bào)文越少,單位時(shí)間輸入的測(cè)試用例數(shù)量越高,測(cè)試效率越高。在測(cè)試過程中,Q-Fuzzing與Sulley的ck1-3.2.1-x1.gif值與輸入的測(cè)試用例總數(shù)∑A的關(guān)系如圖3所示。

ck1-t3.gif

    Sulley采用完善的引導(dǎo)機(jī)制,隨著測(cè)試路徑的深入,前置引導(dǎo)序列等輔助報(bào)文的比重越來越大,ck1-3.2.1-x1.gif值越來越低。Q-Fuzzing雖在分析協(xié)議實(shí)體狀態(tài)時(shí)存在一定的輔助報(bào)文交互,但是該方法不需要引導(dǎo)狀態(tài)的輔助報(bào)文,輔助報(bào)文的比重較低,ck1-3.2.1-x1.gif值相對(duì)較高。

3.2.2 測(cè)試用例有效性評(píng)估

    假設(shè)輸入的某個(gè)測(cè)試用例沒有被協(xié)議實(shí)體直接拋棄,而是進(jìn)行程序執(zhí)行過程,那么稱該測(cè)試用例為有效完成測(cè)試的測(cè)試用例(簡(jiǎn)稱為有效測(cè)試用例)。測(cè)試用例有效性是指一個(gè)測(cè)試用例為有效測(cè)試用例的概率,以有效測(cè)試用例個(gè)數(shù)與輸入的測(cè)試用例總數(shù)的比值φ表示測(cè)試用例有效性,φ的數(shù)學(xué)表達(dá)式為:φ=∑Ac/∑A,其中,∑Ac表示有效測(cè)試用例總數(shù),∑A表示輸入的測(cè)試用例總數(shù)。在測(cè)試過程中,Q-Fuzzing與Sulley的測(cè)試用例有效性φ與輸入的測(cè)試用例總數(shù)∑A的關(guān)系如圖4所示。

ck1-t4.gif

    Sulley采用完善的引導(dǎo)機(jī)制,使得測(cè)試用例可以在協(xié)議實(shí)體處于對(duì)應(yīng)狀態(tài)時(shí)進(jìn)行輸入,測(cè)試用例有效性較高。Q-Fuzzing在測(cè)試初期,輸入報(bào)文時(shí)盲目性較大,存在很多被拋棄的測(cè)試用例,測(cè)試用例有效性低,但隨著在測(cè)試過程中實(shí)踐學(xué)習(xí),測(cè)試用例有效性逐步提高,最終趨于穩(wěn)定。

3.2.3 漏洞挖掘能力

    漏洞挖掘能力是指在模糊測(cè)試正常執(zhí)行條件下挖掘漏洞的數(shù)目。兩種方法挖掘漏洞數(shù)目如表2所示。

ck1-b2.gif

    在漏洞挖掘能力方面,Q-Fuzzing效果好于Sulley。對(duì)于FTP 協(xié)議實(shí)體中存在的3個(gè)漏洞:(1)當(dāng)協(xié)議實(shí)體狀態(tài)轉(zhuǎn)換序列為s0->s1->s2->s3->s4時(shí),輸入變異的i5報(bào)文后,協(xié)議實(shí)體崩潰;(2)當(dāng)協(xié)議實(shí)體狀態(tài)轉(zhuǎn)換序列為s5->s4->s5時(shí),輸入與s5狀態(tài)并不對(duì)應(yīng)的i12的變異報(bào)文后,協(xié)議實(shí)體崩潰;(3)當(dāng)協(xié)議實(shí)體狀態(tài)轉(zhuǎn)換序列為s0->s1->s2->s3->s4->s5時(shí),輸入變異的i7報(bào)文,協(xié)議實(shí)體出現(xiàn)狀態(tài)異常遷移,協(xié)議實(shí)體既不處于s5狀態(tài)也不處于s6狀態(tài)。Q-Fuzzing挖掘出漏洞1、2、3,Sulley僅挖掘出漏洞1,未能挖掘出漏洞2、3。

    根據(jù)測(cè)試效率與挖掘漏洞能力比較,相比于Sulley測(cè)試方法,本文測(cè)試方法Q-Fuzzing具有明顯的優(yōu)勢(shì),達(dá)到了預(yù)期的測(cè)試效果。

4 結(jié)論

    本文提出了一種基于Q-學(xué)習(xí)算法的有狀態(tài)網(wǎng)絡(luò)協(xié)議模糊測(cè)試方法,通過反饋信息分析協(xié)議實(shí)體狀態(tài),根據(jù)協(xié)議實(shí)體狀態(tài)和Q值選取測(cè)試用例進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果表明,該方法不需要引導(dǎo)狀態(tài)的輔助類型報(bào)文,且能在確保一定的測(cè)試用例有效性下,進(jìn)行報(bào)文異常輸入順序測(cè)試,顯著提高了測(cè)試效率和漏洞挖掘能力。在該方法中,協(xié)議狀態(tài)機(jī)的完整性以及學(xué)習(xí)算法中參數(shù)的設(shè)定對(duì)測(cè)試結(jié)果的影響很大, 因此,下一步有必要對(duì)協(xié)議狀態(tài)機(jī)以及參數(shù)的調(diào)節(jié)進(jìn)行深入的研究。

參考文獻(xiàn)

[1] 程必成,劉仁輝,趙云飛,等.非標(biāo)工業(yè)控制協(xié)議格式逆向方法研究[J].電子技術(shù)應(yīng)用,2018,44(4):126-129.

[2] 魏驍,劉仁輝,許鳳凱.基于靜態(tài)二進(jìn)制分析的工控協(xié)議逆向分析[J].電子技術(shù)應(yīng)用,2018,44(3):126-130.

[3] 張雄,李舟軍.模糊測(cè)試技術(shù)研究綜述[J].計(jì)算機(jī)科學(xué),2016,43(5):1-8,26.

[4] SUTTON M,GREENE A,AMINI P.Fuzzing:brute force vulner-ability discovery[M].[S.l.]:Pearson Education,2007.

[5] 王穎,楊義先,鈕心忻,等.基于控制流序位比對(duì)的智能Fuzzing測(cè)試方法[J].通信學(xué)報(bào),2013,34(4):114-121.

[6] MUNEA T L,LIM H,SHON T.Network protocol fuzz testing for information systems and applications: a survey and taxonomy[J].Multimedia Tools & Applications,2016,75(22):14745-14757.

[7] ZHAO J,CHEN S,LIANG S,et al.RFSM-fuzzing a smart fuzzing algorithm based on regression FSM[C].Eighth International Conference on P2P,Parallel,Grid,Cloud and Internet Computing.IEEE,2013:380-386.

[8] CUI B,LIANG S,CHEN S,et al.A novel fuzzing method for Zigbee based on finite state machine[J].International Journal of Distributed Sensor Networks,2014,2014(3):1-12.

[9] 康紅凱,吳禮發(fā),洪征,等.一種基于FSM的BGP-4協(xié)議模糊測(cè)試方法[J].計(jì)算機(jī)工程與應(yīng)用,2017,53(6):111-117.

[10] 張寶峰,張翀斌,許源.基于模糊測(cè)試的網(wǎng)絡(luò)協(xié)議漏洞挖掘[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2009(s2):2113-2118.

[11] NARAYAN J,SHUKLA S K,CLANCY T C.A survey of automatic protocol reverse engineering tools[J].ACM Computing Surveys,2015,48(3):1-26.

[12] GASCON H,WRESSNEGGER C,YAMAGUCHI F,et al.Pulsar:stateful black-box fuzzing of proprietary network protocols[M].Security and Privacy in Communication Networks.Springer International Publishing,2015:330-347.

[13] 張洪澤,洪征,周勝利,等.基于協(xié)議狀態(tài)機(jī)遍歷的模糊測(cè)試優(yōu)化方法[J].計(jì)算機(jī)工程與應(yīng)用,2020,56(4):82-91.

[14] SUTTON R S,BARTO A G.Reinforcement learning:an introduction[M].Cambridge,USA:MIT Press,1998.

[15] 周志華.機(jī)器學(xué)習(xí)[M].北京:清華大學(xué)出版社,2016.

[16] WATKINS C J C H.Learning from delayed rewards[J].Robotics & Autonomous Systems,1989,15(4):233-235.

[17] GitHub.Sulley[EB/OL].(2013-06-11)[2015-06-29]. https://github.com/OpenRCE/sulley.



作者信息:

荊  琛1,2,傅曉彤1,董  偉2,趙云飛2

(1.西安電子科技大學(xué) 網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安710071;2.華北計(jì)算機(jī)系統(tǒng)工程研究所,北京102209)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。