999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網絡協議模糊測試綜述

2023-12-31 00:00:00徐威李鵬張文鑌陸麗
計算機應用研究 2023年8期

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

關鍵詞:協議; 模糊測試; 漏洞挖掘; 工作流程; 固件設備安全

中圖分類號:TP309.2 文獻標志碼: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

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

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

1 協議模糊測試發展歷程

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

1.1 黑盒協議模糊測試階段

黑盒模糊測試技術僅考慮程序的輸入以及輸出,不關心執行過程中內部的狀態信息。根據輸出結果以及執行輸入后程序是否正常運行來判斷目標的狀態。黑盒模糊測試技術具有以下優勢:a)不需要程序的源碼,這對協議來說尤為重要,因為在工控以及互聯網場景下有大量的私有協議;b)設計相對簡單,便于研究人員開發;c)因為其不考慮目標程序的內部狀態信息,執行速度較快。

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

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

2006—2019年,研究人員開始通過構建協議的狀態機模型,開發有狀態的協議模糊測試工具。根據協議狀態機簡潔地表示了協議實現的關鍵狀態和轉換條件,可用于系統地指導模糊測試的過程,探測深層次的漏洞。

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

Sulley是廣泛使用的網絡協議模糊測試框架,目前已停止維護,BooFuzz[15]繼承了它的工作。Sulley具體包括數據定義、數據驅動、會話管理、監視代理、輔助工具和文件系統六大模塊。測試人員只需關注數據生成模塊中測試報文模板的編寫,其他部分都可以自動完成。

2007年Miki等人[16]開發了KIF,以解決多數模糊器僅依賴隨機注入生成測試數據,但沒有考慮目標協議程序的語法、語義以及狀態問題。KIF通過一個無上下文的ABNF[17]描述協議的確切語法。此外,基于捕獲到的通信流量,利用機器學習的方法,構建協議狀態機用于模擬系統中的狀態轉換。KIF是第一個能夠生成復雜隨機輸入的SIP協議模糊器。

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

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

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

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

1.2 灰盒協議模糊測試階段

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

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

2 協議模糊測試工作流程

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

2.1 預處理

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

2.1.1 獲取協議規范

1)從協議規范中獲取

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

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

2)通過協議逆向技術自動獲取

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

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

3)通過協議實現動態獲取

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

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

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

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

2.1.2 插樁

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

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

2.2 種子生成

根據種子生成方式的不同可以將協議模糊測試分為基于生成的和基于變異的兩類。基于生成的模糊測試方法根據預處理獲取的協議規范,生成盡可能符合要求的種子。基于突變的模糊測試方法,從一個合法的樣本出發,通過變異算法不斷地修改其中一些數據,生成一批畸形的種子。

1)基于生成的方法 基于生成的模糊測試主要是對目標程序或協議的規范有了一定掌握的前提下使用的。協議格式具有高度結構化的特點,因此基于生成的方法構建的測試用例更可能被測試目標所接受。基于生成的方法可以手動構建輸入模型,或者自動化地生成模板構建測試用例。比如,ROTOS使用最小化模型的方法,根據協議格式以及消息發送順序,針對特定目標中格式化字符串或者棧溢出等特定類型的漏洞構建測試模型。然后,根據此模型啟發式地生成測試樣本。與PROTOS不同,SPIKE利用提供的編程接口來對樣本格式進行約束,使用特定的源語測試應用程序。

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

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

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

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

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

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

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

2.3 執行過程監測

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

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

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

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

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

為了解決模糊器需要添加延時與測試程序進行消息同步的問題,NSFuzz注意到網絡應用程序的本質是使用一個網絡事件循環來監聽收到的消息,然后對消息進行處理。基于上述發現,模糊器能在服務端完成消息處理后立即發送下一條消息,從而提高模糊測試的吞吐量。

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

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

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

2.4 結果分析

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

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

3 物聯網與工控場景下的協議模糊測試技術

近年來隨著網絡技術的不斷發展,移動支付、智能家居、智能終端等智能產品不斷融入到人們的生活當中,通信網絡、鐵路控制系統、軍事指揮系統、工業控制系統已經成為國家至關重要的基礎設施。因此,物聯網與工控設備中的網絡協議漏洞已經成為網絡安全中不可忽視的一環。

將模糊測試用于物聯網與工控領域具有以下挑戰:

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

b)固件設備中運行的程序難以直接提取,因為這些程序與其運行的硬件配置有著高度的依賴性。此外,部分廠商還會對其產品進行加密處理,這大大增加了逆向分析的難度。

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

3.1 物聯網協議模糊測試

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

IoTHunter[53]結合了AFL和BooFuzz的工作實現了第一個用于模糊物聯網固件中的有狀態協議的灰盒模糊器。IOTHunter針對物聯網固件中的多個關鍵協議(如SNMP、FTP、SSL、BGP、SMB),解決了基于物聯網固件運行時監控的多階段消息生成機制的狀態調度問題。Wang等人[54]通過構建符合規范的測試用例對用于醫療器械的DICOM協議進行模糊測試。這種方法不適用于測試報文類型多、狀態轉換復雜的協議。

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

3.2 工控協議模糊測試技術

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

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

物聯網與工控設備環境下的協議模糊測試工作是當前研究的重點方向。因為在這些固件設備中存在大量為適應特殊環境而構建的私有協議,這為格式推斷帶來了很大的挑戰。為了盡快推出新產品,開發人員總是傾向于在固件開發中使用開源組件,但是缺乏很好的更新計劃[66]。這無疑犧牲了固件設備的安全性,暴露出安全團隊無法迅速補救的漏洞。由于物聯網設備沒有可靠的網絡連接,即使供應商計劃修復其產品中的漏洞,固件設備也很難獲取補丁,所以開發固件的協議模糊測試工具是當前的迫切需求。

4 分析與展望

協議作為網絡通信的基礎設施,一直是模糊測試的重點目標。前文對協議模糊測試研究方法進行了對比分析,本章將闡述目前協議模糊測試技術存在的不足,并指出未來的研究方向。

4.1 主要問題

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

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

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

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

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

4.2 展望

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

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

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

c)當前模糊測試與機器學習[67]、符號執行[68]、優化算法[69]相結合取得了大量的研究成果。協議模糊器同樣可以借鑒這些工具的方法,提升漏洞檢測能力。比如,基于突變的模糊測試工具可以通過神經網絡過濾無效的測試用例,提高執行效率。利用符號執行技術,協助模糊器探測難以達到的路徑以及狀態空間,提高發現漏洞的幾率。將多目標優化等算法應用于協議模糊測試中種子的變異過程,提高生成的測試用例質量。

5 結束語

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

參考文獻:

[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]張蔚瑤,張磊,毛建瓴,等.未知協議的逆向分析與自動化測試[J].計算機學報,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的網絡協議模糊測試用例過濾方法[J].計算機科學,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]楊亞輝, 麻榮寬, 耿洋洋, 等. 基于工控私有協議逆向的黑盒模糊測試方法[J].計算機科學,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協議模糊測試用例生成方法[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:基于指針生成網絡的工業控制協議模糊測試框架[J].計算機科學,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].計算機應用研究,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]張冠宇,尚文利,張博文,等.一種結合遺傳算法的工控協議模糊測試方法[J].計算機應用研究,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.

主站蜘蛛池模板: 在线看片免费人成视久网下载| 国产成人综合日韩精品无码首页| 扒开粉嫩的小缝隙喷白浆视频| 国产欧美视频在线| 久久综合亚洲色一区二区三区| 国产成年女人特黄特色大片免费| 日韩福利在线视频| 久久香蕉国产线看观| 国产一级毛片在线| 精品无码国产一区二区三区AV| 欧美激情伊人| 国产欧美日韩18| 国产美女自慰在线观看| 亚洲第一区在线| 日本久久久久久免费网络| 国产一区二区福利| 久久综合伊人77777| 久久婷婷国产综合尤物精品| 中文字幕无码电影| 欧美国产精品拍自| 福利视频一区| 永久免费无码成人网站| 日本三级黄在线观看| 污网站在线观看视频| 亚洲最新在线| 久久婷婷综合色一区二区| 夜夜操天天摸| 日韩精品毛片人妻AV不卡| 亚洲av片在线免费观看| 国产精品手机视频一区二区| 日本91在线| 国产精品久久精品| 狠狠亚洲五月天| 99re精彩视频| 国产精品自在在线午夜| 日韩一区二区三免费高清| 色婷婷狠狠干| 亚洲男人天堂2018| 青青草原国产一区二区| 国产幂在线无码精品| 国产97公开成人免费视频| 亚洲AV无码一二区三区在线播放| 欧美中文字幕无线码视频| 中国毛片网| 91口爆吞精国产对白第三集| 国产精品一区在线观看你懂的| 青青青视频蜜桃一区二区| 在线观看国产黄色| 欧美日韩中文国产| 亚洲美女视频一区| 亚洲人网站| 亚洲日韩精品伊甸| 91视频精品| 国产欧美日韩精品综合在线| 国产精品久久自在自线观看| 久久77777| 亚洲欧美综合在线观看| 亚洲欧美成人| 在线看片免费人成视久网下载| 免费中文字幕一级毛片| 在线a视频免费观看| 五月天天天色| 亚洲无码高清一区| 亚洲高清中文字幕| 人妖无码第一页| 亚洲成A人V欧美综合| 午夜毛片福利| 亚洲一级毛片在线播放| 国产精品人成在线播放| 久久人搡人人玩人妻精品一| 毛片视频网址| 国产又爽又黄无遮挡免费观看 | 看国产毛片| 久久动漫精品| 国产剧情国内精品原创| 老熟妇喷水一区二区三区| 91青青草视频在线观看的| 2020国产在线视精品在| 性色一区| 日韩激情成人| 国产精品视频导航| 精品国产成人国产在线|