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

        ?

        基于多目標支配分析和路徑動態(tài)修剪優(yōu)化的定向模糊測試技術(shù)

        2024-12-31 00:00:00李澤源尹中旭宗國笑桑海涯
        計算機應(yīng)用研究 2024年11期

        摘 要:當前定向模糊測試技術(shù)的平均距離模型在多目標測試中缺乏對逐個目標的指向性,在導(dǎo)向同一目標時路徑多樣化不強,且未根據(jù)不同目標的覆蓋程度動態(tài)調(diào)整距離度量,導(dǎo)致多目標測試不均衡和效率降低,難以在結(jié)合靜態(tài)分析告警等多目標環(huán)境中開展漏洞挖掘。針對以上問題,提出了一種多目標定向探索的模糊測試技術(shù)MTDFuzz,識別待遍歷多目標的支配節(jié)點,利用基于多目標支配分析的測試用例優(yōu)選,通過支配節(jié)點覆蓋評分激勵機制引導(dǎo)生成能夠覆蓋支配節(jié)點和目標的測試用例,實現(xiàn)在限定關(guān)鍵覆蓋要素的前提下,對目標路徑的多樣化和指向性探索;根據(jù)目標的覆蓋狀態(tài)進行路徑動態(tài)修剪優(yōu)化,已被充分測試的路徑和目標不參與距離信息反饋,通過剪枝和全局支配節(jié)點修正動態(tài)調(diào)整支配節(jié)點和目標基本塊評分,利用支配節(jié)點覆蓋度優(yōu)化種子調(diào)度策略,實現(xiàn)對多目標測試資源的有效分配。實驗結(jié)果表明:與常用的定向模糊測試工具對比,多目標下MTDFuzz的平均漏洞發(fā)現(xiàn)時間縮短了57.6%,且在Glibc、FFmpeg等4個開源程序中發(fā)現(xiàn)了12個未公開漏洞,顯著提高了定向模糊測試的多目標探索能力和漏洞挖掘效率。

        關(guān)鍵詞:定向模糊測試; 漏洞挖掘; 多目標導(dǎo)向; 程序分析

        中圖分類號:TP311 文獻標志碼:A

        文章編號:1001-3695(2024)11-037-3455-09

        doi: 10.19734/j.issn.1001-3695.2024.01.0060

        Directional fuzzing based on multi-objective domination analysis andpath dynamic pruning optimization

        Li Zeyuan, Yin Zhongxu?, Zong Guoxiao, Sang Haiya

        (School of Cyberspace Security, Information Engineering University, Zhengzhou 450001, China)

        Abstract:Current directed fuzzing techniques suffer from a lack of specificity towards individual targets in multi-target testing, limited path diversity when aiming at the same target, and a failure to dynamically adjust distance metrics based on the coverage level of different targets, leading to imbalanced testing and reduced efficiency in environments that integrate static analysis alerts for vulnerability mining. To address these issues, this paper introduced MTDFuzz, a multi-target directed exploration fuzzing technique that identified dominating nodes for targeted traversal. By leveraging test case optimization through multi-objective dominance analysis and a coverage score incentive mechanism, MTDFuzz generated test cases that covered both dominating nodes and targets, enabling diversified and directed exploration of target paths within the constraints of key coverage elements. The technique dynamically pruned paths based on target coverage, excluding thoroughly tested paths and targets from distance metric feedback. Through pruning and global dominating node adjustment, it dynamically tuned the scores of dominating nodes and target basic blocks, optimizing seed scheduling strategies based on dominating node coverage to efficiently allocate multi-target testing resources. Experimental results demonstrate that MTDFuzz significantly reduces the average time to discover vulnerabilities by 57.6% compared to commonly used directed fuzzing tools, and has uncovered 12 0-day vulnerabilities in four open-source programs, including Glibc and FFmpeg, significantly enhancing the multi-target exploration capability and vulnerability mining efficiency of directed fuzzing.

        Key words:directed fuzzing; vulnerability mining; multi-objective orientation; program analysis

        0 引言

        模糊測試[1~3]作為一種自動化軟件測試技術(shù),已經(jīng)成為現(xiàn)代大規(guī)模軟件和系統(tǒng)中探索安全漏洞最有效的方法之一。定向模糊測試基于覆蓋率引導(dǎo)的灰盒模糊測試技術(shù)通過加入額外的目標或約束來引導(dǎo)測試的執(zhí)行方向,以生成更為高效和具針對性的測試用例。AFLGo[4]揭開了現(xiàn)代化定向模糊測試的序幕,通過預(yù)先標記代碼目標并預(yù)置控制流距離,對距離目標較近的種子賦予更多的能量,進而引導(dǎo)種子快速抵達目標并觸發(fā)漏洞。之后,定向模糊測試的研究延伸至與靜態(tài)分析、符號執(zhí)行等技術(shù)的結(jié)合,以生成能達到更復(fù)雜程序結(jié)構(gòu)(如覆蓋特定分支或語句)的測試用例。這些早期工作證明,定向模糊測試可以顯著提高漏洞挖掘以及復(fù)現(xiàn)的效率和準確性,并廣泛應(yīng)用于補丁的有效性檢測、漏洞復(fù)現(xiàn)、crash可利用性評估、驗證靜態(tài)分析的結(jié)果從而消除誤報,以及一些獨特類型的漏洞挖掘等領(lǐng)域。盡管定向模糊測試技術(shù)不斷發(fā)展并取得了顯著進步,但現(xiàn)有技術(shù)主要側(cè)重于對單一或少量測試目標的針對性測試,在同時針對較多的目標進行測試時往往存在目標偏好的情況,缺乏均衡性,且難以將定向模糊測試的高效率和指向性直接用于未知漏洞挖掘。為滿足軟件漏洞挖掘的實際需求,需要一種能夠均衡導(dǎo)向至多個測試目標的模糊測試技術(shù)。

        本文的主要貢獻如下:

        a)提出一種基于多目標支配分析的測試用例優(yōu)選方法,對執(zhí)行到目標起著決定性作用的支配節(jié)點進行錨定,根據(jù)基于支配節(jié)點覆蓋度的種子調(diào)度策略,通過支配節(jié)點覆蓋評分激勵引導(dǎo)生成覆蓋支配節(jié)點和目標位置的種子,實現(xiàn)在限定關(guān)鍵覆蓋要素的前提下,對目標路徑進行多樣化和指向性探索。

        b)提出一種基于目標覆蓋狀態(tài)的路徑修剪方法,能夠支撐隨測試過程和目標覆蓋情況,不采用已充分測試的目標路徑參與測試用例評分計算,對支配節(jié)點和目標基本塊的評分進行動態(tài)調(diào)整,該方法對逐個目標的針對性更強,實現(xiàn)了對多目標的高效探索和漏洞發(fā)現(xiàn)。

        c)基于以上方法實現(xiàn)了多目標定向模糊測試原型系統(tǒng)MTDFuzz,與AFL++、AFLGo、LeoFuzz、SieveFuzz等模糊測試工具進行相關(guān)對比實驗并發(fā)現(xiàn)了12個未公開漏洞,證明本文工作的有效性與實用性。

        1 背景

        1.1 定向模糊測試

        如圖1所示,現(xiàn)有的主流定向模糊測試方法在靜態(tài)分析階段使用程序分析方法,提取程序中與目標相關(guān)的導(dǎo)向信息(如到目標位置的距離、與目標相關(guān)的代碼以及執(zhí)行路徑上的約束信息等),并將導(dǎo)向信息插樁到程序中,用于后續(xù)動態(tài)過程的針對性引導(dǎo)。在動態(tài)分析時,首先進入探索(exploration)階段,即利用代碼覆蓋率信息提升語料庫的覆蓋率,避免陷入局部最優(yōu),隨后進入利用(exploitation)階段,此時利用靜態(tài)分析得到的導(dǎo)向性信息,對種子的變異、調(diào)度,以及種子隊列進行調(diào)整,實現(xiàn)導(dǎo)向性測試。

        現(xiàn)有的定向模糊測試方法主要分為三類:a)最小距離算法引導(dǎo)的定向模糊測試,如AFLGo、Hawkeye[5],這些方法通過感知種子與目標的距離,為“更接近”的種子提供更多調(diào)度和變異機會;b)修剪輸入空間或修剪代碼空間,例如Beacon[6]前置路徑約束以提前截斷不可達路徑,F(xiàn)uzzGuard[7]使用深度學(xué)習(xí)模型來過濾無效測試用例,而SieveFuzz[8]引入一種跳閘機制,將模糊測試的搜索空間限制在只與達到指定目標位置相關(guān)的范圍內(nèi),WindRanger[9]通過識別偏移基本塊以避免測試與目標無關(guān)的代碼區(qū)域;c)前置分析結(jié)果指導(dǎo)的綜合性優(yōu)化,如AFLChurn[10]運用蟻群算法優(yōu)化目標相關(guān)的字節(jié)級變異,提高覆蓋最近更新或頻繁修改的代碼區(qū)域的種子能量,這類區(qū)域存在“回歸”漏洞的概率較高,SAVIOR[11]、FISHFUZZ[12]和ParmeSan[13]通過Sanitizer標記大量潛在漏洞監(jiān)測點后,設(shè)計不同的平均值距離算法來指導(dǎo)模糊測試優(yōu)先探索這些監(jiān)測點,但是未設(shè)計特定的多目標定向探索策略,仍然依賴于AFL的“遺傳進化”的思想,給隨機變異生成最終覆蓋目標位置的種子賦予更多的能量,未考慮目標之間的關(guān)系以及測試是否充分。

        1.2 問題描述

        雖然上述定向模糊測試方法在針對特定目標的測試上取得了一些進展,但仍然存在以下兩個方面的問題:

        問題a):現(xiàn)有方法針對多個目標采用平均距離描述路徑的接近程度,適合于同一目標多個路徑點位的場景設(shè)定,但是對不同分支差異較大的多個目標難以準確評判,造成測試對多目標的覆蓋性較差。

        現(xiàn)有的定向距離模型計算目標距離時[4,5,9,14],過度關(guān)注執(zhí)行路徑上距離最小的測試用例,導(dǎo)致最短路徑優(yōu)先,不利于測試路徑的多樣性。在多目標環(huán)境下,當前種子距離計算算法過度關(guān)注與目標位置最近的執(zhí)行路徑,對路徑多樣性缺乏適應(yīng)性,缺少對能到達相同目標的其他路徑的關(guān)注。漏洞挖掘需要滿足完整的路徑約束以及合適的數(shù)據(jù)流和控制流關(guān)系,最短路徑并不一定是漏洞觸發(fā)路徑,給予距離最近的種子較高權(quán)重可能會導(dǎo)致實際能觸發(fā)漏洞的測試用例得不到足夠調(diào)度,甚至出現(xiàn)定向模糊測試(DGF)偏好無法覆蓋任何目標位置的種子的情況,以下舉例說明。

        以圖2中的過程間控制流圖為例,按照AFLGo的距離算法計算w、x、y、z四個種子的距離并排序:四個種子的執(zhí)行軌跡分別是Trace(w)=A→B→C→D,Trace(x)=A→F→G→H→I→J,Trace(y)=A→F→L→M→N→O→P→Q→R→T,Trace(z)=A→F→L→M→R→S。

        在多目標環(huán)境下,基本塊的距離計算采用了調(diào)和平均值,比如基本塊A的距離Dist(A)=3/(1/5+1/3+1/5)=45/11=4.1,基本塊F的距離為Dist(F)=2/(1/4+1/4)=4。基于基本塊距離計算四個種子的距離:Dist(w)=(45/11+2+1)/3≈2.36,Dist(x)=(45/11+4+3+2+1)/5≈2.82,Dist(y)=(45/11+4+3+2+5+4+3+2+1)/9≈3.12,Dist(z)=(45/11+4+3+2+1)/5≈2.82。

        根據(jù)定向模糊測試的期望特性[5],能覆蓋目標或者“距離”目標近的種子應(yīng)獲得更高的能量和優(yōu)先級。在這四個種子中,種子z沒有到達任何目標,理論上,max{Dist(w),Dist(x),Dist(y)}應(yīng)小于Dist(z),然而Dist(z)=Dist(x)lt;Dist(y),表明未覆蓋任何目標的種子z比覆蓋了目標T的種子獲得了更多能量和更高優(yōu)先級。

        問題b):沒有動態(tài)統(tǒng)籌考慮多個目標的測試情況,依賴靜態(tài)距離的方式,隨著已經(jīng)遍歷過的目標逐漸增多,未隨著目標的遍歷情況動態(tài)調(diào)整,向未覆蓋目標傾斜測試資源。

        在對測試資源進行分配時,關(guān)鍵在于如何高效地利用有限的資源來達成對多目標的充分測試。在程序探索過程中,某些目標可能比其他目標更易于達到,頻繁測試的區(qū)域可能已經(jīng)得到了充分檢驗,其代碼更安全健壯,存在漏洞的可能性較低。傳統(tǒng)的定向模糊測試器對程序中的多個目標位置通過靜態(tài)距離賦予固定的優(yōu)先級,未動態(tài)考慮目標的遍歷情況,難覆蓋的目標代碼區(qū)域在全局視角中處于劣勢,容易被忽略,從而出現(xiàn)調(diào)度“饑餓”的情況。

        上述問題使得難以在多目標環(huán)境中應(yīng)用定向模糊測試進行漏洞挖掘,因此為了更有效地利用測試資源,達到更好的多目標測試效果,需要一種能夠根據(jù)目標遍歷情況的變化,動態(tài)調(diào)整測試資源分配并探索多樣化路徑的方法。

        2 方法設(shè)計

        2.1 解決思路與方法概述

        解決問題a)的關(guān)鍵在于如何全局分析不同目標的分布,并根據(jù)測試過程及多目標的覆蓋情況,對不同目標進行差異化的度量和逼近測試。本文基于支配樹[15]概念,提出基于多目標支配分析的測試用例優(yōu)選方法,旨在優(yōu)化定向模糊測試的距離度量[4,5,9,14],并對所有預(yù)設(shè)定目標進行全局化分析追蹤。本文對測試目標構(gòu)建路徑支配樹,識別并錨定對執(zhí)行到多目標起著決定性作用的支配節(jié)點,并將這些支配節(jié)點作為多目標路徑探索的“驛站”。綜合考慮所有可能到達目標位置的路徑,在路徑對目標的執(zhí)行接近程度評定上,將支配節(jié)點用于距離逼近程度評估,以解決由最小距離算法引導(dǎo)的定向模糊測試在多目標環(huán)境中遇到的測試路徑單一性和目標指向性問題。

        針對問題b),需要隨著測試的進行,對每個目標的關(guān)注度進行動態(tài)調(diào)整,在測試用例優(yōu)選過程中剔除已被充分測試的目標。本文提出基于目標覆蓋狀態(tài)的路徑動態(tài)修剪優(yōu)化策略,計算支配節(jié)點的途徑情況來深入分析潛在目標的覆蓋狀態(tài),通過剪枝和全局支配節(jié)點修正,實現(xiàn)計算資源的有效分配和對目標集合的均衡測試。

        基于上述思路,本文提出基于多目標支配分析和路徑動態(tài)修剪優(yōu)化的定向模糊測試技術(shù)并構(gòu)建原型系統(tǒng)MTDFuzz。該系統(tǒng)可以接受程序中的多個目標位置作為輸入,圖3描述了MTDFuzz多目標模糊測試技術(shù)的整體工作流程,主要分為靜態(tài)分析和多目標定向模糊測試兩個階段,具體的優(yōu)化方法包括以下四個方面(圖中灰色部分標示):a)靜態(tài)分析,首先接受測試程序和多個目標位置作為輸入,給定一個種子語料庫,運行程序間靜態(tài)分析以識別能到達目標位置的相關(guān)基本塊,回溯標記必經(jīng)的支配節(jié)點,并基于這些支配節(jié)點計算基本塊的初始評分,插樁基本塊評分信息編譯得到待測試的二進制程序;b)基于多目標支配分析的測試用例優(yōu)選,記錄測試用例執(zhí)行過程中經(jīng)過的支配和目標節(jié)點,并將這些支配節(jié)點和目標節(jié)點的評分累加得到測試用例優(yōu)選評分;c)基于目標覆蓋狀態(tài)的路徑動態(tài)修剪優(yōu)化,隨著模糊測試的進行,多目標的覆蓋情況發(fā)生變化,采取運行時分析重新評估支配節(jié)點和目標的覆蓋狀態(tài)信息,動態(tài)修剪已充分測試的路徑和目標,動態(tài)調(diào)整支配節(jié)點評分;d)基于支配節(jié)點覆蓋度的種子調(diào)度策略,結(jié)合支配節(jié)點覆蓋度指導(dǎo)種子的選擇、能量分配以及變異階段,加速優(yōu)選測試用例的生成和進化,通過支配節(jié)點的覆蓋激勵,擴大對多目標的探索面,實現(xiàn)具備路徑多樣性的多目標測試。

        2.2 基于多目標支配分析的測試用例優(yōu)選

        本文提出了一種新的多目標種子評分機制,先靜態(tài)計算支配節(jié)點到各個目標之間的距離,并保留最小值以及其對應(yīng)的目標。

        2.2.1 支配節(jié)點(DomPoint)識別

        定向模糊測試的測試空間不是整體程序,因此基于全程序空間的覆蓋率搜索的方法不再適用。將覆蓋增益與目標位置及其執(zhí)行路徑不相關(guān)的種子加入隊列中,并不能提升DGF的效果。因此,本文提出尋找種子執(zhí)行路徑上的指引性節(jié)點,即支配節(jié)點來引導(dǎo)測試。只有先到達支配樹DT上的支配節(jié)點,才能覆蓋后續(xù)的目標并獲取有效的反饋。

        支配節(jié)點是本文的一個關(guān)鍵概念,如果樹中的每個節(jié)點只支配自己及其后代,則稱之為支配樹(DT)。當且僅當經(jīng)過n的路徑必須先經(jīng)過d時,節(jié)點d支配節(jié)點n,記作d dom n,根據(jù)定義,每個節(jié)點都支配自身。為了識別種子執(zhí)行路徑上的支配節(jié)點,MTDFuzz在動態(tài)測試前進行靜態(tài)分析以識別程序中潛在的支配節(jié)點。在模糊測試期間,通過分析已執(zhí)行的基本塊與潛在支配節(jié)點之間的關(guān)系確定執(zhí)行路徑中的支配節(jié)點。以下是本文對支配節(jié)點的定義:

        定義1 給定一個待測試的程序p和程序中的一個目標t,p的程序過程間控制流圖iCFG=(V,E),其中V代表基本塊集合,E代表邊的集合,T是待測試的多目標集合,b是程序中的基本塊,Target_DP(t)則表示目標t的支配節(jié)點集合:

        Target_DP(t)={b∈V(p)|(b dom t ∩|iCFG_out(b)|gt;1)}

        目標完全支配節(jié)點集合為

        Target_DP′(t)=Target_DP(t)∪t

        定義1可以解釋為:在基于程序間控制流圖iCFG構(gòu)建的支配樹DT上,目標節(jié)點的前驅(qū)節(jié)點一定能到達后續(xù)的目標節(jié)點,但是全程序基本塊集合過大,標記所有執(zhí)行路徑上與目標位置相關(guān)的父節(jié)點會嚴重增加運行時開銷。因此,本文僅保留iCFG中出度大于1的節(jié)點,從而得到支配節(jié)點集合All_DP(p):

        All_DP(p)={b∈V(p)|(?t∈T,b dom t ∩ iCFG_out(b)|gt;1)}

        All_DP′(p)=All_DP(p)∪T

        程序全局支配節(jié)點與目標節(jié)點一起構(gòu)成程序p的完全支配節(jié)點集合All_DP′(p)。

        在實際計算中,首先構(gòu)建目標程序的過程間控制流圖iCFG,然后基于iCFG計算每個基本塊到目標位置的可達性,如果在iCFG上存在從基本塊到目標位置的路徑,則認為基本塊可以到達目標位置[9]。動態(tài)執(zhí)行過程中的支配節(jié)點引導(dǎo)種子逼近目標位置,只有覆蓋了目標路徑上的支配節(jié)點,滿足到達目標位置的前置條件,才能順利覆蓋后續(xù)的目標節(jié)點。

        定義2 種子s執(zhí)行軌跡中支配節(jié)點Seed_DP(s)表示:

        Seed_DP(s)={b∈(ξ(s) ∩ All_DP′(p)}

        其中:ξ(s)是種子s執(zhí)行軌跡中所有的基本塊。

        以圖4為例,圖4(a)是程序過程間控制流圖iCFG,程序中包含4個目標位置,T={R,H,L,Q},iCFG經(jīng)Lengauer-Tarjan算法[16]構(gòu)建支配樹DomiCFG,其中Target_DP(R)={A,C},Target_DP(H)={A,C,D},Target_DP(L)={A,J,K},Target_DP(Q)={A,J,P},因此,示例中的程序全局支配節(jié)點All_DP(p)和完全支配節(jié)點集合All_DP′(p)為:All_DP(p)={A,C,D,J,K,P},All_DP′(p)={A,C,D,H,J,K,L,R,P,Q}。

        為了使測試用例能夠到達目標位置甚至觸發(fā)漏洞,需要滿足特定的路徑特征。支配節(jié)點在控制流中起著推動DGF逼近目標位置的尋路作用,支配節(jié)點之間以及支配節(jié)點與目標之間均可能存在多條路徑,逐步覆蓋程序中的支配節(jié)點而不是只關(guān)注最短路徑,可以得到更加豐富的測試路徑,有利于漏洞的觸發(fā)。測試過程中覆蓋一個基本塊的直接后繼并不增加到達目標的可能性,因為基本塊和其唯一后繼基本塊到達目標的概率是相同的[17]。因此,識別控制流中的支配節(jié)點變得至關(guān)重要,這些節(jié)點與目標位置存在支配關(guān)系,為目標的逼近過程提供了有效的控制流關(guān)系指引。

        2.2.2 測試用例優(yōu)選評分

        本節(jié)利用2.2.1節(jié)中識別的支配節(jié)點來計算基本塊和種子的評分。對于每一個目標t,有一系列支配節(jié)點b在支配樹DT上,b∈Target_DP(t),利用執(zhí)行路徑上的支配節(jié)點到所有目標基本塊的多目標距離dist(b,t)來計算基本塊評分Wb,T

        dist(b,T)=mint∈T{Dijkstra(b,t)}(1)

        Wb,T=1dist(b,T)+C(2)

        式(1)表示在程序間控制流圖iCFG中,支配節(jié)點b到目標位置t的距離,當b是目標本身時,距離為0,當b不可達t時,距離為∞,不參與計算。部分支配節(jié)點可以達到多個目標基本塊,這些支配節(jié)點在初始評分階段只存儲到最近目標的距離。式(2)中常數(shù)C是一個正值,用于控制距離dist(b,T)對基本塊評分的影響程度,目標基本塊的評分為1/C,因此權(quán)重最高,距離目標越遠的支配節(jié)點權(quán)重越低。

        本文給予以下種子更高的優(yōu)選評分:a)種子執(zhí)行路徑經(jīng)過了更多的支配節(jié)點;b)種子的執(zhí)行路徑更加接近目標位置。種子的優(yōu)選評分通過累加基本塊評分來計算,記錄種子執(zhí)行過程中經(jīng)過的支配節(jié)點和目標節(jié)點,并將這些支配節(jié)點和目標節(jié)點的評分相加。種子s的優(yōu)選評分定義為執(zhí)行過程中經(jīng)過的支配節(jié)點以及目標的分數(shù)之和:

        Score(s)=∑b∈Seed_DP(s)Wb,T(3)

        優(yōu)選評分Score(s)增加意味著種子執(zhí)行軌跡中包含更多的支配節(jié)點或?qū)崿F(xiàn)了更高的目標節(jié)點覆蓋率,因此該種子應(yīng)獲得更多的測試資源和變異機會,并在調(diào)度中賦予更高的優(yōu)先級。

        2.3 基于目標覆蓋狀態(tài)的路徑動態(tài)修剪優(yōu)化

        為了解決定向模糊測試在目標選擇上的偏向性問題,本文提出一種動態(tài)的目標選擇方法,記錄多目標的覆蓋狀態(tài),修剪已經(jīng)充分測試的目標和路徑,平等地測試所有目標。

        當對應(yīng)目標執(zhí)行次數(shù)達到閾值被充分測試時,將該目標從目標探索集合中剔除。若支配節(jié)點還有其他目標探索后繼,則支配節(jié)點的距離更新為支配節(jié)點到當前最近目標節(jié)點的距離;若當前支配節(jié)點無目標后繼,則將支配節(jié)點標記清除,轉(zhuǎn)向其他代碼區(qū)域的探索。記錄支配節(jié)點的覆蓋情況和執(zhí)行次數(shù),將支配節(jié)點和目標節(jié)點與三元組(hit_frequency, dominated_targets, is_reserve)相關(guān)聯(lián),hit_frequency代表支配節(jié)點被執(zhí)行的次數(shù),dominated_targets代表支配節(jié)點的后繼節(jié)點中是否包含目標節(jié)點,is_reserve表示該支配節(jié)點及后續(xù)節(jié)點是否被保留。當hit_frequency超過f次時,表示該支配節(jié)點已被充分測試,生成了足夠能執(zhí)行該支配節(jié)點的種子。當hit_frequency gt; f且dominated_targets=0時,is_reserve置0,表示此節(jié)點及后續(xù)分支需要被剔除,從iCFG中剔除該支配節(jié)點的評分及其后繼節(jié)點的評分不影響對于其他目標的測試,可以從支配節(jié)點集合All_DP(p)中刪除,不參與距離計算及評分信息反饋。

        在初始階段會給支配節(jié)點插樁距離信息,基于上一節(jié)的基本塊和測試用例優(yōu)選評分機制,計算基本塊評分,優(yōu)選評分較高的目標,待目標被充分測試后,啟用修剪算法,向上遞歸更新支配節(jié)點中存儲的距離,實現(xiàn)基于動態(tài)的多目標種子優(yōu)選評分?;谀繕烁采w狀態(tài)的路徑修剪算法1如下。

        算法1 基于目標覆蓋狀態(tài)的路徑動態(tài)修剪算法

        輸入:過程間控制流圖iCFG;目標節(jié)點集合T;完全支配節(jié)點集合All_DP′(p);全局基本塊評分W;全局支配節(jié)點三元組信息(hit_frequency, dominated_targets, is_reserve)。

        輸出:更新后的完全支配節(jié)點集合All_DP′(p)以及基本塊評分W。

        1 function domPointCull(t)" // 支配節(jié)點修剪

        2 for v in All_DP(p) do

        3

        if v dom t then

        4 v. dominated_targets-= 1

        5

        end if

        6

        if v. dominated_targets == 0 then

        7 All_DP′(p).cull(v)

        8 /* 在iCFG上修剪已被充分測試的支配節(jié)點 */

        9 v.is_reserve=0

        10

        end if

        11

        for n in v.predecessor do

        12 W= updateScore(dist(n,T))

        13

        end for

        14 end for

        15 return W,All_DP′(p)

        16 end function

        17 function traceCull(t) // 基于支配節(jié)點的路徑修剪

        18 for v in All_DP′(p) do

        19 if t.hit_frequency gt; f and t.dominated_targets = 0 do

        20

        T = T.delete(t)

        21

        domPointCull(t)

        22 end if

        23 end for

        24 return W , All_DP′(p)

        25 end function

        本文用目標狀態(tài)覆蓋表示在運行時檢測的支配節(jié)點和目標的覆蓋情況,已被充分測試的目標節(jié)點被修剪剔除,不參與測試用例優(yōu)選評分的計算。若其對應(yīng)的支配節(jié)點無后繼的目標節(jié)點,也進行剔除。因此再次覆蓋已充分測試的支配節(jié)點的種子無法獲取較高的種子優(yōu)選評分。

        圖5為修剪示例,初始控制流圖中,目標集合T={R,H,L,Q},其支配節(jié)點集合All_DP(p)={A,C,D,J,K,P},完全支配節(jié)點集合All_DP′(p)={A,C,D,H,J,K,L,R,P,Q},當部分目標T′={R,H,L}被充分測試后,其is_reserve標志置0,從目標集合中剔除,K節(jié)點被修剪后,其All_DP(p)節(jié)點中的父節(jié)點J更新距離為到Q的距離,即距離更新為4,同樣A點距離更新為6。

        2.4 基于支配節(jié)點覆蓋度的種子調(diào)度策略

        本文在程序中識別并錨定多個支配節(jié)點,測試覆蓋新的支配節(jié)點或目標后獲得測試用例優(yōu)選評分激勵,并賦予更高的優(yōu)先級和能量,而覆蓋與目標以及相關(guān)路徑無關(guān)的代碼時無法獲取激勵。本方法的種子池是一個循環(huán)隊列,依據(jù)順序選擇種子,當種子池中加入新的測試用例時,根據(jù)式(3)計算的測試用例優(yōu)選評分Score(s)對種子進行排序,隊列中靠前的種子由于覆蓋了較多的支配節(jié)點以及具備較深的執(zhí)行路徑深度,這些種子得到較早的調(diào)度可以加快測試的多目標探索。

        定義3 支配節(jié)點覆蓋度Q表示程序中完全支配節(jié)點的覆蓋情況:

        Q=NhitNall(4)

        其中:Nhit是累計被命中過的程序完全支配節(jié)點數(shù)量;Nall是所有程序完全支配節(jié)點All_DP′(p)的數(shù)量;Q的值越大代表程序由支配節(jié)點引導(dǎo)的多目標測試探索情況越好。

        算法2 動態(tài)種子能量調(diào)度算法

        輸入:已插樁完全支配節(jié)點信息的程序P′;初始種子池C;需要被賦予能量的種子s。

        輸出:種子s的能量E^(s)。

        1 Score(s)=Execute(P′,s)

        2 S^(s)=Normalize(Score(s),C)

        3 /*Texp是模擬退火中的溫度*/

        4 E(s)=Q*S^(s)*(1-Texp )+0.5*Texp

        5 E^(s)=Eafl(s)*210*E(s)-5

        MTDFuzz的目的是通過支配節(jié)點的覆蓋逐步引導(dǎo)到程序中離散分布的多個目標節(jié)點,因此需要選擇能夠覆蓋完全支配節(jié)點的種子并賦予更高的優(yōu)先級。算法2介紹了基于支配節(jié)點覆蓋度的種子能量策略,給定一個輸入s,以及包含完全支配節(jié)點信息的程序P′,根據(jù)式(3)種子優(yōu)選評分的定義計算種子優(yōu)選評分Score(s),為種子優(yōu)選評分Score(s)越大的種子賦予越高的優(yōu)先級。本文基于模擬退火算法來選擇種子,定義標準化種子優(yōu)選評分:

        S^(s)=Score(s)-ScoreminScore(s)max-Scoremin(5)

        其中:Score(s)min和Score(s)max表示種子池中種子優(yōu)選評分的最小值和最大值;標準化種子評分S^(s)可以在搜索支配節(jié)點和目標時起到對開發(fā)和利用階段的平衡,S^(s)∈[0,1]。

        基于標準化種子優(yōu)選評分,本文設(shè)計了能量調(diào)節(jié)函數(shù)(算法2第4行)來解決探索和利用問題,其中Texp是模擬退火的溫度函數(shù),使用Q*S^(s)表示種子的測試演化進度,需要Q和S^(s)共同作用以參與種子能量分配的調(diào)節(jié)。測試的初始階段是探索階段,以覆蓋率探索為主,目的是充分搜索程序中的支配節(jié)點,并獲取初期的種子評分。隨著種子s被選擇的次數(shù)增加,能量調(diào)節(jié)函數(shù)E(s)開始降溫,并逼近于Q*S^(s),此時切換為開發(fā)階段,著重生成能覆蓋更多支配節(jié)點或能覆蓋目標位置的種子,實現(xiàn)基于支配節(jié)點覆蓋引導(dǎo)的測試聚焦。

        算法2第5行為最終的種子能量賦予函數(shù),其中Eafl(s)是AFL基于種子執(zhí)行速度和種子文件大小來分配的種子能量基準。

        模糊測試隨著測試推進會遭遇一定的測試瓶頸導(dǎo)致測試進度放緩[18],本文識別多目標定向模糊測試過程中的障礙點,與之前模糊測試方法中提到的障礙點(程序中的魔數(shù)字節(jié)和校驗和)[19]不同,利用字節(jié)推斷來輔助穿透路徑約束,在程序中某些模塊的執(zhí)行不僅與輸入的結(jié)構(gòu)相關(guān),還與程序的命令行參數(shù)密切相關(guān),不同目標位置的代碼可能需要不同的命令行參數(shù)才能被執(zhí)行。因此采取階段式的模糊測試方法,在一個模糊測試階段結(jié)束后,導(dǎo)出程序中完全支配節(jié)點集合All_DP′(p)的覆蓋情況,定義尚未被覆蓋的支配節(jié)點集合NoCov_DP(p) All_DP′(p),這個集合中的節(jié)點在測試過程中沒有被任何輸入數(shù)據(jù)或參數(shù)組合所執(zhí)行,指示程序中那些不易達到或未被充分測試的部分。為了覆蓋這些難以達到的支配節(jié)點,可以采取以下方法:通過人工專家構(gòu)造專門的測試用例,調(diào)整輸入生成策略,或者借助動態(tài)符號執(zhí)行技術(shù)[20,21],以加強對這些存在覆蓋障礙的支配節(jié)點的測試。

        3 實驗評估

        本章首先介紹實驗的設(shè)置以及基準測試集的選擇,繼而闡述本研究所采用的對比基線和評估指標。最終,通過對比實驗驗證了本文方法的有效性,并在真實軟件構(gòu)成的FuzzBench平臺上評估了漏洞挖掘效果。

        3.1 實驗設(shè)置

        本文根據(jù)上述的模糊測試框架構(gòu)建了工具MTDFuzz,該工具主要通過C和Python實現(xiàn),并使用SVF[22]和Temporal-specialization[23]工具進行過程間分析,以構(gòu)建程序過程間控制流圖iCFG。為了評估實驗,在Magma[24]基準測試集上測試MTDFuzz的漏洞挖掘性能和效率,Magma基準測試集通過補丁將多個1-day漏洞前向移植到一個版本的程序中,從而可以為DGF設(shè)置多個目標。本研究采用了Lee等人[25]提出的定向模糊測試評估方法,通過Fuzzle自動生成的迷宮程序測試多目標探索能力,F(xiàn)uzzle結(jié)合隨機創(chuàng)建的迷宮和歷史CVE漏洞中的路徑約束以生成測試程序。此外,使用了tcpreplay、logrotate、jpegoptim等五個接受不同類型輸入的真實程序組成FuzzBench[26],以測試MTDFuzz挖掘真實程序漏洞的能力。

        對比基線:將MTDFuzz與以下模糊測試工具進行對比測試。

        a)AFL++[27]:git commit 981a90d;

        b)AFLGo[4]:git commit fa125da;

        c)SieveFuzz[8]:git commit 1fb90ff;

        d)LeoFuzz[28]:Docker SHA256 hash 60a1930。

        AFL++是基于AFL持續(xù)開發(fā)的社區(qū)版,集成了眾多當前最先進的輔助分析和編譯優(yōu)化技術(shù),是當前主流的覆蓋率引導(dǎo)模糊測試工具。AFLGo首次提出了定向模糊測試方法,并實現(xiàn)了基于最小距離模型的定向測試工具。SieveFuzz是一個具有可達性感知的定向模糊測試工具,將靜態(tài)分析和動態(tài)分析相結(jié)合以提前終止不可達輸入,減小模糊測試的搜索空間;LeoFuzz通過分析目標序列與種子序列之間的多種關(guān)系,利用覆蓋率種子隊列和定向種子隊列,自適應(yīng)地協(xié)調(diào)定向模糊測試的探索和利用階段。由于FuzzGuard[7]和Hawkeye[5]并未開源,所以本文未選取它們進行對比實驗。

        實驗環(huán)境:本文實驗運行的硬件和軟件環(huán)境為Intel?Xeon?Silver 4216 CPU @ 2.10 GHz,128 GB內(nèi)存,操作系統(tǒng)為64位Ubuntu 20.04.3 64,編譯器為Clang 12.0.1和gcc 11.4.0。

        3.2 通用測試集性能評估

        Magma v1.2.1測試集是一個廣泛用于評估模糊測試性能的基準測試集,它包含了多個程序庫中的漏洞:libpng(7個漏洞)、libtiff(14個漏洞)、libxml2(17個漏洞)、poppler(22個漏洞)、openssl(20個漏洞)、SQLite(20個漏洞)、PHP(16個漏洞),Lua(4個漏洞)、libsndfile(25個漏洞)。這些庫中包含的一些漏洞可以在十分鐘內(nèi)被AFL++發(fā)現(xiàn),這意味著它們可以在僅靠覆蓋率引導(dǎo)下迅速被模糊測試工具發(fā)現(xiàn),這種特性并不足以證明多目標定向模糊測試方法的有效性,因此在本文的測試中,這些漏洞被剔除。

        對于目標位置的確定,Magma為每個漏洞在被測試程序中插入了一個或多個MAGMA_LOG宏,以便在執(zhí)行過程中記錄漏洞何時被覆蓋或觸發(fā)。本文將這些宏的位置指定為每個漏洞的目標位置。此外,Magma還對程序進行了補丁處理,以反轉(zhuǎn)修復(fù)錯誤的提交實現(xiàn)前向漏洞植入,并將這些位置也設(shè)置為目標,這些配置允許模糊測試工具更準確地定位和測試特定的漏洞位置,從而更有效地評估其對多目標定向模糊測試的性能。

        本文使用Magma提供的默認語料庫作為初始種子,進行了10次每次24小時的實驗評估。使用Magma提供的分析腳本對實驗結(jié)果進行分析,實驗結(jié)果可分為以下兩個方面:a)模糊測試工具發(fā)現(xiàn)的漏洞數(shù)量,結(jié)果顯示在表1中;b)發(fā)現(xiàn)漏洞所需的平均時間(TTB),結(jié)果顯示在表2中。

        在大多數(shù)情況下,MTDFuzz的表現(xiàn)優(yōu)于其他的模糊測試工具。平均而言,使用幾何平均值計算平均漏洞挖掘數(shù)量發(fā)現(xiàn)漏洞的平均時間并進行比較,從表1和2中可以看出,MTDFuzz相較于AFL++(啟用cmplog選項),AFLGo、SieveFuzz和LeoFuzz,在libtiff、libxml2、php、poppler、libsndfile和lua中檢測的漏洞數(shù)量最多,平均漏洞發(fā)現(xiàn)時間縮短了57.6%、39.2%、43.9%和36.3%,在發(fā)現(xiàn)漏洞數(shù)量上分別增加了32%、59%、33%和18%。

        3.3 多目標探索能力實驗

        多目標定向模糊測試不再以覆蓋率的提升效果為主要衡量指標,而是需要快速聚焦目標位置集合。本實驗評估MTDFuzz的多目標探索能力,能否在相同的時間內(nèi)到達更多的目標,基于Magma中的四個實驗程序libpng、libtiff、libxml2、libsndfile,并將其中每個軟件中的MAGMA_LOG宏數(shù)量擴充到每個軟件100個作為目標集合,構(gòu)建多目標探索能力測試集,將MTDFuzz與AFLGo和AFL進行對比,每個程序上進行5輪實驗,每輪實驗24 h,實驗結(jié)果如圖6所示。

        從圖6中可以看出,在實驗前期三個模糊測試工具的目標覆蓋情況差別不大,因為在實驗初期都采用了覆蓋率引導(dǎo)。由于AFLGo采取了最小距離引導(dǎo),所以針對部分目標和路徑在測試前期能夠快速覆蓋,MTDFuzz前期生成了大量的種子用于覆蓋支配節(jié)點,然而隨著測試的深入,AFL和AFLGo的目標發(fā)現(xiàn)效率相對MTDFuzz放緩,由于MTDFuzz基于程序中的支配節(jié)點引導(dǎo)逐步逼近目標位置,且修剪已被充分測試的目標,轉(zhuǎn)而將能力傾斜于全覆蓋的目標站點,所以在24 h時,MTDFuzz相比AFLGo和AFL能夠覆蓋更多的目標,本文的方法對于多目標的探索效率更高。

        為了進一步驗證本文方法對多目標測試路徑多樣性的提升,對本實驗中的路徑和崩潰數(shù)量進行了統(tǒng)計,以研究基于多目標支配分析的測試用例優(yōu)選方法對測試路徑多樣性的影響。Q是2.4節(jié)中定義的支配節(jié)點覆蓋度5輪實驗平均值,Avg(Target_path)是5輪實驗中所有能執(zhí)行到目標的測試用例數(shù)量(發(fā)現(xiàn)的目標相關(guān)路徑數(shù)量),結(jié)果如表3所示。

        根據(jù)表3的結(jié)果可以看出,MTDFuzz在支配節(jié)點覆蓋度和發(fā)現(xiàn)的目標相關(guān)路徑數(shù)量上均優(yōu)于AFL和AFLGo,在libsndfile實驗中,MTDFuzz發(fā)現(xiàn)的目標相關(guān)路徑數(shù)量是AFLGo的3.9倍。原因是MTDFuzz采用了多目標支配分析,比AFL和AFLGo更關(guān)注測試用例覆蓋執(zhí)行覆蓋目標過程中的支配節(jié)點,因此發(fā)現(xiàn)了更多的目標相關(guān)路徑,提升了多目標測試路徑多樣性。

        3.4 多漏洞復(fù)現(xiàn)效率實驗

        為了驗證MTDFuzz在一個軟件中包含多個漏洞場景的有效性,使用了Multi-target Fuzzle[29]生成兩個復(fù)雜度為20×20和30×30的迷宮合成程序,每個程序中均包含三個漏洞來進行多漏洞復(fù)現(xiàn)效率實驗。采用改進的Fuzzle來合成路徑長度相同的迷宮漏洞程序,對每個程序分別運行AFLGo、LeoFuzz、SieveFuzz和MTDFuzz,將三個漏洞都作為目標,并當作以上模糊測試工具的輸入,每個實驗都重復(fù)10次,每次運行12 h,TTE是暴露漏洞的平均時間。

        實驗結(jié)果如圖7所示,從中可以看出在兩個迷宮程序中,MTDFuzz相比其他模糊測試工具探索bug1、bug2和bug3的平均時間開銷更小,在30×30的迷宮程序中,MTDFuzz的漏洞發(fā)現(xiàn)時間比AFLGo縮短了3.35 h,所需時間減少了71.4%。另外,MTDFuzz是唯一能在0.4 h內(nèi)發(fā)現(xiàn)20×20迷宮中所有bug,并在1.5 h內(nèi)發(fā)現(xiàn)30×30迷宮程序所有bug的模糊測試工具??傮w來看,在多個目標漏洞引導(dǎo)環(huán)境下,MTDFuzz具有更強的多漏洞復(fù)現(xiàn)能力。

        3.5 真實漏洞檢測能力實驗

        本文選擇了5個真實程序來構(gòu)建FuzzBench,以測試MTDFuzz的真實軟件漏洞挖掘能力。這些待測試程序涵蓋了不同的輸入格式,包括日志、圖像、二進制程序和網(wǎng)絡(luò)流量包等,具體的程序信息和測試命令詳見表4。這些復(fù)雜的輸入結(jié)構(gòu)測試使得實驗更能體現(xiàn)通用性和代表性,盡管采取更長時間的階段性測試對MTDFuzz更加有利,本文仍然將所有實驗的運行時間設(shè)定在24 h。

        本實驗與AFLGo、SieveFuzz、LeoFuzz進行了比較。實驗中,運行Clang Static Analyzer[30],并將其靜態(tài)分析報告中的結(jié)果作為多目標位置進行測試,即潛在存在漏洞的代碼位置,Clang Static Analyzer靜態(tài)分析報告的結(jié)果沒有經(jīng)過可疑的過濾等處理,因此靜態(tài)分析報告中包含假陽性和不可達的目標。實驗旨在評估MTDFuzz及其他三個DGF工具在引導(dǎo)下觸發(fā)FuzzBench中漏洞的效率,并比較它們在此過程中的時間開銷。SieveFuzz在某些程序上無法編譯或正常運行,因此將這些條目標記為N/A,實驗結(jié)果詳見表5,μTTE表示平均首次觸發(fā)時間,Ratio是其他fuzzer與MTDFuzz在μTTE指標上的比值。

        從表5可以看出,MTDFuzz發(fā)現(xiàn)真實漏洞所需的時間少于另外三種工具。在tcpreplay中,MTDFuzz表現(xiàn)出的加速效果最為出色,AFLGo、SieveFuzz、LeoFuzz所花的時間分別是MTDFuzz的15.13倍、28.49倍、5.79倍。從實驗結(jié)果可以看出,MTDFuzz相比其他幾個模糊測試工具能夠更快挖掘到真實漏洞。

        此外,為了驗證多目標定向模糊測試工具MTDFuzz在實際開源軟件0-day漏洞挖掘中的應(yīng)用效果,采用兩種方式標定需測試的目標位置集合:a)最近提交或頻繁變更的代碼區(qū)域(與長期未修改已經(jīng)徹底測試的舊代碼相比,新提交的代碼中存在漏洞的風(fēng)險更高);b)利用靜態(tài)分析工具Clang Static Analyzer檢測可能存在漏洞的代碼。通過以上目標標定指引,MTDFuzz在Glibc、FFmpeg、logrotate和tinyexr四個開源軟件中發(fā)現(xiàn)了12個未公開漏洞,并得到了開發(fā)人員的確認,其中9個已獲取CVE編號,具體漏洞信息如表6所示。

        發(fā)現(xiàn)的漏洞類型主要包括堆棧溢出等內(nèi)存破壞性漏洞,其中FFmpeg是一個被廣泛使用的多媒體庫,它在OSS-Fuzz中經(jīng)過了充分測試。使用傳統(tǒng)的模糊測試策略難以發(fā)現(xiàn)其中的crash,MTDFuzz則發(fā)現(xiàn)了2個堆溢出漏洞。此外,選取logrotate程序的CVE-2023-38795挖掘過程及漏洞成因進行簡要說明,logrotate程序是Linux操作系統(tǒng)中常用的日志文件處理程序,該漏洞的代碼片段如圖8所示。

        發(fā)現(xiàn)glibc glob函數(shù)棧溢出漏洞后,檢索logrotate程序中所有調(diào)用glob函數(shù)的代碼位置作為MTDFuzz的目標進行測試并發(fā)現(xiàn)crash。ASAN[31]內(nèi)存崩潰報告顯示,config.c文件第1 849行調(diào)用glob函數(shù)時發(fā)生崩潰,glob由GNU C庫(libc)提供,用于擴展通配符模式匹配文件路徑,其第一個參數(shù)pattern是一個字符串,用于指定需匹配的文件名模式。logrotate讀取惡意構(gòu)造日志文件,導(dǎo)致得到的pattern字符串包含大量目錄分隔符“/”,每個目錄分隔符會遞歸觸發(fā)一次mempcpy內(nèi)存復(fù)制。由于glibc glob函數(shù)的實現(xiàn)未限制pattern字符串的長度,glob函數(shù)內(nèi)部的深度遞歸調(diào)用導(dǎo)致了棧溢出。修復(fù)補丁位于1 842~1 847行(圖中灰色陰影部分代碼),開發(fā)人員限制glob函數(shù)的pattern參數(shù)長度為2 048,防止遞歸引發(fā)棧溢出。OSS-Fuzz等其他持續(xù)性模糊測試長期測試logrotate項目但是并未關(guān)注其中g(shù)lob函數(shù)的調(diào)用,AFLGo等定向模糊測試方法難以對程序中的多個glob函數(shù)調(diào)用展開測試,因此難以發(fā)現(xiàn)該漏洞。

        3.6 測試總結(jié)

        通過對實驗結(jié)果分析可以發(fā)現(xiàn):a)在通用的測試集Magma中,本文方法相比于AFL++、AFLGo、SieveFuzz和LeoFuzz表現(xiàn)出更高的目標漏洞檢測效率,同時還能夠揭示更多的漏洞,這表明本文的方法能夠顯著提升針對多目標的模糊測試性能;b)在多目標測試路徑多樣性上,從多目標探索能力實驗中可以看出, MTDFuzz發(fā)現(xiàn)的目標相關(guān)路徑數(shù)量相比AFLGo最高達3.9倍,得益于支配節(jié)點的指引作用,發(fā)現(xiàn)了更多的目標相關(guān)路徑,增強了多目標測試路徑多樣性;c)在多目標測試資源分配上,從多目標探索能力和多漏洞復(fù)現(xiàn)效率可以看出,本文的方法到達目標站點的速度和數(shù)量優(yōu)于其他方法,由于采用了路徑動態(tài)修剪優(yōu)化策略,及時將測試的關(guān)注度從已充分測試的目標轉(zhuǎn)向探索欠覆蓋目標,有效解決了未隨著目標的遍歷情況動態(tài)調(diào)整傾斜測試資源的問題,所以MTDFuzz更適合于針對多目標進行測試,且利于與靜態(tài)分析告警處理等方法相結(jié)合;d)在真實程序測試集FuzzBench中,MTDFuzz的漏洞發(fā)現(xiàn)數(shù)量高于其他模糊測試工具,且發(fā)現(xiàn)了12個未公開漏洞,證明了MTDFuzz在真實軟件漏洞中的漏洞驗證和挖掘潛力。

        綜上,本文方法在漏洞的挖掘方面表現(xiàn)出色,不僅能夠充分地動態(tài)修剪目標實現(xiàn)對多目標的測試,還能通過支配節(jié)點的引導(dǎo)更快實現(xiàn)對目標位置的覆蓋以及漏洞的觸發(fā)。

        4 結(jié)束語

        為解決之前定向模糊測試中平均距離模型對不同分支的多目標適應(yīng)性不強,以及未根據(jù)不同目標的覆蓋程度動態(tài)調(diào)整距離度量這兩個問題,本文提出了一種基于支配節(jié)點以及目標節(jié)點覆蓋狀態(tài)的路徑修剪方法,以基于支配節(jié)點覆蓋度的種子調(diào)度策略,并構(gòu)建了MTDFuzz模糊測試工具。實驗結(jié)果表明,本文的方法在多目標環(huán)境下,提升了程序中多個漏洞的復(fù)現(xiàn)效率,在相同條件下與其他定向模糊測試工具相比具有更高的目標覆蓋效率,結(jié)合靜態(tài)分析報告的結(jié)果能更快復(fù)現(xiàn)真實漏洞。

        下一步將探索如何在多目標定向模糊測試過程中對識別的關(guān)鍵障礙點進行突破。此外還計劃深入分析并整合靜態(tài)分析工具的輸出結(jié)果,以此來對本文提出的工具進行進一步的擴展和優(yōu)化,提高定向模糊測試的效能和應(yīng)用廣度,從而更有效地支持復(fù)雜軟件系統(tǒng)的安全性測試和評估。

        參考文獻:

        [1]任澤眾, 鄭晗, 張嘉元, 等. 模糊測試技術(shù)綜述 [J]. 計算機研究與發(fā)展, 2021, 58 (5): 944-963. (Ren Zezhong, Zheng Han, Zhang Jiayuan, et al. A review of fuzzing techniques[J]. Journal of Computer Research and Development, 2021, 58 (5): 944-963.)

        [2]徐威, 李鵬, 張文鑌, 等. 網(wǎng)絡(luò)協(xié)議模糊測試綜述 [J]. 計算機應(yīng)用研究,2023, 40 (8): 2241-2249. (Xu Wei, Li Peng, Zhang Wenbin, et al. Survey of network protocol fuzzing [J]. Application Research of Computers, 2023, 40 (8): 2241-2249.)

        [3]張冠宇, 尚文利, 張博文, 等. 一種結(jié)合遺傳算法的工控協(xié)議模糊測試方法 [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.)

        [4]B?hme M, Pham V T, Nguyen M D, et al. Directed greybox fuzzing[C]// Proc of ACM SIGSAC conference on Computer and Communications Security. New York:ACM Press, 2017: 2329-2344.

        [5]Chen Hongxu, Xue Yinxing, Li Yuekang, et al. Hawkeye: towards a desired directed grey-box fuzzer[C]// Proc of ACM SIGSAC Confe-rence on Computer and Communications Security. New York:ACM Press, 2018: 2095-2108.

        [6]Huang Heqing, Guo Yiyuan, Shi Qingkai, et al. Beacon: directed grey-box fuzzing with provable path pruning[C]//Proc of IEEE Symposium on Security and Privacy. Piscataway,NJ:IEEE Press, 2022: 36-50.

        [7]Zong Peiyuan, Lyu Tao, Wang Dawei, et al. FuzzGuard: filtering out unreachable inputs in directed grey-box fuzzing through deep learning[C]//Proc of the 29th USENIX Security Symposium. Berkeley, CA: USENIX Association,2020: 2255-2269.

        [8]Srivastava P, Nagy S, Hicks M, et al. One Fuzz doesn’t fit all: optimizing directed fuzzing via target-tailored program state restriction[C]// Proc of the 38th Annual Computer Security Applications Conference. New York:ACM Press, 2022: 388-399.

        [9]Du Zhengjie, Li Yuekang, Liu Yang, et al. WindRanger: a directed greybox fuzzer driven by deviation basic blocks[C]//Proc of the 44th International Conference on Software Engineering. New York:ACM Press, 2022: 2440-2451.

        [10]Zhu Xiaogang, B?hme M. Regression greybox fuzzing[C]// Proc of ACM SIGSAC Conference on Computer and Communications Security. New York:ACM Press, 2021: 2169-2182.

        [11]Chen Yaohui, Li Peng, Xu Jun, et al. SAVIOR: towards bug-driven hybrid testing[C]//Proc of IEEE Symposium on Security and Privacy. Piscataway,NJ:IEEE Press, 2020: 1580-1596.

        [12]Zheng Han, Zhang Jiayuan, Huang Yuhang, et al. FISHFUZZ: catch deeper bugs by throwing larger nets[C]//Proc of the 32nd USENIX Security Symposium. Berkeley, CA: USENIX Association, 2023: 1343-1360.

        [13]sterlund S, Razavi K, Bos H,et al. ParmeSan: Sanitizer-guided greybox fuzzing[C]//Proc of the 29th USENIX Security Symposium. Berkeley, CA: USENIX Association, 2020: 2289-2306.

        [14]Wang Shen, Jiang Xunzhi, Yu Xiangzhan, et al. KCFuzz: directed fuzzing based on keypoint coverage[C]// Pro of the 7th International Conference,ICAIS. Cham: Springer, 2021: 312-325.

        [15]Sreedhar V C, Gao Guang, Lee Y F. Incremental computation of dominator trees [J]. ACM Trans on Programming Languages and Systems, 1997, 19 (2): 239-252.

        [16]Lengauer T, Tarjan R E. A fast algorithm for finding dominators in a flowgraph [J]. ACM Trans on Programming Languages and Systems, 1979, 1(1): 121-141.

        [17]Luo Changhua, Meng Wei, Li Penghui. SelectFuzz: efficient directed fuzzing with selective path exploration[C]//Proc of IEEE Symposium on Security and Privacy. Piscataway,NJ:IEEE Press, 2023: 2693-2707.

        [18]Gao Wentao, Pham V T, Liu Dongge, et al. Beyond the coverage plateau: a comprehensive study of fuzz blockers (registered report)[C]//Proc of the 2nd International Fuzzing Workshop.New York: ACM Press, 2023: 47-55.

        [19]Stephens N, Grosen J, Salls C,et al. Driller: augmenting fuzzing through selective symbolic execution[C]// Proc of Network and Distributed System Security Symposium. 2016.

        [20]Poeplau S, Francillon A. Symbolic execution with SymCC: don’t interpret, compile![C]//Proc of the 29th USENIX Security Symposium. Berkeley, CA: USENIX Association, 2020: 181-198.

        [21]Triton: a dynamic binary analysis library [EB/OL]. (2023-12-04). https://triton-library. github. io/.

        [22]SVF-tools. SVF-tools/SVF [EB/OL]. (2023-12-06). https://github. com/SVF-tools/SVF.

        [23]Ghavamnia S, Palit T, Mishra S, et al. Temporal system call speciali-zation for attack surface reduction[C]//Proc of the 29th USENIX Security Symposium.Berkeley, CA: USENIX Association, 2020: 1749-1766.

        [24]Hazimeh A, Herrera A, Payer M. Magma: a ground-truth fuzzing benchmark [C]// Proc of ACM Conference on Measurement and Analysis of Computing Systems.New York:ACM Press, 2020: 1-29.

        [25]Lee H, Kim S, Cha S K.Fuzzle: making a puzzle for fuzzers[C]//Proc of the 37th IEEE/ACM International Conference on Automated Software Engineering. New York: ACM Press, 2022: 1-12.

        [26]Metzman J, Szekeres L, Simon L, et al. FuzzBench: an open fuzzer benchmarking platform and service[C]// Proc of the 29th ACM Joint Meeting on European Software Engineering Conference and Sympo-sium on the Foundations of Software Engineering. New York:ACM Press,2021: 1393-1403.

        [27]TheAFL+fuzzing framework [EB/OL]. AFLplusplus [EB/OL]. (2023-11-27). https://aflplus. plus/.

        [28]Liang Hongliang, Yu Xinglin, Cheng Xianglin, et al. Multiple targets directed greybox fuzzing [J]. IEEE Trans on Dependable and Secure Computing, 2024,21(1):325-339.

        [29]SoftSec-KAIST/Fuzzle at multi-target [EB/OL]. (2024-01-16). https://github. com/SoftSec-KAIST/Fuzzle/tree/multi-target.

        [30]Clang Static Analyzer—Clang 18.0.0 git documentation [EB/OL]. (2023-11-26). https://clang. llvm. org/docs/ClangStaticAnalyzer. html.

        [31]Serebryany K, Bruening D, Potapenko A, et al. AddressSanitizer: a fast address sanity checker[C]//Proc of USENIX Annual Technical Conference. Berkeley, CA: USENIX Association, 2012: 309-318.

        伊人色综合九久久天天蜜桃 | 中文乱码字幕精品高清国产| av毛片在线播放网址| 亚洲中文字幕不卡一区二区三区| av网站在线观看二区| 亚洲精品中文字幕乱码无线| 国产三级精品和三级男人| 国产一区二区三区激情视频| 久青草影院在线观看国产| 久久久中日ab精品综合| 日韩av东京社区男人的天堂| 色欲人妻综合网| 99re久久精品国产| 国产精品久久国产精品99gif| 欧美人成在线播放网站免费| 亚洲精品AⅤ无码精品丝袜无码| 精品国产自拍在线视频| 国产精品性色av麻豆| 欧洲美女黑人粗性暴交视频| 天天影视性色香欲综合网| 无码国产激情在线观看| 欧美亚洲国产丝袜在线| 亚洲一区二区在线视频,| 亚洲av手机在线播放| 亚洲在线视频免费视频| 亚洲一区自拍高清亚洲精品| 超薄丝袜足j好爽在线观看| 欧美日韩精品一区二区三区高清视频 | 亚洲高清国产成人精品久久| 精品卡一卡二乱码新区| 久久9精品区-无套内射无码| 特黄aa级毛片免费视频播放| www.亚洲天堂.com| 激情五月天色婷婷久久| 人妻丝袜中文无码av影音先锋专区| 激情综合丁香五月| 国产成人vr精品a视频| 五月婷婷六月激情| 日本国产在线一区二区| 高清国产亚洲精品自在久久| 大学生粉嫩无套流白浆|