張云菲 張月明 沈小茜 孫宇帆

摘要:模糊測試技術是一種應用模糊過程來驗證待測程序(PUT) 是否違反正確性策略的測試技術,被廣泛應用于自動化漏洞挖掘。然而,模糊測試技術在生成測試用例的過程中,由于搜索空間過大,因此存在著較大的隨機性和盲目性,無法有效率地找到潛在的漏洞。定向模糊測試技術通過定位到目標位置,提高了模糊測試的效率,被廣泛應用于缺陷復現、補丁檢驗和靜態分析驗證。通過調研大量文獻,分析了定向模糊測試的特征以及常見的模型,總結了多篇論文中定向模糊測試在目標識別、適應度、模糊優化方面使用的度量指標,闡述了當今定向模糊測試的幾種應用場景,并在最后探究了若干未來可能的發展方向。
關鍵詞:定向模糊測試;種子選擇;調度方式;缺陷復現
中圖分類號:TP311.5? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)31-0074-05
開放科學(資源服務)標識碼(OSID)
0 引言
1) 應用背景
安全測試是現代軟件最有效的漏洞檢測技術之一。在安全測試技術中,模糊測試被認為是最有效且可擴展的,它為PUT提供各種輸入,并監控異常行為,例如堆棧或緩沖區溢出、無效讀/寫、斷言故障或內存泄漏。自提出以來,模糊測試越來越受行業和學術界歡迎,并演變為適用于不同測試場景的不同類型的模糊器。
2) 模糊測試的方法、特點、不足之處
根據模糊測試對PUT內部結構的認識,模糊器可以分為黑盒、白盒或灰盒。以灰盒為例,灰盒模糊器基于來自PUT執行的反饋信息,使用進化算法來生成新的輸入和探索路徑。一般來說,模糊器的目標是在有限的時間內覆蓋盡可能多的程序狀態。這是因為從直覺上來說,代碼覆蓋率與bug覆蓋率密切相關,代碼覆蓋率高的模糊器可以發現更多的bug。然而,存在幾種測試場景,其中只涉及部分需要進行充分測試的程序狀態。例如,如果MJS(嵌入式設備的JavaScript引擎)在MSP432 ARM平臺上發現了漏洞,則在其他平臺的相應代碼中可能會出現類似的漏洞。在這種情況下,應該引導模糊器在這些重要的位置重現錯誤。另一種情況是,當bug被修復時,程序員需要檢查補丁是否完全修復了錯誤。這需要模糊器聚焦于那些補丁代碼上。在這兩種情況下,都需要引導模糊器到達PUT中的某些指定位置。
3) 定向模糊測試的發展
目前,定向模糊測試已經成為一個研究熱點,發展非常迅速。它已經超越了依賴手動標記的目標站點,基于距離的度量來區分種子優先級的原始模式。使用了新的適合度指標,例如蹤跡相似性和漏洞預測模型。當前的定向模糊測試工具不僅能自動識別目標,而且能以定向的方式暴露目標程序的行為。在不同的場景下,大量的變體已經被應用于軟件測試、例如補丁測試[1-2]、回歸測試[3]、錯誤重現[4]、知識整合、結果驗證[5-6]、節能[7]和特殊錯誤檢測[4,7]。雖然定向模糊測試發展迅速且有效,但它也有普遍的局限性和挑戰,值得進一步研究。在這種背景下,本文開展綜述,總結定向模糊測試研究進展的經驗證據。在分析定向模糊測試研究的優點和局限性的基礎上,嘗試找出當前研究中的差別,同時揭示新的研究機會,并提出進一步研究的領域。
1 研究框架
1.1 框架圖
1.2 研究方法
1.2.1 關鍵詞
根據綜述研究的主題,選取了如下關鍵詞進行文獻檢索:定向模糊測試、定向白盒模糊測試、定向灰盒模糊測試。對于白盒模糊器,檢索關鍵詞細分為符號執行、程序分析等;對于灰盒模糊器,檢索關鍵詞細分為種子選擇、調度方式、缺陷復現等。
1.2.2 搜索過程
確定關鍵詞后,小組使用以下三種方式搜索相關期刊論文:1) 在軟件工程和安全領域的頂級期刊和會議網站上搜索;2) 通過google scholar 搜索引擎搜索;3) 在ACM Digital Library中搜索。隨后對收集到的論文進行篩選,下列類型的論文將被排除在外:1) 非CCF中A類、B類的會議與期刊;2) 傳統的基于覆蓋率的模糊測試,非定向模糊測試;3) 論文較短(少于6頁),只講模糊器模型,缺少相關工作的背景介紹;4) 較過時的技術選型,如部分2017年后的白盒模糊器。
1.2.3 分析過程
將篩選后的論文進行整理,共收集到27篇相關論文。其中灰盒部分21篇,白盒部分6篇。2020—2022年12篇,2017—2019年10篇,2009—2016年5篇。根據從每篇論文中提取出的摘要、關鍵詞,首先將研究方向進行分類。之后對每篇論文的技術模型展開分析,總結其應用場景,闡述其發展趨勢與挑戰。具體而言,研究問題如下:
RQ1:定向模糊測試有哪些目標識別方法?
RQ2:定向模糊測試有哪些適應度指標?
RQ3:本文研究的定向模糊器對模糊過程具體做了怎樣的優化?
RQ4:定向模糊測試有哪些應用場景?
RQ5:定向模糊測試的發展趨勢與挑戰是怎樣的?
2 目標識別
定向模糊測試的目標識別可分為針對目標位置和針對目標bug兩類。
2.1 針對目標位置
大多數定向模糊策略的難點在于需要對PUT進行目標預標記[8-11]。手動標記依賴于關于目標位置的先驗知識,例如在源代碼中的行號,或二進制級別的虛擬內存地址,來標記目標并引導執行到所需位置。然而獲得這樣的先驗知識是具有挑戰性的,特別是對于二進制代碼。為了合理有效地設置目標位置,研究人員會使用輔助元數據,例如git提交日志中的代碼變更[2]、從錯誤跟蹤中提取的信息[4]、CVE漏洞描述中的語義[7]或深度學習模型[5-6],來識別代碼中易受攻擊的功能[5-6]、關鍵位置、語法標記、完整性檢查以及補丁相關分支[1,3],并將這些易受攻擊的代碼部分或位置設定為目標。然而,這種目標識別方案仍然依賴于額外的處理信息并在PUT上標記目標的工作。當第一次對PUT進行模糊測試或缺乏結構良好的信息時,這種方法是不合適的。
為了提高自動化程度,靜態分析工具[9,12-15]被應用于自動發現PUT中的潛在危險區域。然而,這些工具通常只適用于特定錯誤類型和編程語言。另一種定向利用編譯器sanitiser的遍(pass) 來注釋PUT中的潛在錯誤,或者進行二進制級比較來識別補丁相關的目標分支[1]。深度學習方法已被用于預測二進制[6]和抽象語法樹級別[5]的潛在易受攻擊的代碼。最后,攻擊面識別組件也被用于自動識別定向灰盒模糊測試的易受攻擊目標。
2.2 針對目標bug
定向灰盒模糊測試也可以用作特定錯誤檢測的手段。例如,UAFuzz[4]和UAFL[16]利用目標操作序列而不是目標站點來尋找釋放后使用漏洞,其存儲操作(例如,分配、使用和釋放存儲)必須以特定順序執行。AFL-HR[17]通過協同進化方法觸發了難以顯現的緩沖區溢出和整數溢出的錯誤。Greyhound[7]引導Wi-Fi客戶端表現出偏離Wi-Fi協議的異常行為。對于針對特定錯誤的定向灰盒模糊測試,不需要在PUT中標記目標,這意味著模糊器可以以進化的方式自動識別和觸發這樣的錯誤。
3 適應度指標
3.1 基于距離
AFLGo[11]在編譯時檢測源代碼,并根據PUT的調用和控制流圖中的邊數計算到目標基本塊的距離。然后在運行時,它聚合每個基本塊的距離值,計算平均值來評估種子。它根據距離對種子進行優先排序,并優先選擇更接近目標的種子。一些后續的模糊器也更新了此基于距離的方案。例如,TOFU[8]的距離度量被定義為達到目標所需的正確分支決策的數量。對于每個目標,1dVul[1]采用貪婪突變策略評估從每個測試輸入到目標分支的距離,并優先考慮更接近目標的測試輸入。SemFuzz[2]將每一個使用輸入的運行稱為模糊實例,對于每一個實例,通過內置觀測器觀察執行以測量易受攻擊函數與模糊實例的執行軌跡之間的距離。對應于最短距離的輸入被選擇為新的種子輸入,用于另一輪模糊化,直到達到任何易受攻擊函數。UAFuzz[4]則使用調用鏈的距離度量,導致目標函數更有可能同時包含分配函數和釋放函數,以檢測復雜的行為釋放后使用漏洞。不同于在傳統的距離計算中使用等權重的基本塊,AFLChurn[3]基于基本塊最近被改變的時間或改變的頻率來分配數字權重,WindRanger[18]則在計算距離時考慮偏差基本塊(即,執行軌跡開始偏離目標位置的基本塊)。基于距離的方法的一個缺點是它只關注最短的距離,因此當有多條路徑到達同一目標時,較長的選項可能會被忽略,從而導致差異。另一個缺點是在基本塊級計算距離時耗費大量的時間,在一些目標程序上,用戶報告說僅僅計算距離文件就要花費數小時。
3.2 基于相似度
相似度是由Chen等人在Hawkeye[10]中首次提出的一種度量,它在函數級別上度量種子的執行軌跡與目標的執行軌跡之間的相似度。直覺是,在“預期軌跡”中覆蓋更多功能的種子將有更多機會變異并到達目標。Hawkeye將基本塊軌跡距離與覆蓋函數相似性相結合,用于種子優先級排序和功率調度。LOLLY[19]使用用戶指定的程序語句序列作為目標,并將種子覆蓋目標序列的能力(即序列覆蓋率)作為評估種子的度量。Berry[12]通過考慮目標序列的執行上下文來升級LOLLY。這增強了具有“必要節點”的目標序列,并使用目標執行軌跡和增強的目標序列之間的相似性來區分種子的優先級。然后,相似性被擴展到覆蓋其他目標形式,例如操作、bug跟蹤和標記位置。形式上,相似性是某個度量的當前狀態和目標狀態之間的重疊程度,其中度量包括錯誤跟蹤的長度,以及覆蓋的位置、覆蓋的操作或覆蓋的功能的數量。UAFL[16]使用操作序列覆蓋來指導測試用例生成,以逐步覆蓋可能觸發釋放后使用漏洞的操作序列。UAFuzz[4]還使用序列感知的目標相似性度量來測量種子的執行和目標自由后使用錯誤跟蹤之間的相似性。相比之下,基于相似性的度量比基于距離的替代方法能夠更好地處理多目標擬合。此外,基于相似性的度量可以包括目標之間的關系,例如目標的排序[4]。最后,在基本塊級別測量基于距離的度量,這將引入相當大的開銷,而基于相似度的度量可以以相對較高的水平提高整體效率。
3.3 基于概率
研究人員通過使用一些基于深度學習的方法,預測函數的易受攻擊概率,量化種子到達目標位置的可能性。易受攻擊函數中的每個基本塊被給予靜態易受攻擊分數以測量易受攻擊概率,對于每個輸入的種子,將執行路徑上所有基本塊的靜態易受攻擊分數的總和用作適應度分數,優先考慮具有較高分數的輸入[6]。FuzzGuard [20]在模糊器生成大量新輸入后利用模型預測每個輸入的可達性。為了解決訓練的模型可能不適用于新生成的輸入的問題,FuzzGuard設計了一種具有代表性的數據選擇方法,以從每一輪變異中抽取訓練數據,從而最小化采樣數據的數量以提高效率。基于概率的方法可以擴展到指定崩潰以外的位置,例如信息的泄露,漏洞利用、特定的漏洞類型和不同的資源使用。
3.4 基于其他
TIFF[21]監視基本塊及其執行頻率,并根據執行的基本塊計算輸入的適合度。任何執行新基本塊的輸入都會被考慮進一步變異。AFLchurn[3]建議同時對所有提交進行模糊處理,但更多(最近)提交中的代碼具有更高的優先級。每個基本塊都成為目標,都被分配了一個數字權重,以衡量其最近或多久更改一次。CAFL[22]旨在滿足一系列約束條件(即目標站點和數據條件的組合),而不是到達一組目標站點。它將約束的距離定義為給定種子滿足約束的程度,并按順序排列更好地滿足約束的種子的優先級。AFL-HR[17]首次使用脆弱性特定的適應度指標來生成和保留接近暴露漏洞的測試輸入,采用了一種稱為headroom的面向漏洞的適應性度量,它指示測試輸入在給定漏洞位置暴露難以發現的漏洞(例如,緩沖區或整數溢出)的程度。
4 模糊測試優化
定向模糊測試的幾個關鍵步驟包括種子輸入、種子優先級排序、功率調度、變異器調度。下文將依次從這些方面總結模糊優化的策略。
4.1 種子輸入優化
在定向模糊測試中,一個好的種子可以引導模糊器更接近目標位置,并且能夠提高后期變異過程的性能。Zong等人的研究表明,平均而言,AFLGo[11]超過91.7%的輸入不能到達目標代碼,即無效輸入。許多模糊器對此進行了優化以提升效率,其中動態污點分析技術[21,23]和語義信息分析技術[2]可以幫助生成與輸入語法有關的有效輸入,提高了到達目標代碼,尤其是易受攻擊的目標或者安全敏感度高的目標的概率。此外深度學習技術[20]也被廣泛應用其中,在執行之前就過濾掉無法到達目標代碼的輸入,這樣可以顯著節省實際運行時間。BEACON[24]使用了輕量級靜態分析來編輯修改那些在運行時無法到達目標代碼的路徑,這樣可以在實際的模糊化運行過程中,減少執行超過80%的路徑,節省了運行時間。
4.2 種子優先級排序優化
在定向模糊測試中,為了提高測試效率,往往更接近目標的種子更先接受變異,因此需要給予高優先級。為了實現這一目標,定向模糊測試通過采用不同的適應度指標,基于控制流分析,來實現種子優先級排序。基于距離的方法[4,8,11]是一種傳統且常見的方法,該方法首先計算在調用圖或者控制流圖中基本塊到達目標位置的距離,根據距離的遠近來區分不同的種子,從而分配能量。基于相似性的方法[10,19]是基于距離的方法的改進,以種子的執行軌跡和目標的執行軌跡間的相似度作為評判標準,從而分配能量。定向混合模糊化[1,12,25]結合了白盒模糊器的精確性和灰盒模糊器的可擴展性。灰盒模糊器可以對輸入變異進行優先排序和調度,以更快速地接近目標,而白盒模糊器利用符號執行策略,可以解決復雜的路徑約束,從而獲得更精確的路徑。
4.3 功率調度優化
在定向模糊測試中,更接近目標的種子不僅需要更高的種子優先級,還需要被分配更多的功率,以產生更多的變異體。大多數定向灰盒模糊器[10-11]使用模擬退火算法來分配功率。傳統的隨機調度算法總是接受更好的解決方案,這可能陷入局部最優而忽略了全局最優解。而模擬退火算法實現了以一定的概率接受比當前更差的解決方案,因此有一定的概率跳出局部最優解,找到全局最優解。Xiaogang Zhu、Marcel B?hme提出了一種基于蟻群優化的字節級功率調度算法[3],這種算法通過回歸的方法,找出最近更改或更頻繁更改的代碼,因為這些代碼中往往有更大的概率存在bug,因此給這些字節分配更多的功率。Hongliang Liang、Lin Jiang、Lu Ai、Yini Zhang、Yue Yu等利用溫度閾值優化了基于模擬退火算法[12,19],分為探索和開發兩個階段。在探索階段,隨機變異提供的種子以產生許多新的輸入,在開發階段,從具有更高序列覆蓋的種子產生更多新的輸入。
4.4 變異器調度優化
在定向模糊測試中,可以將變異分為不同的粒度,并根據實際的模糊測試的過程來動態調整變異的粒度,這樣可以提高種子變異的精度和速度,從而增強輸入的定向性。通常的方法是先將變異分為粗粒度和細粒度,然后進行動態調整[2,6,10,13]。粗粒度的變異器往往用于批量改變字節,從而將執行目標指向脆弱的代碼塊。細粒度的變異器往往僅涉及少量字節級的修改、插入或刪除,以便監控關鍵變量。變異器調度是由經驗值控制的,隨著種子越來越接近目標,模糊器給予粗粒度變異的機會減少,而給予細粒度變異的機會增加。
5 應用場景
5.1 名詞解釋
5.1.1 缺陷復現
通過在堆棧跟蹤中設置方法調用作為目標來崩潰復制。當報告現場崩潰時,只有堆棧跟蹤和一些環境參數被發送到內部開發團隊。為了保護用戶的隱私,特定的崩潰輸入通常不可用的,定向模糊器使得內部團隊可以快速重現這類崩潰。
5.1.2 補丁檢驗
通過將已更改過的語句設置為目標來進行補丁測試。當一個關鍵組件發生更改時,研究者希望檢查其中是否引入了漏洞。一個關注這些變化的模糊器有更高的機會暴露回歸。
5.1.3 靜態分析報告驗證
靜態分析報告通過將靜態分析工具設置為報告為潛在危險的目標來驗證。在實驗中,一個工具可能會將程序的某幾行定位為潛在的緩沖區溢出,定向模糊器可以生成測試輸入,顯示漏洞確實存在[11]。
5.2 具體分析
和傳統的定向白盒模糊技術和由覆蓋引導的灰盒模糊技術CGF相比,DGF把大部分的時間花費在接近目標站點和對目標站點進行測試,減少了一些無關程序組件對測試資源的浪費。這種特性使得DGF在缺陷復現、補丁測試和靜態分析報告驗證這三個應用場景中具有出色的表現:
1) 對于缺陷復現,將崩潰站點設置為目標站點,使用DGF技術可以快速復制和獲取概念驗證性的導致崩潰的輸入。
2) 對于補丁測試,將打補丁的代碼站點設置為目標站點,使用DGF技術可以快速測試補丁是否完整。
3) 對于靜態分析報告驗證,將靜態分析報告的可疑位置設置為目標站點,使用DGF技術可以檢查報告的位置是否確實存在漏洞。
而后續研究中提出的技術又在DGF的基礎之上提高了模糊器在處理上述相關場景下的性能,下面將對不同技術在不同應用場景中的表現進行比較,用于討論的技術包括基于符號執行引擎Klee 的定向白盒模糊器Katch、BugRedux,定向灰盒模糊技術AFLGo、WindRanger,由覆蓋引導的灰盒模糊技術CGF(AFL和FairFuzz) ,根據靜態信息和執行跟蹤對執行的種子進行評估的Hawkeye,利用序列定向策略和并行執行技術來提高模糊的有效性的序列定向混合模糊技術(SDHF) ,結合了基于距離的定向模糊機制和基于主導的定向符號執行機制的補丁檢驗問題的解決方案1dVul,序列覆蓋定向模糊技術(SCDF) 。
5.3 不同技術在缺陷復現中的比較
5.3.1 定向灰盒與非定向灰盒
通過將漏洞位置設置為目標站點,DGF(AFLGo和WindRanger) 在暴露相對崩潰方面可以獲得比CGFs(AFL和FairFuzz) 更好的性能。在實驗程序的11個漏洞中,WindRanger在第9個漏洞上獲得了更好的TTE。總的來說,WindRanger在TTE上對AFL和FairFuzz中分別提高了47%和59%[18]。
5.3.2 定向灰盒與定向白盒
AFLGo在基準測試上比BugRedux有效得多,AFLGo無法復制的唯一崩潰是由于一個工程問題:AFLGo無法生成多個文件[11]。
5.3.3 定向灰盒技術之間
與AFLGo相比,30%的加速表明WindRanger具有更好的定向能力。對于難以暴露的CVEs(TTE>1小時),WindRanger明顯比其他工具快1.22×到2.2×。對于CVE-2016-4491和CVE-2016-6131,WindRanger獲得了最多的打擊回合對于CVE-2016-4489和CVE-2016-4490,WindRanger的性能并不如AFLGo。然而,這些cve只需要幾分鐘就可以很容易暴露[18]。
5.3.4 定向灰盒技術和Hawkeye
在大多數情況下,Hawkeye在到達目標地點的時間和暴露崩潰的時間方面都優于最先進的灰盒模糊器。特別是Hawkeye曝光某些崩潰的速度比最先進的AFLGo快7倍,將曝光時間從3.5小時減少到0.5小時[10]。
5.3.5 序列定向混合模糊技術與定向模糊技術(白盒BugRedux,灰盒AFLGo)
對于BugRedux的基準測試,Berry和AFLGo都可以重現崩潰,進一步比較這兩種工具觸發崩潰的時間成本,因為有更輕量的靜態分析,Berry的儀器時間比AFLGo減少很多,同時Berry的運行時間比AFLGo略短,這顯示了Berry的并行執行的優勢[10]。
5.3.6 序列覆蓋定向模糊LOLLY與AFLGo
LOLLY和AFLGo在運行時階段的性能在統計學上具有可比性。然而,在包含檢測階段和運行時階段的整個運行中,LOLLY在整體性能方面是優越的[19]。
5.4 不同技術在補丁檢驗中的比較
5.4.1 定向灰盒與定向白盒
和Katch比較,AFLGo對于之前未被發現的改變的基本區塊的覆蓋比Katch多13%。AFLGo可以覆蓋Katch無法覆蓋的84個目標,而Katch則覆蓋了AFLGo無法覆蓋的59個目標。小交集的產生可以歸因于每種技術的個別優勢,符號執行可以解決進入“隔間”(compartments) 的困難約束,否則將很難訪問。另一方面,灰盒模糊器可以快速探索許多指向目標的路徑,而不會被困在一個特定的路徑“鄰域”中[11]。
5.4.2 1dVul與定向灰盒AFLGo
1dVul已經成功地從應用程序中確定的209個補丁目標中生成了130個目標的輸入,而AFLGo只能在相同的有限時間預算內分別達到99個目標。此外,1dVul的運行速度分別比AFLGo快2.2倍,并確認了未打補丁程序的96個漏洞[1]。
6 發展趨勢與挑戰
1) 現今大部分定向模糊器評估性能的指標只有暴露時間,即暴露給定錯誤的第一個測試用例之前的模糊過程的時間,而往往忽略了額外性能開銷的測量。因此如果能夠將符號執行、靜態分析、動態污點分析、機器學習等分析技術帶來的性能開銷考慮在內,可以更全面公平地度量定向模糊器的性能。
2) 現今大部分定向模糊器在種子優先級排序時依舊基于等權重度量,即控制流圖中每個分支的跳轉都是等概率的。目前常見的優化方案如下:計算每條路徑能夠轉換為目標路徑的概率,據此進行種子的優先級排序。具體分為兩步:首先收集路徑中所有分支的概率計算路徑概率,然后基于蒙特卡羅統計方法估計分支跳轉概率。這樣做更易到達定向目標位置,使得定向模糊器的性能更高。
3) 現今大部分定向模糊器都是在源碼層面上的測試,例如根據控制流圖計算距離等都非常依賴源代碼。二進制級定向模糊器研究較少,因為存在著較大的困難。一是運行開銷大,基于仿真器的工具如QEMU等通常效率較低。二是目標識別困難,只能從錯誤跟蹤中提取目標信息,而且二進制代碼非常難以閱讀。目前的解決方案如下:一是使用硬件輔助如英特爾PT處理器跟蹤,減少運行開銷;二是基于機器學習的方法,自動識別目標二進制代碼。這推動了二進制級定向模糊器的發展。
4) 現今大部分定向模糊器在多目標任務的測試中,并沒有特別關注目標之間的關系。而如果能利用目標之間的關系進行優化,則能夠提高測試效率。目前的解決方案如下,基于空間關系:考慮它們是否共享同一個分支,以及它們的相對優先級關系。基于狀態空間的位置:考慮兩個目標是否共享同一個狀態,以及狀態轉換圖上兩個狀態是否可以相互轉換。基于多線程的情況:考慮是否存在不同的線程,它們之間相互影響,導致雖然種子到達了目標位置,但并沒有觸發bug。
參考文獻:
[1] PENG J Q,LI F,LIU B C,et al.1dVul:discovering 1-day vulnerabilities through binary patches[C]//2019 49th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN).IEEE,2019:605-616.
[2] YOU W,ZONG P Y,CHEN K,et al.SemFuzz:semantics-based automatic generation of proof-of-concept exploits[C]//Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security.New York:ACM,2017:2139-2154.
[3] ZHU X G,B?HME M.Regression greybox fuzzing[C]//Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security.New York:ACM,2021:2169-2182.
[4] NGUYEN M D,BARDIN S,BONICHON R,et al.Binary-level directed fuzzing for Use-After-Free vulnerabilities[C]//23rd International Symposium on Research in Attacks,Intrusions and Defenses (RAID2020).USENIX Association,2020:47-62.
[5] ZHU X,LIU S,LI X,et al.DeFuzz:deep learning guided directed fuzzing[EB/OL].[2022-10-20].https://arxiv.org/abs/2010. 12149.pdf.
[6] LI Y,JI S,LV C,et al.V-fuzz:vulnerability-oriented evolutionary fuzzing[EB/OL].[2022-10-20].https://arxiv.org/abs/1901.01142.pdf.
[7] GARBELINI M E,WANG C D,CHATTOPADHYAY S.Greyhound:directed greybox Wi-Fi fuzzing[J].IEEE Transactions on Dependable and Secure Computing,2022,19(2):817-834.
[8] WANG Z,LIBLIT B,REPS T.TOFU:target-oriented FUzzer[EB/OL].[2022-10-20].https://arxiv.org/abs/2004.14375.pdf.
[9] WüSTHOLZ V,CHRISTAKIS M.Targeted greybox fuzzing with static lookahead analysis[C]//Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering.New York:ACM,2020:789-800.
[10] CHEN H X,XUE Y X,LI Y K,et al.Hawkeye:towards a desired directed grey-box fuzzer[C]//Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security.New York:ACM,2018:2095-2108.
[11] B?HME M,PHAM V T,NGUYEN M D,et al.Directed greybox fuzzing[C]//Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security.Dallas Texas USA.New York,NY,USA:ACM,2017:2329-2344.
[12] LIANG H L,JIANG L,AI L,et al.Sequence directed hybrid fuzzing[C]//2020 IEEE 27th International Conference on Software Analysis,Evolution and Reengineering (SANER).IEEE,2020:127-137.
[13] SITU L Y,WANG L Z,LI X D,et al.Energy distribution matters in greybox fuzzing[C]//2019 IEEE/ACM 41st International Conference on Software Engineering:Companion Proceedings (ICSE-Companion).IEEE,2019:270-271.
[14] CHRISTAKIS M,MüLLER P,WüSTHOLZ V.Guiding dynamic symbolic execution toward unverified program executions[C]//Proceedings of the 38th International Conference on Software Engineering.New York:ACM,2016:144-155.
[15] PAK B.Hybrid fuzz testing: Discovering software bugs via fuzzing and symbolic execution[D].Pittsburgh: School of Computer Science Carnegie Mellon University,2012.
[16] WANG H J,XIE X F,LI Y,et al.Typestate-guided fuzzer for discovering use-after-free vulnerabilities[C]//Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering.New York:ACM,2020:999-1010.
[17] MEDICHERLA R K,KOMONDOOR R,ROYCHOUDHURY A.Fitness guided vulnerability detection with greybox fuzzing[C]//Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops.New York:ACM,2020:513-520.
[18] DU Z J,LI Y K,LIU Y,et al.Windranger:a directed greybox fuzzer driven by deviation basic blocks[C]//2022 IEEE/ACM 44th International Conference on Software Engineering (ICSE).IEEE,2022:2440-2451.
[19] LIANG H L,ZHANG Y N,YU Y,et al.Sequence coverage directed greybox fuzzing[C]//2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).IEEE,2019:249-259.
[20] ZONG P Y,LV T,WANG D W,et al.FuzzGuard: Filtering out unreachable inputs in directed grey-box fuzzing through deep learning[C]//29th USENIX Security Symposium (USENIX Security 20).USENIX Association,2020:2255-2269.
[21] JAIN V,RAWAT S,GIUFFRIDA C,et al.TIFF:using input type inference to improve fuzzing[C]//Proceedings of the 34th Annual Computer Security Applications Conference.New York,NY,USA:ACM,2018:505-517.
[22] LEE G,SHIM W,LEE B.Constraint-guided directed greybox fuzzing[C]//30th USENIX Security Symposium (USENIX Security 21).USENIX Association, August 2021:3559-3576.
[23] GANESH V,LEEK T,RINARD M.Taint-based directed whitebox fuzzing[C]//2009 IEEE 31st International Conference on Software Engineering.IEEE,2009:474-484.
[24] HUANG H Q,GUO Y Y,SHI Q K,et al.BEACON:directed grey-box fuzzing with provable path pruning[C]//2022 IEEE Symposium on Security and Privacy (SP).IEEE,2022:36-50.
[25] OGNAWALA S,HUTZELMANN T,PSALLIDA E,et al.Improving function coverage with munch:a hybrid fuzzing and directed symbolic execution approach[C]//Proceedings of the 33rd Annual ACM Symposium on Applied Computing.Pau France.New York,NY,USA:ACM,2018:1475-1482.
【通聯編輯:謝媛媛】