亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        網(wǎng)絡(luò)協(xié)議模糊測試綜述

        2023-12-31 00:00:00徐威李鵬張文鑌陸麗

        摘 要:模糊測試作為最有效的漏洞挖掘方法,在網(wǎng)絡(luò)協(xié)議安全檢測領(lǐng)域應(yīng)用廣泛,并且誕生了大量的研究成果。目前還沒有工作對協(xié)議模糊測試技術(shù)進(jìn)行全面的總結(jié)和分析。首先回顧了協(xié)議模糊測試的發(fā)展歷程,按照其工作流程(預(yù)處理,種子生成,執(zhí)行過程監(jiān)測以及結(jié)果分析)總結(jié)現(xiàn)有協(xié)議模糊測試所做的工作以及不足;之后,分析了不同環(huán)境下協(xié)議模糊測試技術(shù)的挑戰(zhàn)以及解決方法;最后討論了當(dāng)前協(xié)議測試方法存在的局限性,以及未來的發(fā)展方向。

        關(guān)鍵詞:協(xié)議; 模糊測試; 漏洞挖掘; 工作流程; 固件設(shè)備安全

        中圖分類號:TP309.2 文獻(xiàn)標(biāo)志碼:A

        文章編號:1001-3695(2023)08-001-2241-09

        doi:10.19734/j.issn.1001-3695.2022.12.0794

        Survey of network protocol fuzzing

        Xu Wei Li Peng Zhang Wenbin Lu Li

        (1.State Key Laboratory of Mathematical Engineering amp; Advanced Computing, Zhengzhou 450001, China; 2.Beijing Institute of Computer Technology amp; Applications, Beijing 100854, China; 3. National Engineering Laboratory for Cyber Science amp; Technology, Zhengzhou 450001, China)

        Abstract:As the most effective vulnerability discovering method, fuzzing testing has been widely used in the field of network protocol security detection and has given birth to a large number of research results. No work has been done to provide a comprehensive summary and analysis of protocol fuzzing testing techniques. Firstly, this paper reviewed the development of protocol fuzzing testing and summarized the work done by existing protocol fuzzing testing and its shortcomings according to its workflow: preprocessing, seed generation, execution process monitoring, and result analysis. After that, it analyzed the challenges of protocol fuzzing testing techniques in different scenarios and the solutions. Finally, it discussed the limitations of the current protocol testing methods and the future development directions.

        Key words:protocol; fuzzing; vulnerability discovering; working process; firmware device security

        網(wǎng)絡(luò)協(xié)議描述了兩個通信實(shí)體相互傳遞數(shù)據(jù)的規(guī)范,在計(jì)算機(jī)網(wǎng)絡(luò)中發(fā)揮著重要的作用。然而,在實(shí)現(xiàn)過程中由于開發(fā)人員理解上的偏差,會在其實(shí)現(xiàn)中引入漏洞。一些黑客利用協(xié)議中的漏洞傳播病毒對互聯(lián)網(wǎng)中的設(shè)備發(fā)起遠(yuǎn)程攻擊。例如,2017年WannaCry病毒感染了全球超過10萬臺主機(jī),造成了80億美元的經(jīng)濟(jì)損失[1]。該病毒正是利用了SMB協(xié)議中的MS17-010漏洞在全球范圍大肆傳播。本文根據(jù)NVD數(shù)據(jù)庫進(jìn)行統(tǒng)計(jì),最近半年協(xié)議中高危漏洞占比超過70%,因此及時發(fā)現(xiàn)并修補(bǔ)協(xié)議中存在的安全漏洞極為重要。

        模糊測試自1989年提出以來[2],經(jīng)過30多年的發(fā)展已經(jīng)成為一種廣泛使用的漏洞檢測方法。模糊測試通過發(fā)送大量隨機(jī)的輸入,檢測程序中存在的漏洞。據(jù)Google[3]一項(xiàng)調(diào)查顯示,超過37%的漏洞是通過模糊測試發(fā)現(xiàn)的。模糊測試作為目前最常見、最有效的漏洞檢測技術(shù),在協(xié)議的安全測試領(lǐng)域得到了廣泛的應(yīng)用。2001年誕生的首個實(shí)用性模糊測試工具PROTOS[4]就是針對協(xié)議開發(fā)的,這也說明協(xié)議是模糊測試的重要目標(biāo)。在此之后,協(xié)議模糊測試一直作為網(wǎng)絡(luò)和信息安全的熱點(diǎn)領(lǐng)域出現(xiàn)了大量的研究成果,其中具有代表性的工作包括Peach[5] 、Sulley[6]、AFLNet[7]等。然而,現(xiàn)有的綜述文章要么缺乏最近的研究工作[8],要么分析得并不全面[9],因此需要對協(xié)議模糊測試領(lǐng)域取得的成果進(jìn)行重新梳理和總結(jié)。本文從以下四個方面對協(xié)議模糊測試研究領(lǐng)域進(jìn)行總結(jié):a)以具有代表性的工具誕生時間節(jié)點(diǎn),分析回顧協(xié)議模糊測試發(fā)展歷程,比如AutoFuzz[10]以自動化的方式對協(xié)議進(jìn)行模糊測試,在此之前的研究需要大量的手工工作以及待測協(xié)議的先驗(yàn)知識;b)以協(xié)議模糊測試的流程為脈絡(luò),針對每個環(huán)節(jié)總結(jié)出其面臨的挑戰(zhàn)以及現(xiàn)有的研究成果解決這些問題采用的方法;c)在不同的應(yīng)用場景下,比如物聯(lián)網(wǎng)、工業(yè)控制系統(tǒng)開發(fā)協(xié)議有著獨(dú)特的要求,對這些場景下的協(xié)議進(jìn)行模糊測試取得的成果進(jìn)行總結(jié);d)分析目前協(xié)議模糊測試技術(shù)存在的不足,并指出未來的研究方向,最后對全文進(jìn)行總結(jié)。

        1 協(xié)議模糊測試發(fā)展歷程

        自PROTOS誕生以來,協(xié)議模糊測試技術(shù)經(jīng)過20多年的發(fā)展,出現(xiàn)了大量的研究成果。如圖1所示,本文根據(jù)具有重要意義研究成果出現(xiàn)的時間,對協(xié)議模糊測試工具發(fā)展歷程進(jìn)行了梳理。其中以AFLNet的誕生作為劃分節(jié)點(diǎn),在此之前協(xié)議模糊測試主要采用黑盒的方法,之后灰盒協(xié)議模糊測試技術(shù)出現(xiàn)了大量的研究成果。

        1.1 黑盒協(xié)議模糊測試階段

        黑盒模糊測試技術(shù)僅考慮程序的輸入以及輸出,不關(guān)心執(zhí)行過程中內(nèi)部的狀態(tài)信息。根據(jù)輸出結(jié)果以及執(zhí)行輸入后程序是否正常運(yùn)行來判斷目標(biāo)的狀態(tài)。黑盒模糊測試技術(shù)具有以下優(yōu)勢:a)不需要程序的源碼,這對協(xié)議來說尤為重要,因?yàn)樵诠た匾约盎ヂ?lián)網(wǎng)場景下有大量的私有協(xié)議;b)設(shè)計(jì)相對簡單,便于研究人員開發(fā);c)因?yàn)槠洳豢紤]目標(biāo)程序的內(nèi)部狀態(tài)信息,執(zhí)行速度較快。

        2001—2005年,協(xié)議模糊測試發(fā)展初期沒有考慮被測協(xié)議復(fù)雜的狀態(tài)信息,模糊器發(fā)送完全隨機(jī)的輸入。這個階段出現(xiàn)的代表性協(xié)議模糊測試工具有PROTOS[4]、SPIKE[11]、WSDigger[12]、Peach[5]等。

        PROTOS由奧尼大學(xué)的安全團(tuán)隊(duì)開發(fā),根據(jù)協(xié)議規(guī)范生成錯誤的輸入觸發(fā)特定的漏洞,如格式化字符串、緩沖區(qū)溢出漏洞。2001年Dave開發(fā)的SPIKE框架提供了一系列允許快速和高效開發(fā)網(wǎng)絡(luò)協(xié)議模糊測試器的API。SPIKE將協(xié)議分組為不同的塊,每個塊都可以單獨(dú)進(jìn)行模糊測試。但是,由于SPIKE提供的塊抽象過于簡略,開發(fā)人員難以輕松地建模有狀態(tài)協(xié)議和復(fù)雜消息及其依賴關(guān)系。此外,基于SPIKE的模糊器必須使用C語言編寫,因此開發(fā)過程可能比使用更復(fù)雜。WSDigger是2003年開發(fā)的一款用于測試Web服務(wù)的黑盒模糊測試工具,它將Web服務(wù)的WSDL文件作為輸入,并使用專門制作的有效負(fù)載測試特定的Web服務(wù)。2004年Michael開發(fā)出Peach,通過手動構(gòu)建pit文件定義生成的數(shù)據(jù)模型。時至今日,Peach仍是工業(yè)界廣泛使用的一款模糊測試工具。

        2006—2019年,研究人員開始通過構(gòu)建協(xié)議的狀態(tài)機(jī)模型,開發(fā)有狀態(tài)的協(xié)議模糊測試工具。根據(jù)協(xié)議狀態(tài)機(jī)簡潔地表示了協(xié)議實(shí)現(xiàn)的關(guān)鍵狀態(tài)和轉(zhuǎn)換條件,可用于系統(tǒng)地指導(dǎo)模糊測試的過程,探測深層次的漏洞。

        2006年,Banks等人[13]構(gòu)建了第一個有狀態(tài)的黑盒協(xié)議模糊測試工具SNOOZE。SNOOZE需要測試人員從RFC文檔中手動提取協(xié)議規(guī)范,進(jìn)而得到協(xié)議的字段特征、協(xié)議中信息交換的語法以及狀態(tài)機(jī)。測試人員根據(jù)狀態(tài)機(jī)發(fā)送特定序列的消息到達(dá)待測定的狀態(tài),在該狀態(tài)下根據(jù)協(xié)議規(guī)范生成大量隨機(jī)的輸入測試目標(biāo)程序中的漏洞。但是,SNOOZE在開啟一個模糊測試進(jìn)程之前,需要有經(jīng)驗(yàn)的研究人員花費(fèi)大量的精力完成協(xié)議規(guī)范提取工作。同年,Neves等人[14]開發(fā)了AJECT,依據(jù)應(yīng)用程序?qū)訁f(xié)議規(guī)范生成符合格式要求的測試報(bào)文。該規(guī)范描述了狀態(tài)的定義、遷移路徑以及可以在每個狀態(tài)下發(fā)送消息的語法。其輸入基于啟發(fā)式生成,以查找特定的漏洞,如緩沖區(qū)溢出、格式字符串漏洞等。在每一個狀態(tài)下,AJECT都會生成能被協(xié)議程序接受但參數(shù)無效的測試報(bào)文。

        Sulley是廣泛使用的網(wǎng)絡(luò)協(xié)議模糊測試框架,目前已停止維護(hù),BooFuzz[15]繼承了它的工作。Sulley具體包括數(shù)據(jù)定義、數(shù)據(jù)驅(qū)動、會話管理、監(jiān)視代理、輔助工具和文件系統(tǒng)六大模塊。測試人員只需關(guān)注數(shù)據(jù)生成模塊中測試報(bào)文模板的編寫,其他部分都可以自動完成。

        2007年Miki等人[16]開發(fā)了KIF,以解決多數(shù)模糊器僅依賴隨機(jī)注入生成測試數(shù)據(jù),但沒有考慮目標(biāo)協(xié)議程序的語法、語義以及狀態(tài)問題。KIF通過一個無上下文的ABNF[17]描述協(xié)議的確切語法。此外,基于捕獲到的通信流量,利用機(jī)器學(xué)習(xí)的方法,構(gòu)建協(xié)議狀態(tài)機(jī)用于模擬系統(tǒng)中的狀態(tài)轉(zhuǎn)換。KIF是第一個能夠生成復(fù)雜隨機(jī)輸入的SIP協(xié)議模糊器。

        上述模糊器都依賴研究人員從協(xié)議規(guī)范中提取協(xié)議格式以及狀態(tài)機(jī)模型,生成符合格式的輸入。此外SNOOZE、KIF需要突變字段以及發(fā)送特定的報(bào)文序列到達(dá)測試場景。這種方式需要研究人員過多地參與且模糊測試的效率較低。為了解決KIF等協(xié)議模糊測試工具目標(biāo)單一,嚴(yán)重依賴對協(xié)議的先驗(yàn)知識和大量手工操作的問題。研究人員嘗試使用自動化的方式推斷協(xié)議格式以及狀態(tài)機(jī)模型,指導(dǎo)模糊測試的執(zhí)行。

        2010年Gorbunov等人[10]開發(fā)了AutoFuzz,通過充當(dāng)客戶端與被測試程序的中間人,獲取通信流量,在此基礎(chǔ)上自動化地推斷協(xié)議規(guī)范。AutoFuzz使用基于Needleman算法[18]的PI工具[19]將靜態(tài)數(shù)據(jù)字段和動態(tài)數(shù)據(jù)字段分開,并將動態(tài)數(shù)據(jù)字段與類型和長度信息關(guān)聯(lián)起來獲取語法信息,構(gòu)建通用報(bào)文序列。2012年文獻(xiàn)[20]采用類似的方法,從獲取的網(wǎng)絡(luò)流量中推斷出協(xié)議的報(bào)文格式以及狀態(tài)模型,檢測協(xié)議中的漏洞。2014年文獻(xiàn)[21]開發(fā)了T-Fuzz,并將其與TTCN-3集成。T-Fuzz通過模型提取器獲取TTCN-3中定義的模型,區(qū)分報(bào)文中的靜態(tài)字段以及可變字段。之后,通過模糊測試引擎將可變字段設(shè)置成特殊值進(jìn)行測試。Ma等人[22]通過對協(xié)議規(guī)范進(jìn)行分析,構(gòu)建有規(guī)則的協(xié)議狀態(tài)機(jī)。與之前的工作不同,在構(gòu)建完成后不對所有的狀態(tài)遷移路徑進(jìn)行測試,而是首先進(jìn)行一個判斷:如果從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換過程中不會發(fā)生異常,那么該狀態(tài)遷移路徑是安全的。安全路徑對于漏洞探測是沒有意義的,因此可以將其忽略,從而提高模糊測試的效率。2015年文獻(xiàn)[23]等人使用LearnLib庫,通過改進(jìn)的Angluin’s L* algorithm算法[24]從TLS協(xié)議中實(shí)現(xiàn)自動提取狀態(tài)機(jī)。通過分析這些狀態(tài)機(jī),可以發(fā)現(xiàn)協(xié)議流中的邏輯缺陷。2018年文獻(xiàn)[25]基于文獻(xiàn)[26,27]的工作,利用自然語言處理技術(shù)從RFC文檔中自動獲取協(xié)議狀態(tài)機(jī)。

        上述工作減少了研究人員的手工工作,在一定程度上提升了自動化水平。然而這種方式的準(zhǔn)確性以及可擴(kuò)展性仍需進(jìn)一步提高。此外,對私有協(xié)議進(jìn)行模糊測試時,由于缺乏協(xié)議的描述文檔,需要通過逆向的方法獲取其協(xié)議格式以及狀態(tài)轉(zhuǎn)換模型。所以,上述通過RFC文檔構(gòu)建協(xié)議狀態(tài)機(jī)模型的方法無法直接適用于私有協(xié)議。

        2015年Gascon等人[28]將協(xié)議逆行技術(shù)與模糊測試技術(shù)相結(jié)合,構(gòu)建了一款針對私有協(xié)議的模糊測試工具PULSAR。PULSAR采用一種基于概率的方法,從獲取到的流量中自動提取協(xié)議格式以及一個二階馬爾可夫模型,該模型提供了一個真實(shí)狀態(tài)機(jī)的概率近似。PULSAR以字節(jié)為單位推斷協(xié)議格式,更適用于文本類協(xié)議的模糊測試,對二進(jìn)制協(xié)議逆向結(jié)果不夠準(zhǔn)確。2017年文獻(xiàn)[29]將bit作為最小的單元推斷協(xié)議的格式,實(shí)現(xiàn)了一個通用的協(xié)議模糊測試框架Bbuzz。Bbuzz可以快速分析出協(xié)議的特征,自動生成測試用例以及自動進(jìn)行模糊測試。

        1.2 灰盒協(xié)議模糊測試階段

        2020年誕生了第一個灰盒協(xié)議模糊測試工具AFLNet,之后出現(xiàn)了許多類似的研究成果,如StateAFL[30]、SNPSFuzzer[31]、SnapFuzz[32]等。相較于黑盒模糊測試技術(shù),灰盒模糊測試技術(shù)一方面省去了協(xié)議格式推斷以及協(xié)議狀態(tài)模型的構(gòu)建過程;另一方面,通過反饋信息指導(dǎo)測試用例的生成,并且可以保留有價值的種子對其進(jìn)行進(jìn)一步測試,提高測試效率。2020年文獻(xiàn)[7]在AFL[33]的基礎(chǔ)上實(shí)現(xiàn)了第一個有狀態(tài)的灰盒協(xié)議模糊測試工具AFLNet。AFLNet捕獲客戶端與服務(wù)端通信時的流量作為初始種子,在模糊測試過程將狀態(tài)碼以及代碼覆蓋率作為反饋信息,保留有價值的種子對其進(jìn)行進(jìn)一步測試。AFLNet將響應(yīng)中的狀態(tài)碼作為狀態(tài)信息,指導(dǎo)模糊器探索協(xié)議的狀態(tài)空間。之后出現(xiàn)了大量的研究工作,對AFLNet存在的不足進(jìn)行改進(jìn)。

        如前文所述,AFLNet依賴響應(yīng)報(bào)文的內(nèi)容推斷協(xié)議狀態(tài),因此必須使用特定的解析器從響應(yīng)中提取狀態(tài)碼。對于響應(yīng)中不包含狀態(tài)碼的協(xié)議,AFLNet無法推斷出其狀態(tài)信息進(jìn)行有效的模糊測試。Natella在AFLNet的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了StateAFL,通過適用性更強(qiáng)且粒度更細(xì)的長生命周期變量識別網(wǎng)絡(luò)協(xié)議的狀態(tài)。Liu等人[34]認(rèn)為不是所有的協(xié)議狀態(tài)都同等重要,并且模糊測試的時間有限,需要一個有效的狀態(tài)選擇算法優(yōu)先考慮漸進(jìn)的狀態(tài)。為此在AFLNet的基礎(chǔ)上實(shí)現(xiàn)了AFLNetLegion算法,對協(xié)議的狀態(tài)進(jìn)行評估。2022年文獻(xiàn)[31]針對AFLNet通信速度慢,深層次狀態(tài)無法直接到達(dá),以及難以覆蓋到深層的狀態(tài)空間的問題,在其基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了SNPSFuzzer。SNPSFuzzer保存了網(wǎng)絡(luò)協(xié)議程序的進(jìn)程上下文(即進(jìn)程快照),以便在模糊器第一次發(fā)送前綴消息后進(jìn)行模糊處理。當(dāng)需要模糊一個特定的狀態(tài)時,只需要恢復(fù)快照,并發(fā)送隨后的突變消息。此外,設(shè)計(jì)了一種消息鏈分析算法來探索更深層次的協(xié)議狀態(tài)。SnapFuzz將緩慢的異步網(wǎng)絡(luò)通信轉(zhuǎn)換為基于UNIX域套接字的快速同步通信,并且加快所有文件操作重定向到內(nèi)存文件系統(tǒng)的過程,提高灰盒協(xié)議模糊測試的速度。

        2 協(xié)議模糊測試工作流程

        協(xié)議模糊測試如圖2所示,可以分為預(yù)處理、種子生成、執(zhí)行過程檢測、結(jié)果分析四個步驟。在協(xié)議模糊測試中預(yù)處理主要是為了獲取規(guī)范或者對源碼進(jìn)行插裝。種子生成是協(xié)議模糊測試中最為關(guān)鍵的一個步驟,因?yàn)椴环弦?guī)則的種子會在開始階段被拒絕。依據(jù)種子生成方式的不同有基于生成以及基于突變兩種方式。灰盒模糊測試中,根據(jù)執(zhí)行過程中的反饋信息得到被測程序的當(dāng)前狀態(tài),保留有價值的種子以及調(diào)整輸入隊(duì)列中種子的優(yōu)先級,節(jié)省模糊測試的時間;另一方面,存儲輸出的異常信息以及造成此次異常的測試用例。結(jié)果分析階段則是對測試過程中出現(xiàn)的異常行為進(jìn)行調(diào)試,確定漏洞成因。

        2.1 預(yù)處理

        預(yù)處理有以下兩種目的:a)通過協(xié)議文檔手動提取、協(xié)議逆向方式自動獲取和協(xié)議實(shí)現(xiàn)動態(tài)獲取三種方式獲取協(xié)議的格式以及狀態(tài)轉(zhuǎn)換模型;b)在灰盒協(xié)議模糊測試中,對程序進(jìn)行插樁獲取反饋信息。

        2.1.1 獲取協(xié)議規(guī)范

        1)從協(xié)議規(guī)范中獲取

        協(xié)議模糊測試初期,研究人員針對特定的協(xié)議開發(fā)模糊測測試工具。SNOZZE、AJECT、KIF等工具從該協(xié)議的公開文檔中手動提取協(xié)議格式以及狀態(tài)轉(zhuǎn)換模型。這種方法需要研究人員花費(fèi)大量的時間,并且不適用于沒有公開文檔的私有協(xié)議。

        為了克服手動提取帶來的人工開銷,研究人員開始關(guān)注通過自動化的方式,從協(xié)議文檔中獲取協(xié)議規(guī)范。這種自動化的方法往往與機(jī)器學(xué)習(xí)、人工智能相結(jié)合,盡量減少人工參與。比如,AspFuzz[35]使用特殊語言描述RFC文檔,獲取協(xié)議格式以及狀態(tài)轉(zhuǎn)換模型。文獻(xiàn)[27]將自然語言處理技術(shù)應(yīng)用于協(xié)議規(guī)范的提取,并使用零次學(xué)習(xí)(zero-shot learning,ZSL)提高準(zhǔn)確率,還可以方便適用于不同的協(xié)議。上述方法在一定程度上增加了自動化的程度,然而,這些方法僅適用于具有協(xié)議規(guī)范文檔的開源協(xié)議。

        2)通過協(xié)議逆向技術(shù)自動獲取

        協(xié)議逆向技術(shù)不依靠文檔規(guī)范,以自動化的方式獲取協(xié)議格式以及狀態(tài)轉(zhuǎn)換模型。協(xié)議格式逆向過程中,首先要使用Wireshare、Tcpdump等嗅探工具作為輔助捕獲大量的網(wǎng)絡(luò)流量,并且,這些流量要盡可能覆蓋協(xié)議的不同狀態(tài),這樣才能夠?qū)Τ绦蜻M(jìn)行充分的測試以保證逆向結(jié)果的準(zhǔn)確性。在逆向時,通常按照報(bào)文聚類、序列對比或者概率推斷的過程獲取協(xié)議格式以及協(xié)議狀態(tài)機(jī)模型。AutoFuzz、PULSAR以及Bbuzz都是采用協(xié)議逆向的方法通過網(wǎng)絡(luò)流量獲取協(xié)議的格式以及狀態(tài)轉(zhuǎn)換關(guān)系。AutoFuzz以及PULSAR更適用基于文本的協(xié)議,Bbuzz以bit為基本單元,針對二進(jìn)制協(xié)議的逆向結(jié)果更加準(zhǔn)確,并且具有良好的拓展性。張蔚瑤等人[36]基于協(xié)議特征庫推斷出協(xié)議格式,并且使用循環(huán)比對法識別語義信息,提高逆向結(jié)果的準(zhǔn)確性。

        上述通過協(xié)議通信流量獲取到的協(xié)議適用性更高,但有部分研究工作采用基于指令序列的方法獲取協(xié)議格式結(jié)果。Zhang等人[37]使用指令追蹤的方法構(gòu)建會話圖表示協(xié)議狀態(tài)轉(zhuǎn)換。然后,通過展開策略將其轉(zhuǎn)換為有向無環(huán)圖,避免模糊測試器長時間陷入一個循環(huán)。這種方式能夠在協(xié)議逆向中獲取到更為準(zhǔn)確的結(jié)果,不過指令追蹤需要有良好的執(zhí)行環(huán)境,這在測試嵌入式設(shè)備時往往是不可行的。

        3)通過協(xié)議實(shí)現(xiàn)動態(tài)獲取

        動態(tài)獲取的方式可以分為一致性測試以及構(gòu)建測試驅(qū)動程序兩種方式。采用一致性測試的工具,比如RFSM-Fuzz[38]通過構(gòu)建唯一輸入輸出序列,確定完整的協(xié)議狀態(tài)轉(zhuǎn)換模型;另一種方式則是通過協(xié)議實(shí)現(xiàn)程序的源碼,構(gòu)建測試驅(qū)動程序。此外,這種方式還需提供一個可以發(fā)送到被測試的服務(wù)(service under test,SUT)的消息列表(也稱為輸入字母表),以及一個將SUT重置為其初始狀態(tài)的命令。構(gòu)建的測試驅(qū)動程序能夠?qū)⑤斎氲淖址馕鰹榭梢园l(fā)送到測試服務(wù)的具體報(bào)文。依據(jù)SUT的響應(yīng)作出假設(shè),并給出假設(shè)的判定條件,盡可能地推斷出準(zhǔn)確的協(xié)議狀態(tài)機(jī)。如TLS-Fuzzer[23]、DTLS-Fuzzer[39]使用Angluin’s L* algorithm算法的改進(jìn)版本LearnLib獲取TLS協(xié)議狀態(tài)機(jī)。LearnLib[40]首先依據(jù)SUT接收到的響應(yīng)為狀態(tài)機(jī)作出假設(shè),之后驗(yàn)證這些假設(shè)與實(shí)際狀態(tài)機(jī)的等價性。如果模型不等價,則返回一個反例,并重新定義假設(shè)。在進(jìn)行等價檢查時,LearnLib使用W-method的改進(jìn)版本為等價檢查指定一個深度。該算法只尋找不超過深度上界的反例軌跡,如果找不到,則認(rèn)為狀態(tài)機(jī)的當(dāng)前假設(shè)與已實(shí)現(xiàn)的假設(shè)等價。LearnLib使用的方法可以在一定程度上避免狀態(tài)空間爆炸問題,得到盡可能近似的結(jié)果。然而,它需要提前假定一個teacher角色,此步驟在實(shí)施過程中通常比較困難。

        相比較而言,通過一致性測試確定唯一輸入輸出序列,其相關(guān)理論更為成熟,有著很高的路徑覆蓋率,可以確保結(jié)果的正確性,但是需要大量的測試時間。構(gòu)建測試驅(qū)動程序的方式,自動化的程度更高,但是需要對協(xié)議程序源碼有著很好的理解,并且僅能得到近似的結(jié)果。

        除了上述方法外還有一些其他的方法,如T-Fuzz通過集成的TTCN框架自動提取協(xié)議模型;Han等人[41]使用腳本將實(shí)際的通信流量自動轉(zhuǎn)換為協(xié)議和關(guān)系描述格式;SulleyEX[42]使用預(yù)定義的格式描述狀態(tài)格式,之后通過深度優(yōu)先算法來獲取協(xié)議的狀態(tài)遷移路徑。SulleyEX解決了狀態(tài)機(jī)中存在循環(huán),造成的狀態(tài)空間覆蓋低的問題。然而,這種方法要求研究人員掌握待測協(xié)議的先驗(yàn)知識,并且需要一定的手工操作。

        表1對不同的協(xié)議規(guī)范獲取方式進(jìn)行了總結(jié):通過文本規(guī)范手動獲取的方式,推斷出的結(jié)果可能更加準(zhǔn)確。然而,這種方法不僅需要掌握協(xié)議的先驗(yàn)知識,還會消耗研究人員大量的精力;通過自然語言處理獲取的方式,在一定程度上提高了自動水平,但其準(zhǔn)確性有待進(jìn)一步的提升。此外,以上兩種方法僅支持公開的協(xié)議。通過協(xié)議逆向技術(shù)獲取,自動化程度更高,能夠同時支持開源協(xié)議與私有協(xié)議,但是逆向結(jié)果不夠準(zhǔn)確或者執(zhí)行條件比較嚴(yán)苛;通過協(xié)議實(shí)現(xiàn)程序動態(tài)獲取,需要在理解程序源碼的基礎(chǔ)上編寫harness,進(jìn)而推斷出與實(shí)際情況近似的協(xié)議狀態(tài)機(jī)。執(zhí)行一致性測試構(gòu)建唯一輸入輸出序列能夠得到更加準(zhǔn)確的結(jié)果,但是執(zhí)行時間較長。

        2.1.2 插樁

        對于灰盒模糊測試工具來說,在測試程序執(zhí)行之前需要對源代碼進(jìn)行插樁獲取程序執(zhí)行過程中的反饋信息,如路徑覆蓋率信息、內(nèi)存信息、函數(shù)變量取值等。

        根據(jù)反饋信息的不同,插樁方式也不同,以AFLNet為代表的工具,沿用了AFL的插樁思想,采用靜態(tài)的方式對程序源碼進(jìn)行插樁。這種插樁方式僅僅可以統(tǒng)計(jì)代碼的覆蓋率信息,無法直接獲取協(xié)議的狀態(tài)信息。后來的研究人員發(fā)現(xiàn),網(wǎng)絡(luò)服務(wù)應(yīng)用程序都是基于網(wǎng)絡(luò)事件循環(huán),當(dāng)接收到客戶端發(fā)來的消息時,網(wǎng)絡(luò)事件循環(huán)對該消息進(jìn)行處理,完成后,重新等待新消息的到來。在此循環(huán)過程中,長生命周期變量的更新在一定程度上能夠反映程序的狀態(tài),而短生命周期變量僅在循環(huán)內(nèi)有效,因此可以使用更加容易獲取的長生命周期變量來表示狀態(tài)。使用這種方式時,為了獲取長周期變量,需要在編譯時進(jìn)行插樁。此類協(xié)議模糊測試工具不僅在代碼分支處插入原生AFL提供的用于統(tǒng)計(jì)覆蓋率信息的樁代碼,還在內(nèi)存分配/釋放處插入一套新設(shè)計(jì)的樁代碼。因此,這種方式也引入了昂貴的插樁開銷以及計(jì)算開銷。NSFuzz[43]通過使用輕量級的狀態(tài)變量來表示更細(xì)粒度的狀態(tài),降低了插樁帶來的開銷,提高了執(zhí)行效率。

        2.2 種子生成

        根據(jù)種子生成方式的不同可以將協(xié)議模糊測試分為基于生成的和基于變異的兩類。基于生成的模糊測試方法根據(jù)預(yù)處理獲取的協(xié)議規(guī)范,生成盡可能符合要求的種子?;谕蛔兊哪:郎y試方法,從一個合法的樣本出發(fā),通過變異算法不斷地修改其中一些數(shù)據(jù),生成一批畸形的種子。

        1)基于生成的方法 基于生成的模糊測試主要是對目標(biāo)程序或協(xié)議的規(guī)范有了一定掌握的前提下使用的。協(xié)議格式具有高度結(jié)構(gòu)化的特點(diǎn),因此基于生成的方法構(gòu)建的測試用例更可能被測試目標(biāo)所接受?;谏傻姆椒梢允謩訕?gòu)建輸入模型,或者自動化地生成模板構(gòu)建測試用例。比如,ROTOS使用最小化模型的方法,根據(jù)協(xié)議格式以及消息發(fā)送順序,針對特定目標(biāo)中格式化字符串或者棧溢出等特定類型的漏洞構(gòu)建測試模型。然后,根據(jù)此模型啟發(fā)式地生成測試樣本。與PROTOS不同,SPIKE利用提供的編程接口來對樣本格式進(jìn)行約束,使用特定的源語測試應(yīng)用程序。

        上述兩種工具都無法靈活地生成種子,并且實(shí)現(xiàn)的算法復(fù)雜度很高,此外也沒有考慮到相鄰報(bào)文間字段的關(guān)系,如序號、cookie等語義信息。之后的研究人員采用手動編寫腳本文件的方式,定義協(xié)議的格式以及狀態(tài)轉(zhuǎn)換關(guān)系,提高了測試用例生成的速度,并且這些測試用例更符合協(xié)議規(guī)范。

        Peach、Sulley、BooFuzz等工具基于上述方法,在生成器中事先編寫腳本文件對樣本格式進(jìn)行約束,生成初始種子。之后,變異器針對不同的數(shù)據(jù)類型采用不同的變異策略獲取大量的測試用例。EXT-NSFSM[44]、T-Fuzz、PULSAR、SulleyEX等工作,依據(jù)推測出的協(xié)議規(guī)則構(gòu)建輸入模板,填充模板中的相應(yīng)字段生成初始種子。確保測試用例生成過程中不會隨意突變,提高了測試樣例被目標(biāo)程序接受的概率。但是也正因?yàn)槟0寤淖儺愐?guī)則,導(dǎo)致突變的畸形度不足,有些潛在的漏洞無法觸發(fā)。為了獲取到的種子在符合格式之外有著更高的畸形度,以達(dá)到提高發(fā)現(xiàn)漏洞幾率的效果,AspFuzz根據(jù)模板構(gòu)建種子之外,還會向服務(wù)器發(fā)送異常的消息序列進(jìn)行模糊測試。為了獲取更高效的種子,Ma等人使用基于規(guī)則的狀態(tài)機(jī)和有狀態(tài)規(guī)則樹生成測試用例。使用結(jié)構(gòu)變異算法定期突變初始測試用例,生成大量狀態(tài)消息路徑相同但是初始值不同的種子,構(gòu)成最后的測試數(shù)據(jù)集。

        2)基于突變的方法 基于突變的模糊測試方法通過隨機(jī)變異目標(biāo)程序正常的輸入,生成新的測試用例對目標(biāo)程序進(jìn)行測試。這種方法不需要掌握協(xié)議的先驗(yàn)知識,避免了格式推斷以及狀態(tài)機(jī)構(gòu)建工作,可以快速地開啟一個模糊測試進(jìn)程。

        RATM-Fuzz使用客服端與服務(wù)器之間的流量作為初始輸入,使用自動化腳本將其轉(zhuǎn)換為PRDF格式。之后,通過RATM模型表示協(xié)議字段的關(guān)系,對初始輸入進(jìn)行變異。這種突變方式能夠快速地生成大量測試用例,但是往往會由于隨機(jī)的突變嚴(yán)重破壞測試用例的結(jié)構(gòu),導(dǎo)致被測試程序拒絕。一些研究工作如SPFuzz[45],將上述方法與AFL的變異引擎相結(jié)合,制定了一個包括頭部、內(nèi)容和序列突變策略在內(nèi)的三級突變策略,在能夠盡可能滿足協(xié)議規(guī)范的同時提高代碼覆蓋率。以上的突變方式需要大量的輸入,并且這些輸入應(yīng)當(dāng)覆蓋協(xié)議的不同功能,這樣才可能測試到協(xié)議的全部狀態(tài)。為此SECFuzz[46]提出協(xié)議中的輸入與服務(wù)端的配置相關(guān),可以通過修改配置文件或者修改命令行參數(shù)的形式獲取到大量的初始種子。之后,使用模糊器的變異算子對種子進(jìn)行變異得到新的測試用例。

        文獻(xiàn)[47]針對TLS協(xié)議庫開發(fā)出TLS-attacker,允許測試人員創(chuàng)建自定義TLS的報(bào)文序列并使用簡單的接口任意修改報(bào)文內(nèi)容。這種方式可以檢測到加密失敗以及緩存區(qū)溢出漏洞。然而,TLS-attacker適用對象單一,僅支持TLS協(xié)議,并且無法對客戶端進(jìn)行測試。上述方法可以快速地生成大量測試用例,能夠適用于不同的執(zhí)行環(huán)境。然而,由于這些工具沒有收集程序執(zhí)行過程中的反饋信息,造成測試存在一定的盲目性,很難到達(dá)深層次的狀態(tài)空間。此外,無法保留有價值的測試用例對其作進(jìn)一步測試。

        AFLNet及其改進(jìn)工作StateAFL、NSFuzz等灰盒協(xié)議模糊測試工具,同樣使用客戶端與服務(wù)端交互的正常流量作為初始輸入。不過這些模糊測試工具在進(jìn)行測試之前需要對協(xié)議程序的源碼進(jìn)行插樁,從而在執(zhí)行過程中獲取反饋信息。在測試時,如果一個種子能夠提升代碼覆蓋率或者進(jìn)入一個新的狀態(tài),那么這個測試用例將會被保留,并再次對其進(jìn)行測試;反之,無效的測試用例會被直接剔除。保留下的測試用例根據(jù)不同的調(diào)度算法進(jìn)行優(yōu)先級排序。在AFLNet中采取和AFL相同的度量方式,將更小并且執(zhí)行時間更短的種子排在輸入序列的前面。這樣的方式可以將有限的測試時間盡可能多地用在價值更高的輸入上,提升觸發(fā)潛在漏洞的幾率。為了探測到深層次的狀態(tài)空間,SNPSFuzzer賦予能夠到達(dá)深層次路徑測試用例更高的優(yōu)先級。

        對種子進(jìn)行突變的同時,還需考慮新生成的測試用例是否符合協(xié)議規(guī)范。胡志濠等人[48]利用準(zhǔn)循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)協(xié)議的格式以及語義,過濾無效的測試用例。SGPFuzzer[49]引入了多種突變操作符,對所選的種子文件進(jìn)行簡單突變和結(jié)構(gòu)化突變,具體包括消息序列突變、消息突變、二進(jìn)制字段突變以及變量字符串突變。在測試隊(duì)列調(diào)度方面使用的方式和AFLNet相同?;谏傻姆椒ǎ罁?jù)預(yù)處理后獲取的協(xié)議格式指導(dǎo)測試用例的生成。這種方式獲取的測試用例有利于通過語法檢查,到達(dá)協(xié)議程序內(nèi)部的功能代碼。然而,這種方法一方面需要研究人員花費(fèi)大量的時間從公開文檔中提取協(xié)議格式;另一方面不利于擴(kuò)展,測試不同的協(xié)議程序時,需要重新進(jìn)行格式推斷。使用預(yù)定義的模板生成測試用時,能夠快速生成大量符合格式的測試用例。但是采用這種方式生成的測試用例靈活性較差,難以觸發(fā)條件比較嚴(yán)苛的漏洞。協(xié)議逆向技術(shù)降低了格式推斷以及狀態(tài)機(jī)模型構(gòu)建所需的時間,然而測試用例生成的質(zhì)量依賴逆向結(jié)果的準(zhǔn)確性,目前仍有很大的提升空間?;谕蛔兊姆椒ㄍㄟ^突變客戶端與服務(wù)端交互過程中產(chǎn)生的流量,自動化地生成測試用例。但是,由于突變的隨機(jī)性,往往會產(chǎn)生大量無法通過格式校驗(yàn)的冗余測試用例。基于突變的灰盒模糊器需要插裝才能獲取所需的反饋信息,這在一定程度上增加了開銷。此外,對于有狀態(tài)的協(xié)議,深層的狀態(tài)空間需要一個特定的合法輸入序列才可到達(dá),因此通常難以覆蓋到。表2對上述研究的工作進(jìn)行了總結(jié)。

        2.3 執(zhí)行過程監(jiān)測

        執(zhí)行過程監(jiān)測用于得到測試用例后在特定的監(jiān)視環(huán)境中執(zhí)行目標(biāo)程序,并對測試過程中出現(xiàn)的指定異常情況進(jìn)行記錄。該步驟可以在前一個階段結(jié)束之后啟動,也可以和前一個階段形成一個反饋回路。執(zhí)行過程監(jiān)測主要進(jìn)行兩個方面的工作:a)監(jiān)控當(dāng)前測試用例是否會導(dǎo)致目標(biāo)程序異常;b)判斷測試用例是否增加了代碼覆蓋率,或者觸發(fā)到新的狀態(tài)。

        對于黑盒模糊測試工具僅監(jiān)測程序執(zhí)行過程的異常情況。Peach、Sulley等工作通過監(jiān)測模塊監(jiān)視程序執(zhí)行的狀態(tài),記錄崩潰以及是否可以和服務(wù)器正常通信。程序崩潰有很大的可能性是因?yàn)橛|發(fā)了漏洞,因此這種方式得到的漏洞準(zhǔn)確率較高。為了更好地監(jiān)測以及控制模糊測試進(jìn)程的執(zhí)行,使用多個代理監(jiān)測模糊測試執(zhí)行時的信息。網(wǎng)絡(luò)監(jiān)控代理負(fù)責(zé)監(jiān)控網(wǎng)絡(luò)通信,并將其記錄到磁盤上。進(jìn)程監(jiān)視器代理監(jiān)視目標(biāo),以檢查它在模糊過程中是否可能出錯。如果有,將這個錯誤記錄到一個崩潰日志中。VMWare控制代理提供了一組與虛擬機(jī)映像交互的API,它還可以啟動、停止、暫?;蛑刂锰摂M機(jī)鏡像。其他一些研究人員將SUT與動態(tài)內(nèi)存分析工具一起執(zhí)行,這些工具可以幫助其輕松地識別漏洞,因此它們有著很高的漏洞準(zhǔn)確率。另外一些模糊測試技術(shù)通過將漏洞與正常輸入進(jìn)行比較來識別漏洞。在SECFuzz中使用的內(nèi)存分析工具可以幫助其輕松地檢測出確切的漏洞、產(chǎn)生的異常情況以及造成這種情況的原因。此外,這些工具還評估了SUT在每種情況下的性能。這種方式不可避免地會引入大量的開銷,當(dāng)使用動態(tài)內(nèi)存分析工具時,SUT的性能降低了50%。

        上述方法能夠發(fā)現(xiàn)內(nèi)存破壞類漏洞,如棧溢出、堆溢出等,協(xié)議中還存在大量的漏洞并不會引發(fā)內(nèi)存錯誤。因此需要其他的判斷方法,AspFuzz、AutoFuzz和RFSM-Fuzz通過對比執(zhí)行時與正常情況下的輸出,這種方法的漏洞準(zhǔn)確率比較低,必須人工確認(rèn)漏洞的存在。

        灰盒協(xié)議模糊器在異常監(jiān)測方面,將內(nèi)存錯誤視為漏洞觸發(fā)條件,因此這些工具同樣具有較高的漏洞準(zhǔn)確率。此外,它們使用模糊測試執(zhí)行過程中監(jiān)測到的信息反饋給種子生成步驟,指導(dǎo)種子的變異與調(diào)度。協(xié)議模糊測試除了需要監(jiān)測常規(guī)的代碼覆蓋率,更重要的是監(jiān)測能夠反映協(xié)議狀態(tài)的信息。因此,使用不同方法的模糊測試工具,需要監(jiān)測的反饋信息也不同。這些方法都有著一定的優(yōu)點(diǎn)以及局限性。

        一些研究工作將服務(wù)器發(fā)送消息中的響應(yīng)碼作為反饋信息,保留能夠提高代碼覆蓋率以及探測到不同協(xié)議狀態(tài)的測試用例。但是,這種方式反映協(xié)議狀態(tài)顆粒度過粗,并且不具有通用性。部分研究工作將程序執(zhí)行的變量作為反饋信息,這種方法能夠支持更多的協(xié)議種類以及數(shù)量。比如StateAFL使用長內(nèi)存的變量作為程序的狀態(tài)反饋,但是這種方式的準(zhǔn)確性偏低,并且使用的插樁方式帶來的開銷更大。

        為了解決模糊器需要添加延時與測試程序進(jìn)行消息同步的問題,NSFuzz注意到網(wǎng)絡(luò)應(yīng)用程序的本質(zhì)是使用一個網(wǎng)絡(luò)事件循環(huán)來監(jiān)聽收到的消息,然后對消息進(jìn)行處理?;谏鲜霭l(fā)現(xiàn),模糊器能在服務(wù)端完成消息處理后立即發(fā)送下一條消息,從而提高模糊測試的吞吐量。

        TCP-Fuzz[50]在統(tǒng)計(jì)代碼覆蓋率的基礎(chǔ)上,做了進(jìn)一步的改進(jìn)用于反映狀態(tài)的改變。在TCP-Fuzz中定義了分支轉(zhuǎn)換的概念,首先將獲取到的程序路徑覆蓋信息轉(zhuǎn)換為向量,比較當(dāng)前輸入的向量序列與前一個輸入的向量序列是否相同。TCP-Fuzz使用分支轉(zhuǎn)換來指示狀態(tài)的轉(zhuǎn)變。

        在異常監(jiān)測方面,不同于傳統(tǒng)的方式僅監(jiān)測內(nèi)存相關(guān)錯誤,TCP-Fuzz同時執(zhí)行不同的TCP協(xié)議實(shí)現(xiàn)程序,通過比較相同輸入下所有實(shí)現(xiàn)程序的輸出是否相同,探測被測程序中的語義錯誤。這種方式更能檢測到漏洞,但是語義錯誤需要研究人員花費(fèi)大量的時間確認(rèn),因此漏洞檢測率較低。

        研究人員根據(jù)執(zhí)行過程監(jiān)測到的信息,能夠推斷出程序中可能存在的漏洞。不同的工具需要監(jiān)測的內(nèi)容不同。如表3所示,分別概述了黑盒以及灰盒模糊測試技術(shù)執(zhí)行過程中的監(jiān)測內(nèi)容。其中,黑盒技術(shù)更關(guān)心程序的執(zhí)行結(jié)果,灰盒技術(shù)則需要關(guān)心覆蓋率以及狀態(tài)信息。黑盒模糊器僅監(jiān)測程序的輸出以及異常情況,這種方式漏洞準(zhǔn)確率較低,之后需要測試人員手工分析造成此次異常的真正原因。采用內(nèi)存工具輔助,有助于復(fù)現(xiàn)以及確定漏洞觸發(fā)的位置,漏洞準(zhǔn)確率較高,但是會引入額外的開銷?;液心:郎y試工具需要對程序的源碼進(jìn)行插樁,之后才能獲取所需的反饋信息,這種方法無法用于不開源的私有協(xié)議。這些工具大多以內(nèi)存中存在的異常情況作為判定漏洞是否存在的依據(jù),都有著較高的漏洞準(zhǔn)確率。TCP-Fuzz能夠檢測出大量的語義問題,但是漏洞準(zhǔn)確率較低。上述工具使用不同的方式表示協(xié)議狀態(tài)信息,但協(xié)議狀態(tài)通常十分復(fù)雜,這些信息都僅能表示所有狀態(tài)的子集,因此無法保證測試到全部的協(xié)議狀態(tài)。

        2.4 結(jié)果分析

        結(jié)果分析作為模糊測試的最后一個環(huán)節(jié),對得到的異常信息進(jìn)行分類、去重等工作,確定漏洞觸發(fā)的根本原因以及危害程度。協(xié)議模糊測試中部分研究工作依據(jù)崩潰信息定位漏洞的方法,存在一定局限性,因?yàn)檫@無法檢測到不會造成崩潰的語義漏洞。因此一些研究工作通過對比測試時接收到的響應(yīng)與正常情況下的響應(yīng),采用人工分析的方式找到漏洞。

        協(xié)議模糊測試中在觸發(fā)漏洞時還存在無法接收到響應(yīng)更不會引起崩潰的情況。因此,研究人員通過發(fā)送探測報(bào)文,判斷被測試程序是否存活,檢測漏洞是否存在。這種方式需要大量的人工分析確定觸發(fā)漏洞的根本原因。該步驟是模糊測試不可或缺的一部分,但模糊測試更多的是關(guān)注其他步驟的工作,因此本文不對此環(huán)節(jié)做過多的討論。

        3 物聯(lián)網(wǎng)與工控場景下的協(xié)議模糊測試技術(shù)

        近年來隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,移動支付、智能家居、智能終端等智能產(chǎn)品不斷融入到人們的生活當(dāng)中,通信網(wǎng)絡(luò)、鐵路控制系統(tǒng)、軍事指揮系統(tǒng)、工業(yè)控制系統(tǒng)已經(jīng)成為國家至關(guān)重要的基礎(chǔ)設(shè)施。因此,物聯(lián)網(wǎng)與工控設(shè)備中的網(wǎng)絡(luò)協(xié)議漏洞已經(jīng)成為網(wǎng)絡(luò)安全中不可忽視的一環(huán)。

        將模糊測試用于物聯(lián)網(wǎng)與工控領(lǐng)域具有以下挑戰(zhàn):

        a)模糊測試的執(zhí)行效率低。固件的操作環(huán)境相對惡劣,廠商通常不發(fā)布自己的固件產(chǎn)品,因此需要建立一個復(fù)雜的固件模擬器,而這種模擬器本身的效率也很低。另一個更重要的原因是物聯(lián)網(wǎng)設(shè)備對接收到數(shù)據(jù)包的協(xié)議格式有嚴(yán)格的要求。一些常見的黑盒模糊工具生成的大多數(shù)測試用例很可能是無效的。

        b)固件設(shè)備中運(yùn)行的程序難以直接提取,因?yàn)檫@些程序與其運(yùn)行的硬件配置有著高度的依賴性。此外,部分廠商還會對其產(chǎn)品進(jìn)行加密處理,這大大增加了逆向分析的難度。

        c)缺乏反饋信息。由于固件通常沒有源代碼,它們的模糊測試只能使用黑盒技術(shù)。這種方法只能根據(jù)其自身的突變策略持續(xù)執(zhí)行,并且不能判斷每個測試用例的質(zhì)量。

        3.1 物聯(lián)網(wǎng)協(xié)議模糊測試

        IoTFuzzer[51]提出可以通過與物聯(lián)網(wǎng)設(shè)備交互的手機(jī)端應(yīng)用程序獲取通信使用的協(xié)議信息。之后,對配套應(yīng)用程序進(jìn)行靜態(tài)分析,找到向物聯(lián)網(wǎng)設(shè)備發(fā)送控制命令的功能,并改變特定變量的值,在不破壞消息格式的情況下進(jìn)行模糊測試。IoTFuzzer不需要掌握協(xié)議的先驗(yàn)知識,能夠在不訪問固件的情況下,發(fā)現(xiàn)物聯(lián)網(wǎng)設(shè)備中存在的內(nèi)存類損壞漏洞。PS-Fuzz[52]經(jīng)過大量的工具同步和信息集成,可以有效地監(jiān)控固件程序的執(zhí)行狀態(tài),并在固件崩潰時獲得大量的系統(tǒng)信息。

        IoTHunter[53]結(jié)合了AFL和BooFuzz的工作實(shí)現(xiàn)了第一個用于模糊物聯(lián)網(wǎng)固件中的有狀態(tài)協(xié)議的灰盒模糊器。IOTHunter針對物聯(lián)網(wǎng)固件中的多個關(guān)鍵協(xié)議(如SNMP、FTP、SSL、BGP、SMB),解決了基于物聯(lián)網(wǎng)固件運(yùn)行時監(jiān)控的多階段消息生成機(jī)制的狀態(tài)調(diào)度問題。Wang等人[54]通過構(gòu)建符合規(guī)范的測試用例對用于醫(yī)療器械的DICOM協(xié)議進(jìn)行模糊測試。這種方法不適用于測試報(bào)文類型多、狀態(tài)轉(zhuǎn)換復(fù)雜的協(xié)議。

        Snipuzz[55]實(shí)現(xiàn)了一種輕量級的高效黑盒模糊測試方法。Snipuzz使用一種新的啟發(fā)式算法檢測輸入報(bào)文中每個字節(jié)的語義信息。首先,逐個改變輸入序列中的字節(jié)生成探測報(bào)文,并將從設(shè)備中收集到的響應(yīng)進(jìn)行分類。具有相同語義的相鄰字節(jié)形成初始報(bào)文片段并將其作為突變的基本單元。此外,Snipuzz利用相似度得分以及層次聚類策略,減少了響應(yīng)因隨機(jī)性和固件內(nèi)部機(jī)制導(dǎo)致的錯誤分類。因此,Snipuzz作為一種黑盒模糊器,仍然可以在沒有協(xié)議規(guī)范和設(shè)備內(nèi)部執(zhí)行信息的情況下,有效地測試物聯(lián)網(wǎng)設(shè)備中的協(xié)議程序。

        3.2 工控協(xié)議模糊測試技術(shù)

        Modbus/TCP是工業(yè)上一種應(yīng)用非常廣泛的協(xié)議,可以用于家庭的空氣監(jiān)視器,或者在工廠中用于機(jī)械臂的通信。為了更有效地測試Modbus/TCP,研究人員找到許多好的方法。為了獲得有效的測試用例,大多數(shù)突變方法都使用基于語法的突變來改變數(shù)據(jù)內(nèi)容。MTF[56]可以測試八個Modbus/TCP的實(shí)現(xiàn)。為了避免太多無效的測試數(shù)據(jù)點(diǎn),MTF首先調(diào)查被測試的設(shè)備(device of test,DUT)具有哪些函數(shù)代碼,然后測試特定類型的突變。Xiong等人[57]為了減少測試的次數(shù),首先確認(rèn)DUT有哪些功能代碼,然后不發(fā)送相關(guān)的測試數(shù)據(jù)。這兩個方法的缺點(diǎn)是,用戶在開始執(zhí)行突變和測試之前,都需要遍歷所有的功能代碼。MTF-Storm對MTF進(jìn)行了改進(jìn)[58]。與隨機(jī)生成的數(shù)據(jù)相比,MTF-Storm使用一些特殊值來觸發(fā)這些漏洞。

        測試用例生成的質(zhì)量是許多工控協(xié)議研究人員關(guān)注的重點(diǎn),他們通過動態(tài)分析、逆向分析、深度學(xué)習(xí)等方法推斷協(xié)議格式,按照定義的規(guī)則自動化地生成測試用例。楊亞輝等人[59]針對工控協(xié)議開發(fā)了ICPPfuzz,采用基于流量分析的逆向方法推斷出協(xié)議格式并構(gòu)建狀態(tài)機(jī),高效地生成測試用例。Yoo等人[60]使用程序執(zhí)行中獲取的動態(tài)信息以及找到輸入的語法信息生成測試數(shù)據(jù)。Niedermaier等人[61]使用atcliff/Obershelp模式識別算法來分析工控私有協(xié)議的格式,并創(chuàng)建測試數(shù)據(jù)包,它可以確定設(shè)備之間特定的交互過程。姜亞光等人[62]使用長短期記憶神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)西門子S7協(xié)議的格式,進(jìn)而區(qū)分出輸入序列中的靜態(tài)字段以及動態(tài)字段,通過僅對動態(tài)字段進(jìn)行變異生成符合格式的測試用例。王田原等人[63]通過深度學(xué)習(xí)技術(shù)推斷協(xié)議格式,開發(fā)了一款通用的工控協(xié)議模糊測試框架PGNFuzz。李文軒等人[64]提出相較于深度學(xué)習(xí)模型,樹模型能夠更好地體現(xiàn)出協(xié)議字段間的存在相關(guān)性以及嵌套關(guān)系。在此基礎(chǔ)上,又通過提取協(xié)議字段的優(yōu)先級信息,生成高質(zhì)量的測試用例,提高漏洞發(fā)現(xiàn)幾率。張冠宇等人[65]通過加入動態(tài)適應(yīng)度函數(shù)改善遺傳算法過早收斂的問題,降低了測試用例之間的相似度,從而提高測試用例覆蓋率。

        物聯(lián)網(wǎng)與工控設(shè)備環(huán)境下的協(xié)議模糊測試工作是當(dāng)前研究的重點(diǎn)方向。因?yàn)樵谶@些固件設(shè)備中存在大量為適應(yīng)特殊環(huán)境而構(gòu)建的私有協(xié)議,這為格式推斷帶來了很大的挑戰(zhàn)。為了盡快推出新產(chǎn)品,開發(fā)人員總是傾向于在固件開發(fā)中使用開源組件,但是缺乏很好的更新計(jì)劃[66]。這無疑犧牲了固件設(shè)備的安全性,暴露出安全團(tuán)隊(duì)無法迅速補(bǔ)救的漏洞。由于物聯(lián)網(wǎng)設(shè)備沒有可靠的網(wǎng)絡(luò)連接,即使供應(yīng)商計(jì)劃修復(fù)其產(chǎn)品中的漏洞,固件設(shè)備也很難獲取補(bǔ)丁,所以開發(fā)固件的協(xié)議模糊測試工具是當(dāng)前的迫切需求。

        4 分析與展望

        協(xié)議作為網(wǎng)絡(luò)通信的基礎(chǔ)設(shè)施,一直是模糊測試的重點(diǎn)目標(biāo)。前文對協(xié)議模糊測試研究方法進(jìn)行了對比分析,本章將闡述目前協(xié)議模糊測試技術(shù)存在的不足,并指出未來的研究方向。

        4.1 主要問題

        協(xié)議模糊測試目前已經(jīng)取得了大量的研究成果,但仍然存在以下幾個方面的問題:

        a)當(dāng)前基于生成的協(xié)議模糊器自動化程度普遍不高。這些工具大多依賴推斷出的協(xié)議格式以及狀態(tài)機(jī)生成測試用例。手工化的推斷方式雖然可以獲取準(zhǔn)確的結(jié)果,但是需要掌握協(xié)議的先驗(yàn)知識,以及花費(fèi)大量的人工時間。自動化程度高的協(xié)議逆向技術(shù)應(yīng)用不夠廣泛,雖然協(xié)議逆向已經(jīng)取得了大量的研究成果,但是應(yīng)用到協(xié)議中的僅占一小部分。

        b)物聯(lián)網(wǎng)以及工控設(shè)備中大多是不公開源碼的私有協(xié)議,并且執(zhí)行環(huán)境給模糊測試帶來了很大的挑戰(zhàn)。這些固件設(shè)備中的協(xié)議進(jìn)行模糊測試造成設(shè)備崩潰時,需要重新啟動,降低了效率。測試固件中的閉源程序時,現(xiàn)有的模糊測試工具不能獲取有效的反饋信息,無法進(jìn)一步測試有價值的種子。

        c)目前灰盒協(xié)議模糊測試技術(shù)普遍存在速度低的問題。這些工具雖然都使用不同的方式表示協(xié)議的狀態(tài),但是這并不能保證對所有的狀態(tài)進(jìn)行測試。程序插樁統(tǒng)計(jì)覆蓋率不可避免地要引入開銷。另一方面,模糊測試工具需要與測試程序進(jìn)行同步,同樣會引入時間開銷。

        綜上所述,協(xié)議模糊測試技術(shù)存在上述問題的主要原因是協(xié)議自身的特殊性與復(fù)雜性。對協(xié)議進(jìn)行模糊測試需要考慮生成的輸入是否滿足協(xié)議的格式。通過推斷格式構(gòu)造輸入難免會增加協(xié)議模糊測試的復(fù)雜度,不利于自動化水平的提高。突變的方式往往會產(chǎn)生大量冗余的無效種子,需要在兩者之間找到一個平衡。

        4.2 展望

        綜上所述,協(xié)議模糊測試可以從以下幾個方面開展研究:

        a)協(xié)議格式逆向技術(shù)與模糊測試緊密結(jié)合,減少測試人員參與的時間。吸收當(dāng)前協(xié)議逆向技術(shù)的最新進(jìn)展,同時提高自動化程度與精確度。當(dāng)前的協(xié)議逆向技術(shù)已經(jīng)能夠自動化地推斷出準(zhǔn)確性很高的協(xié)議規(guī)范,用于模糊測試中指導(dǎo)種子生成。在定義測試用例規(guī)則時,要同時考慮格式以及語義信息,這樣才能生成符合規(guī)范的測試用例。此外,采用結(jié)構(gòu)化的變異策略防止生成過多類似的測試用例,提高觸發(fā)漏洞的幾率。

        b)測試閉源協(xié)議程序時靜態(tài)插裝的方式已經(jīng)無法適用,可以采取動態(tài)的方法實(shí)現(xiàn)對不同環(huán)境中協(xié)議程序的插樁,獲取執(zhí)行過程中的反饋信息更為可行。比如,系統(tǒng)調(diào)用具有收集過程難度低、開銷小的特點(diǎn),可以將其執(zhí)行狀態(tài)作為重要的反饋信息,為種子分配能量。運(yùn)用快照技術(shù)保存崩潰信息以及測試用例,這樣既可以復(fù)現(xiàn)崩潰,也可以快速地啟動設(shè)備到需要測試的狀態(tài)。

        c)當(dāng)前模糊測試與機(jī)器學(xué)習(xí)[67]、符號執(zhí)行[68]、優(yōu)化算法[69]相結(jié)合取得了大量的研究成果。協(xié)議模糊器同樣可以借鑒這些工具的方法,提升漏洞檢測能力。比如,基于突變的模糊測試工具可以通過神經(jīng)網(wǎng)絡(luò)過濾無效的測試用例,提高執(zhí)行效率。利用符號執(zhí)行技術(shù),協(xié)助模糊器探測難以達(dá)到的路徑以及狀態(tài)空間,提高發(fā)現(xiàn)漏洞的幾率。將多目標(biāo)優(yōu)化等算法應(yīng)用于協(xié)議模糊測試中種子的變異過程,提高生成的測試用例質(zhì)量。

        5 結(jié)束語

        協(xié)議模糊測試技術(shù)作為檢測協(xié)議中漏洞最有效的方式,已經(jīng)被廣泛應(yīng)用,并且取得了大量的研究成果。本文首先概述了協(xié)議模糊測試的發(fā)展歷程,對協(xié)議模糊測試的各個階段進(jìn)行了總結(jié)分析;其次分析了固件設(shè)備中模糊測試取得的成果;最后總結(jié)協(xié)議模糊測試技術(shù)中存在的挑戰(zhàn),并對未來的發(fā)展方向進(jìn)行了展望。

        參考文獻(xiàn):

        [1]Mohurle S, Patil M. A brief study of WannaCry threat: Ransomware attack 2017[J].International Journal of Advanced Research in Computer Science,2017,8(5):1938-1940.

        [2]Miller B P, Fredriksen L, So B. An empirical study of the reliability of UNIX utilities[J].Communications of the ACM,1990,33(12):32-44.

        [3]Hawkes B. Project zero five years of ‘make 0-day hard’[EB/OL].(2019-08-07). https://i.blackhat.com/USA-19/Thursday/us-19-Hawkes-Project-Zero-Five-Years-Of-Make-0day-Hard.pdf.

        [4]Kaksonen R, Laakso M, Takanen A. Software security assessment through specification mutations and fault injection[C]//Proc of Communications and Multimedia Security Issues of the New Century. Berlin: Springer,2001:173-183.

        [5]Eddington M. Peach fuzzing platform[EB/OL].(2013-10-18).https://gitlab.com/peachtech/peach-fuzzer-community.

        [6]Amini P, Portnoy A, Sears R. Sulley[EB/OL].(2019-02-15)[2022-06-02].https://github.com/OpenRCE/sulley.

        [7]Pham V T, Bhme M, Roychoudhury A. AFLNet: a greybox fuzzer for network protocols[C]//Proc of the 13th International Conference on Software Testing, Validation and Verification. Piscataway, NJ: IEEE Press, 2020:460-465.

        [8]Munea T L, Lim H, Shon T. Network protocol fuzz testing for information systems and applications: a survey and taxonomy[J].Multimedia Tools and Applications,2016,75(22):14745-14757.

        [9]Hu Zhihao, Pan Zulie. A systematic review of network protocol fuz-zing techniques[C]//Proc of the 4th Advanced Information Management, Communicates, Electronic and Automation Control Conference.Piscataway,NJ:IEEE Press,2021:1000-1005.

        [10]Gorbunov S, Rosenbloom A. AutoFuzz: automated network protocol fuzzing framework[J].International Journal of Computer Science and Network Security,2010,10(8):239.

        [11]Aitel D. An introduction to SPIKE, the fuzzer creation kit[EB/OL].(2021-01-07)[2022-06-02].https://www.blackhat.com/presentations/bh-usa-02/bh-us-02-aitel-spike.ppt.

        [12]Foundstone Free Tools. WSDigger[EB/OL].(2008-02-18)[2022-06-02].https://foundstone-wsdigger.updatestar.com/en.

        [13]Banks G, Cova M, Felmetsger V, et al. SNOOZE: toward a stateful network protocol fuzzer[C]//Proc of International Conference on Information Security. Berlin: Springer,2006:343-358.

        [14]Neves N, Antunes J, Correia M, et al. Using attack injection to discover new vulnerabilities[C]//Proc of International Conference on Dependable Systems and Networks. Piscataway, NJ: IEEE Press, 2006: 457-466.

        [15]Joshua P. BooFuzz[EB/OL]. (2022-01-31) [2022-06-02]. https://github. com/jtpereyda/boofuzz.

        [16]Miki H, Setou M, Kaneshiro K, et al. All kinesin superfamily protein, KIF, genes in mouse and human[J].Proceedings of the National Academy of Sciences,2001,98(13):7004-7011.

        [17]Overell P. RFC 2234, Augmented BNF for syntax specifications: ABNF[EB/OL].(1997-11-03)[2022-06-02].https://doi.org/10.17487/RFC2234.

        [18]Needleman S B. A general method applicable to the search for similarities in the amino acid sequence of two proteins[J].Journal of Molecular Biology,1970,48(3):443-453.

        [19]Beddoe M A. Network protocol analysis using bioinformatics algorithms[J].Toorcon,2004,26(6):1095-1098.

        [20]Krueger T, Gascon H, Krmer N, et al. Learning stateful models for network honeypots[C]//Proc of the 5th ACM Workshop on Security and Artificial Intelligence.New York:ACM Press,2012:37-48.

        [21]Peng Hui, Shoshitaishvili Y, Payer M. T-Fuzz: fuzzing by program transformation[C]//Proc of IEEE Symposium on Security and Privacy. Piscataway, NJ: IEEE Press, 2018: 697-710.

        [22]Ma Rui, Wang Daguang, Hu Changzhen, et al. Test data generation for stateful network protocol fuzzing using a rule-based state machine[J].Tsinghua Science and Technology,2016,21(3):352-360.

        [23]De Ruiter J, Poll E. Protocol state fuzzing of TLS implementations[C]//Proc of the 24th USENIX Security Symposium.Berkeley:USENIX Association,2015:193-206.

        [24]Angluin D. Learning regular sets from queries and counterexamples[J].Information and Computation,1987,75(2):87-106.

        [25]Jero S, Pacheco M L, Goldwasser D, et al. Leveraging textual specifications for grammar-based fuzzing of network protocols[C]//Proc of AAAI Conference on Artificial Intelligence.Palo Alto,CA:AAAI Press,2019:9478-9483.

        [26]Wang Jiajie, Guo Tao, Zhang Puhan, et al. A model-based behavioral fuzzing approach for network service[C]//Proc of the 3rd Internatio-nal Conference on Instrumentation, Measurement, Computer, Communication and Control.Piscataway,NJ:IEEE Press,2013:1129-1134.

        [27]Wong E, Zhang Lei, Wang Song, et al. Dase: document-assisted symbolic execution for improving automated software testing[C]//Proc of the 37th IEEE International Conference on Software Enginee-ring.Piscataway,NJ:IEEE Press,2015:620-631.

        [28]Gascon H, Wressnegger C, Yamaguchi F, et al. PULSAR: stateful black-box fuzzing of proprietary network protocols[C]//Proc of International Conference on Security and Privacy in Communication Systems.Berlin:Springer,2015:330-347.

        [29]Blumbergs B, Vaarandi R. Bbuzz: a bit-aware fuzzing framework for network protocol systematic reverse engineering and analysis[C]//Proc of IEEE Military Communications Conference.Piscataway,NJ:IEEE Press,2017:707-712.

        [30]Natella R. StateAFL: greybox fuzzing for stateful network servers[J].Empirical Software Engineering,2022,27(7):1-31.

        [31]Li Junqiang, Li Senyi, Sun Gang, et al. SNPSFuzzer: a fast greybox fuzzer for stateful network protocols using snapshots[C]//Proc of IEEE Trans on Information Forensics and Security.Piscataway,NJ:IEEE Press,2022:2673-2687.

        [32]Andronidis A, Cadar C. SnapFuzz: high-throughput fuzzing of network applications[C]//Proc of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis.New York:ACM Press,2022:340-351.

        [33]Zalewski M. American fuzzy lop[EB/OL].[2022-06-04].http://lcamtuf. coredump.cx/afl.

        [34]Liu Dongge, Pham V T, Ernst G, et al. State selection algorithms and their impact on the performance of stateful network protocol fuz-zing[C]//Proc of IEEE International Conference on Software Analysis, Evolution and Reengineering.Piscataway,NJ:IEEE Press,2022:720-730.

        [35]Kitagawa T, Hanaoka M, Kono K. A state-aware protocol fuzzer based on application-layer protocols[J].IEICE Trans on Information and Systems,2011,94(5):1008-1017.

        [36]張蔚瑤,張磊,毛建瓴,等.未知協(xié)議的逆向分析與自動化測試[J].計(jì)算機(jī)學(xué)報(bào),2020,43(4):653-667.(Zhang Weiyao, Zhang Lei, Mao Jianling, et al. An automated method of unknown protocol fuzzing test[J].Chinese Journal of Computers,2020,43(4):653-667.)

        [37]Zhang Saidan, Zhang Luyong. Vulnerability mining for network protocols based on fuzzing[C]//Proc of the 2nd International Conference on Systems and Informatics.Piscataway,NJ:IEEE Press,2014:644-648.

        [38]Zhao Jingling, Chen Shilei, Liang Shurui, et al. RFSM-Fuzzing a smart fuzzing algorithm based on regression FSM[C]//Proc of the 8th International Conference on P2P, Parallel, Grid, Cloud and Internet Computing.Piscataway,NJ:IEEE Press,2013:380-386.

        [39]Fiterau-Brostean P, Jonsson B, Merget R, et al. Analysis of DTLS implementations using protocol state fuzzing[C]//Proc of the 29th USENIX Security Symposium.Berkeley:USENIX Association,2020:2523-2540.

        [40]Raffelt H, Steffen B, Berg T. LearnLib: a library for automata lear-ning and experimentation[C]//Proc of the 10th International Workshop on Formal Methods for Industrial Critical Systems.New York:ACM Press,2005:62-71.

        [41]Han Xing, Wen Qiaoyan, Zhang Zhao. A mutation-based fuzz testing approach for network protocol vulnerability detection[C]//Proc of the 2nd International Conference on Computer Science and Network Technology.Piscataway,NJ:IEEE Press,2012:1018-1022.

        [42]Ma Rui, Zhu Tianbao, Hu Changzhen, et al. SulleyEX:a fuzzer for stateful network protocol[M]//Yan Zheng, Molva R, Mazurczyk W, et al. Network and System Security.Cham:Springer,2017:359-372.

        [43]Qin Shisong, Hu Fan, Zhao Bodong, et al. NSFuzz: towards efficient and state-aware network service fuzzing[J/OL].ACM Trans on Software Engineering and Methodology.(2023-03-31).https://doi.org/10.1145/3580598.

        [44]Wang Jiajie, Guo Tao, Zhang Puhan, et al. A model-based behavioral fuzzing approach for network service[C]//Proc of the 3rd Internatio-nal Conference on Instrumentation, Measurement, Computer, Communication and Control.Piscataway,NJ:IEEE Press,2013:1129-1134.

        [45]Song Congxi, Yu Bo, Zhou Xu, et al. SPFuzz:a hierarchical scheduling framework for stateful network protocol fuzzing[J].IEEE Access,2019,7:18490-18499.

        [46]Tsankov P, Dashti M T, Basin D. SECFuzz: fuzz-testing security protocols[C]//Proc of the 7th International Workshop on Automation of Software Test.Piscataway,NJ:IEEE Press,2012:1-7.

        [47]Somorovsky J. Systematic fuzzing and testing of TLS libraries[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2016:1492-1504.

        [48]胡志濠,潘祖烈.基于QRNN的網(wǎng)絡(luò)協(xié)議模糊測試用例過濾方法[J].計(jì)算機(jī)科學(xué),2022,49(5):318-324.(Hu Zhihao, Pan Zulie. Testcase filtering method based on QRNN for network protocol fuzzing[J].Computer Science,2022,49(5):318-324.)

        [49]Yu Yingchao, Chen Zuoning, Gan Shutao, et al. SGPFuzzer: a state driven smart graybox protocol fuzzer for network protocol implementations[J].IEEE Access,2020,8:198668-198678.

        [50]Zou Yonghao, Bai Jiaju, Zhou Jielong, et al. TCP-Fuzz: detecting memory and semantic bugs in TCP stacks with fuzzing[C]//Proc of USENIX Annual Technical Conference.Berkeley:USENIX Association,2021:489-502.

        [51]Chen Jiongyi, Diao Wenrui, Zhao Qingchuan, et al. IoTFuzzer: dis-covering memory corruptions in IoT through App-based fuzzing[C/OL]//Proc of Network and Distributed Systems Security (NDSS) Symposium.(2018-02-18)[2022-06-02].http://dx.doi.org/10.14722/ndss.2018.23159.

        [52]Li Xiaoyi, Pan Xiaojun, Sun Yanbin. PS-Fuzz: efficient graybox firmware fuzzing based on protocol state[J].Journal of Artificial Intelligence,2021,3(1):21-31.

        [53]Yu Bo, Wang Pengfei, Yue Tai, et al. Poster: fuzzing IoT firmware via multi-stage message generation[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2019:2525-2527.

        [54]Wang Zhiqiang, Li Quanqi, Wang Yazhe, et al. Medical protocol security: DICOM vulnerability mining based on fuzzing technology[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2019:2549-2551.

        [55]Feng Xiaotao, Sun Ruoxi, Zhu Xiaogang, et al. Snipuzz:black-box fuzzing of IoT firmware via message snippet inference[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2021:337-350.

        [56]Voyiatzis A G, Katsigiannis K, Koubias S. A Modbus/TCP fuzzer for testing internetworked industrial systems[C]//Proc of the 20th Conference on Emerging Technologies amp; Factory Automation.Piscataway,NJ:IEEE Press,2015:1-6.

        [57]Xiong Qi, Liu Hui, Xu Yuan, et al. A vulnerability detecting method for Modbus-TCP based on smart fuzzing mechanism[C]// Proc of IEEE International Conference on Electro/Information Technology.Piscataway,NJ:IEEE Press,2015:404-409.

        [58]Katsigiannis K, Serpanos D. MTF-Storm:a high performance fuzzer for Modbus/TCP[C]//Proc of the 23rd International Conference on Emerging Technologies and Factory Automation. Piscataway, NJ: IEEE Press, 2018: 926-931.

        [59]楊亞輝, 麻榮寬, 耿洋洋, 等. 基于工控私有協(xié)議逆向的黑盒模糊測試方法[J].計(jì)算機(jī)科學(xué),2023,50(4):323-332.(Yang Yahui, Ma Rongkuan, Geng Yangyang, et al. Black-box fuzzing method based on reverse-engineering for proprietary industrial control protocol[J].Computer Science,2023,50(4):323-332.)

        [60]Yoo H, Shon T. Grammar-based adaptive fuzzing: evaluation on SCADA Modbus protocol[C]//Proc of IEEE International Conference on Smart Grid Communications.Piscataway,NJ:IEEE Press,2016:557-563.

        [61]Niedermaier M, Fischer F, Von Bodisco A. PropFuzz—an IT-security fuzzing framework for proprietary ICS protocols[C]//Proc of International Conference on Applied Electronics.Piscataway,NJ:IEEE Press,2017:1-4.

        [62]姜亞光,陳曦,李建彬,等.基于LSTM的S7協(xié)議模糊測試用例生成方法[J].計(jì)算機(jī)工程,2021,47(7):183-188.(Jiang Yaguang, Chen Xi, Li Jianbin, et al. LSTM-based fuzzy test case generation method for S7 protocol[J].Computer Engineering,2021,47(7):183-188.)

        [63]王田原,武淑紅,李兆基,等.PGNFuzz:基于指針生成網(wǎng)絡(luò)的工業(yè)控制協(xié)議模糊測試框架[J].計(jì)算機(jī)科學(xué),2022,49(10):310-318.(Wang Tianyuan, Wu Shuhong, Li Zhaoji, et al. PGNFuzz: pointer generation network based fuzzing framework for industry control protocols[J].Computer Science,2022,49(10):310-318.)

        [64]李文軒,尚文利,和曉軍,等.基于改進(jìn)變異樹的工控協(xié)議模糊測試用例生成方法[J].計(jì)算機(jī)應(yīng)用研究,2020,37(12):3662-3666.(Li Wenxuan, Shang Wenli, He Xiaojun, et al. Fuzzing test case generation method for industrial control[J].Application Research of Computers,2020,37(12):3662-3666.)

        [65]張冠宇,尚文利,張博文,等.一種結(jié)合遺傳算法的工控協(xié)議模糊測試方法[J].計(jì)算機(jī)應(yīng)用研究,2021,38(3):680-684.(Zhang Guanyu, Shang Wenli, Zhang Bowen, et al. Fuzzy test method for industrial control protocol combining genetic algorithm[J].Application Research of Computers,2021,38(3):680-684.)

        [66]Eclipse IoT Working Group. The three software stacks required for IoT architectures IoT software requirements and how to implement then using open source technology[EB/OL].(2016-10-02)[2022-06-02].https://iot.eclipse.org/community/resources/white-papers/pdf/Eclipse%20IoT%20White%20Paper%20-%20The%20Three%20Software%20Stacks%20Required%20for%20IoT%20Architectures.pdf.

        [67]Saavedra G J, Rodhouse K N, Dunlavy D M, et al. A review of machine learning applications in fuzzing[C]//Proc of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis.New York:ACM Press,2018:95-105.

        [68]Chen Ju, Han W, Yin Mingjun, et al. SYMSAN: time and space efficient concolic execution via dynamic data-flow analysis[C]// Proc of the 31st USENIX Security Symposium.Berkeley:USENIX Association,2022:2531-2548.

        [69]Lyu Chenyang, Ji Shouling, Zhang Chao, et al. MOPT:optimized mutation scheduling for fuzzers[C]//Proc of the 28th USENIX Secu-rity Symposium.Berkeley:USENIX Association,2019:1949-1966.

        免费视频一区二区三区美女| 国产一在线精品一区在线观看| 日韩欧美国产自由二区| 中文字幕乱码琪琪一区| 91久久综合精品久久久综合| av永久天堂一区二区三区| 亚洲国产区男人本色| 国产午夜精品久久久久| 在线观看免费不卡网站| 成年性生交大片免费看| 国产精品无码不卡一区二区三区| 99久久精品一区二区三区蜜臀| 久久精品国产亚洲av热东京热| 亚洲a无码综合a国产av中文| 香蕉久久福利院| 国产欧美曰韩一区二区三区| 国产久久久自拍视频在线观看| 成年av动漫网站18禁| 中文字幕亚洲欧美日韩2019| 春色成人在线一区av| 国产日产亚洲系列首页| 无码人妻精品一区二区三| 国产又黄又大又粗视频| 日产精品一区二区三区免费| 91精品国产综合久久久蜜| 亚洲啪av永久无码精品放毛片| 日韩中文网| 91国产视频自拍在线观看| 欧美疯狂性受xxxxx喷水| 被群cao的合不拢腿h纯肉视频| 亚洲无AV码一区二区三区| 男女视频网站在线观看| 国产精品天堂avav在线| 高清无码一区二区在线观看吞精| 中文字幕a区一区三区| 色中文字幕在线观看视频| 激情综合色五月丁香六月亚洲| 亚洲欧洲综合有码无码| 亚洲日本一区二区在线| 国精产品一区一区三区有限公司杨 | 色窝窝无码一区二区三区2022|