• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

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

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

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

    本文的主要貢獻(xiàn)如下:

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

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

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

    1 背景

    1.1 定向模糊測試

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

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

    1.2 問題描述

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

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

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

    以圖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。

    在多目標(biāo)環(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?;诨緣K距離計算四個種子的距離: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],能覆蓋目標(biāo)或者“距離”目標(biāo)近的種子應(yīng)獲得更高的能量和優(yōu)先級。在這四個種子中,種子z沒有到達(dá)任何目標(biāo),理論上,max{Dist(w),Dist(x),Dist(y)}應(yīng)小于Dist(z),然而Dist(z)=Dist(x)lt;Dist(y),表明未覆蓋任何目標(biāo)的種子z比覆蓋了目標(biāo)T的種子獲得了更多能量和更高優(yōu)先級。

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

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

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

    2 方法設(shè)計

    2.1 解決思路與方法概述

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

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

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

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

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

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

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

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

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

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

    目標(biāo)完全支配節(jié)點(diǎn)集合為

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

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

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

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

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

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

    以圖4為例,圖4(a)是程序過程間控制流圖iCFG,程序中包含4個目標(biāo)位置,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é)點(diǎn)All_DP(p)和完全支配節(jié)點(diǎn)集合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}。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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é)點(diǎn) */

    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é)點(diǎn)的路徑修剪

    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

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

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

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

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

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

    Q=NhitNall(4)

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

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

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

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

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

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

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

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

    3 實(shí)驗(yàn)評估

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

    3.1 實(shí)驗(yàn)設(shè)置

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

    對比基線:將MTDFuzz與以下模糊測試工具進(jìn)行對比測試。

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

    實(shí)驗(yàn)環(huán)境:本文實(shí)驗(yàn)運(yù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測試集是一個廣泛用于評估模糊測試性能的基準(zhǔn)測試集,它包含了多個程序庫中的漏洞: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),這種特性并不足以證明多目標(biāo)定向模糊測試方法的有效性,因此在本文的測試中,這些漏洞被剔除。

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

    本文使用Magma提供的默認(rèn)語料庫作為初始種子,進(jìn)行了10次每次24小時的實(shí)驗(yàn)評估。使用Magma提供的分析腳本對實(shí)驗(yàn)結(jié)果進(jìn)行分析,實(shí)驗(yàn)結(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)漏洞的平均時間并進(jìn)行比較,從表1和2中可以看出,MTDFuzz相較于AFL++(啟用cmplog選項(xiàng)),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 多目標(biāo)探索能力實(shí)驗(yàn)

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

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

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

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

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

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

    實(shí)驗(yàn)結(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來看,在多個目標(biāo)漏洞引導(dǎo)環(huán)境下,MTDFuzz具有更強(qiáng)的多漏洞復(fù)現(xiàn)能力。

    3.5 真實(shí)漏洞檢測能力實(shí)驗(yàn)

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

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

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

    此外,為了驗(yàn)證多目標(biāo)定向模糊測試工具M(jìn)TDFuzz在實(shí)際開源軟件0-day漏洞挖掘中的應(yīng)用效果,采用兩種方式標(biāo)定需測試的目標(biāo)位置集合:a)最近提交或頻繁變更的代碼區(qū)域(與長期未修改已經(jīng)徹底測試的舊代碼相比,新提交的代碼中存在漏洞的風(fēng)險更高);b)利用靜態(tài)分析工具Clang Static Analyzer檢測可能存在漏洞的代碼。通過以上目標(biāo)標(biāo)定指引,MTDFuzz在Glibc、FFmpeg、logrotate和tinyexr四個開源軟件中發(fā)現(xiàn)了12個未公開漏洞,并得到了開發(fā)人員的確認(rèn),其中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挖掘過程及漏洞成因進(jìn)行簡要說明,logrotate程序是Linux操作系統(tǒng)中常用的日志文件處理程序,該漏洞的代碼片段如圖8所示。

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

    3.6 測試總結(jié)

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

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

    4 結(jié)束語

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

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

    參考文獻(xiàn):

    [1]任澤眾, 鄭晗, 張嘉元, 等. 模糊測試技術(shù)綜述 [J]. 計算機(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]. 計算機(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]. 計算機(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.

    99在线人妻在线中文字幕| 美女 人体艺术 gogo| 欧美黑人巨大hd| 久久6这里有精品| 国产一区二区在线av高清观看| 日韩欧美精品v在线| 我的老师免费观看完整版| 搞女人的毛片| 国产av麻豆久久久久久久| 看片在线看免费视频| 啦啦啦韩国在线观看视频| 亚洲欧美日韩无卡精品| 免费无遮挡裸体视频| 波野结衣二区三区在线| 欧美日韩综合久久久久久 | 国产色婷婷99| 国产精品亚洲av一区麻豆| 给我免费播放毛片高清在线观看| 噜噜噜噜噜久久久久久91| 搡老岳熟女国产| 美女黄网站色视频| 一区二区三区高清视频在线| 夜夜看夜夜爽夜夜摸| 成年版毛片免费区| 少妇的逼水好多| 日韩大尺度精品在线看网址| 看片在线看免费视频| 99久久99久久久精品蜜桃| 亚洲天堂国产精品一区在线| 老司机午夜十八禁免费视频| 久久天躁狠狠躁夜夜2o2o| 性色avwww在线观看| 国产精华一区二区三区| 能在线免费观看的黄片| 亚洲成av人片免费观看| 最新在线观看一区二区三区| 精品人妻一区二区三区麻豆 | av在线观看视频网站免费| 五月伊人婷婷丁香| 91在线精品国自产拍蜜月| 亚洲欧美激情综合另类| 久久精品国产亚洲av涩爱 | 午夜福利成人在线免费观看| 偷拍熟女少妇极品色| 黄色女人牲交| 日本免费a在线| 日韩有码中文字幕| 看片在线看免费视频| 在线观看av片永久免费下载| 成人三级黄色视频| 亚洲精品在线美女| 好男人电影高清在线观看| 亚洲欧美日韩无卡精品| 1000部很黄的大片| 国内精品美女久久久久久| 97碰自拍视频| 亚洲精品亚洲一区二区| 好男人电影高清在线观看| 1000部很黄的大片| 亚洲精品一区av在线观看| 神马国产精品三级电影在线观看| 国产精品一区二区性色av| ponron亚洲| 男人舔奶头视频| 欧美不卡视频在线免费观看| 啦啦啦韩国在线观看视频| 99久久99久久久精品蜜桃| 色5月婷婷丁香| 在线十欧美十亚洲十日本专区| 国产熟女xx| 又黄又爽又免费观看的视频| 免费av观看视频| a级一级毛片免费在线观看| 久久久久久久亚洲中文字幕 | 国产免费av片在线观看野外av| 亚洲片人在线观看| 国产精品av视频在线免费观看| 精华霜和精华液先用哪个| 日本五十路高清| 永久网站在线| 一区二区三区激情视频| 变态另类成人亚洲欧美熟女| 欧美最新免费一区二区三区 | 婷婷精品国产亚洲av在线| av天堂中文字幕网| 黄色一级大片看看| 三级男女做爰猛烈吃奶摸视频| 老熟妇仑乱视频hdxx| 国产真实伦视频高清在线观看 | 757午夜福利合集在线观看| 亚洲av中文字字幕乱码综合| 欧美激情国产日韩精品一区| 伊人久久精品亚洲午夜| 内射极品少妇av片p| 亚洲精品一卡2卡三卡4卡5卡| 亚洲经典国产精华液单 | 国产精品久久久久久人妻精品电影| 91久久精品国产一区二区成人| 丝袜美腿在线中文| 亚洲人与动物交配视频| 国产中年淑女户外野战色| 久久精品国产99精品国产亚洲性色| 成人鲁丝片一二三区免费| 日本黄色片子视频| 国产大屁股一区二区在线视频| 国产色爽女视频免费观看| 看免费av毛片| 日韩欧美国产在线观看| 精品久久久久久成人av| 老司机福利观看| 日日夜夜操网爽| 亚洲精品一卡2卡三卡4卡5卡| 日韩人妻高清精品专区| 无遮挡黄片免费观看| 九九久久精品国产亚洲av麻豆| 90打野战视频偷拍视频| 欧美一区二区国产精品久久精品| 亚洲七黄色美女视频| 九色成人免费人妻av| 亚洲av美国av| 亚洲综合色惰| 成年女人永久免费观看视频| 免费看a级黄色片| 在线天堂最新版资源| 欧美+日韩+精品| 国产成+人综合+亚洲专区| 99久久99久久久精品蜜桃| 欧美zozozo另类| 精品免费久久久久久久清纯| 性色avwww在线观看| 少妇人妻精品综合一区二区 | 中文字幕久久专区| 精品久久久久久成人av| 亚洲国产色片| 日韩欧美免费精品| 亚洲av成人av| 日本五十路高清| av中文乱码字幕在线| 婷婷亚洲欧美| 国产又黄又爽又无遮挡在线| 99精品久久久久人妻精品| 午夜亚洲福利在线播放| av欧美777| 一进一出抽搐gif免费好疼| 成人国产综合亚洲| 精品久久久久久成人av| 成人性生交大片免费视频hd| 欧美激情在线99| 99国产精品一区二区蜜桃av| 精品久久久久久久末码| 99热6这里只有精品| 国内精品久久久久久久电影| 99久国产av精品| 国产色爽女视频免费观看| 久久久精品大字幕| 国产在线精品亚洲第一网站| 国产v大片淫在线免费观看| 欧美另类亚洲清纯唯美| 一进一出抽搐动态| 精品一区二区三区视频在线| 国产日本99.免费观看| 别揉我奶头 嗯啊视频| 真人做人爱边吃奶动态| 一个人看的www免费观看视频| 国产亚洲精品久久久久久毛片| 在线观看免费视频日本深夜| 久久精品91蜜桃| 亚洲 国产 在线| 亚洲自拍偷在线| 久久精品影院6| 久久久久久大精品| 久久人人爽人人爽人人片va | 欧美又色又爽又黄视频| 日本五十路高清| 在线天堂最新版资源| 波多野结衣巨乳人妻| netflix在线观看网站| 中文在线观看免费www的网站| 国产精品一区二区免费欧美| a级一级毛片免费在线观看| 成熟少妇高潮喷水视频| 真人一进一出gif抽搐免费| 精品欧美国产一区二区三| 制服丝袜大香蕉在线| 亚洲最大成人手机在线| 精品人妻熟女av久视频| 成人无遮挡网站| 亚洲欧美清纯卡通| 亚洲五月天丁香| 麻豆国产97在线/欧美| 亚洲综合色惰| 深夜精品福利| 国产伦人伦偷精品视频| 国模一区二区三区四区视频| 1024手机看黄色片| 欧美高清性xxxxhd video| 99久久成人亚洲精品观看| 国产在线精品亚洲第一网站| 99热这里只有是精品50| 在线国产一区二区在线| 免费av不卡在线播放| 无遮挡黄片免费观看| 日韩中字成人| 色噜噜av男人的天堂激情| 一区福利在线观看| 国产精品一及| 国产欧美日韩精品亚洲av| 波多野结衣高清作品| 亚洲自偷自拍三级| 精品午夜福利在线看| 性色avwww在线观看| 51国产日韩欧美| xxxwww97欧美| 在线看三级毛片| 亚洲美女搞黄在线观看 | 欧美三级亚洲精品| 国产一区二区三区视频了| 亚洲精品亚洲一区二区| 成人三级黄色视频| 精品一区二区免费观看| АⅤ资源中文在线天堂| 国产av不卡久久| 黄色视频,在线免费观看| 欧美乱妇无乱码| 精品人妻熟女av久视频| 国产精品伦人一区二区| 一本精品99久久精品77| 国产成人a区在线观看| netflix在线观看网站| 国产乱人伦免费视频| 国产乱人伦免费视频| 亚洲经典国产精华液单 | 51午夜福利影视在线观看| 亚洲精华国产精华精| 欧美乱妇无乱码| 中出人妻视频一区二区| 精品久久久久久久久久久久久| 国内精品久久久久久久电影| 天堂影院成人在线观看| 91九色精品人成在线观看| 欧美最新免费一区二区三区 | 欧美黄色片欧美黄色片| 色播亚洲综合网| 简卡轻食公司| 在线播放国产精品三级| netflix在线观看网站| 麻豆久久精品国产亚洲av| av中文乱码字幕在线| 国产精品免费一区二区三区在线| 国产一区二区三区在线臀色熟女| 一本一本综合久久| 日韩欧美在线乱码| 国产爱豆传媒在线观看| 搡老岳熟女国产| 床上黄色一级片| 日本 欧美在线| 国产日本99.免费观看| 国产综合懂色| 精品久久久久久久人妻蜜臀av| 日本熟妇午夜| 成人美女网站在线观看视频| 两人在一起打扑克的视频| 午夜精品一区二区三区免费看| 国产熟女xx| 成年女人看的毛片在线观看| 最新中文字幕久久久久| 美女xxoo啪啪120秒动态图 | 99精品在免费线老司机午夜| 欧美高清性xxxxhd video| 国产精品99久久久久久久久| 国产野战对白在线观看| 国产精品免费一区二区三区在线| 欧美色视频一区免费| 国产色爽女视频免费观看| 色综合婷婷激情| 国产精品亚洲一级av第二区| av国产免费在线观看| 成人午夜高清在线视频| 在线播放国产精品三级| 色哟哟哟哟哟哟| 一二三四社区在线视频社区8| 精品欧美国产一区二区三| 国内精品久久久久精免费| 一个人看的www免费观看视频| 亚洲自拍偷在线| 亚洲熟妇熟女久久| 嫁个100分男人电影在线观看| 日本在线视频免费播放| a级一级毛片免费在线观看| 亚洲第一区二区三区不卡| 一a级毛片在线观看| 日本免费a在线| 国产成人欧美在线观看| 亚洲国产日韩欧美精品在线观看| 亚洲精品一卡2卡三卡4卡5卡| 日韩免费av在线播放| 久久亚洲精品不卡| 最近视频中文字幕2019在线8| 亚洲最大成人手机在线| 内地一区二区视频在线| 免费在线观看日本一区| ponron亚洲| 欧美性猛交黑人性爽| 亚洲成a人片在线一区二区| 天堂影院成人在线观看| 欧美乱色亚洲激情| 国内少妇人妻偷人精品xxx网站| 热99在线观看视频| 51午夜福利影视在线观看| 真人一进一出gif抽搐免费| 午夜久久久久精精品| 少妇高潮的动态图| 亚洲精品一区av在线观看| 麻豆国产97在线/欧美| 久久九九热精品免费| 久久国产精品人妻蜜桃| 日韩国内少妇激情av| 在线观看av片永久免费下载| 久久中文看片网| 在线观看午夜福利视频| 久久久久精品国产欧美久久久| 亚洲色图av天堂| 国产高清激情床上av| 中国美女看黄片| 国产探花在线观看一区二区| 亚洲乱码一区二区免费版| 国产一区二区亚洲精品在线观看| 午夜精品在线福利| 欧美一级a爱片免费观看看| 不卡一级毛片| 麻豆国产97在线/欧美| 色视频www国产| 国产白丝娇喘喷水9色精品| 他把我摸到了高潮在线观看| 国产亚洲av嫩草精品影院| 欧美成人性av电影在线观看| 成人性生交大片免费视频hd| 可以在线观看毛片的网站| 午夜福利在线在线| 俄罗斯特黄特色一大片| 色视频www国产| 国产成+人综合+亚洲专区| 少妇人妻一区二区三区视频| 69人妻影院| 国产精品久久电影中文字幕| 在线天堂最新版资源| 日韩欧美一区二区三区在线观看| 在线观看午夜福利视频| 亚洲在线自拍视频| 成人国产一区最新在线观看| 我要看日韩黄色一级片| 婷婷丁香在线五月| 又黄又爽又免费观看的视频| 午夜影院日韩av| 69人妻影院| 久久精品国产99精品国产亚洲性色| 特级一级黄色大片| 美女大奶头视频| a在线观看视频网站| 国产在线男女| av欧美777| 日韩亚洲欧美综合| 啦啦啦韩国在线观看视频| 亚洲成人中文字幕在线播放| 丰满乱子伦码专区| aaaaa片日本免费| 成人国产综合亚洲| 久久精品夜夜夜夜夜久久蜜豆| 男女之事视频高清在线观看| 热99re8久久精品国产| 成人永久免费在线观看视频| 国产私拍福利视频在线观看| 热99re8久久精品国产| 成年女人看的毛片在线观看| 日本免费a在线| 观看免费一级毛片| 午夜影院日韩av| 欧美在线一区亚洲| 99久久精品国产亚洲精品| 亚洲国产日韩欧美精品在线观看| 亚洲激情在线av| 欧美成人一区二区免费高清观看| 亚洲天堂国产精品一区在线| 熟女电影av网| 国产一区二区在线av高清观看| 在线看三级毛片| 亚洲经典国产精华液单 | 久久国产乱子免费精品| 中文字幕熟女人妻在线| 内地一区二区视频在线| 国产高潮美女av| 99久久精品热视频| av女优亚洲男人天堂| 夜夜躁狠狠躁天天躁| 成人特级黄色片久久久久久久| 国产主播在线观看一区二区| 女人十人毛片免费观看3o分钟| 校园春色视频在线观看| 国产午夜精品论理片| 日本五十路高清| 最近视频中文字幕2019在线8| 亚洲人与动物交配视频| 日日夜夜操网爽| 一进一出抽搐gif免费好疼| 国产av不卡久久| av女优亚洲男人天堂| 精品国内亚洲2022精品成人| 99久久久亚洲精品蜜臀av| 国产91精品成人一区二区三区| 久久久久国内视频| 精品久久久久久久久久久久久| 小说图片视频综合网站| 亚洲综合色惰| 成人性生交大片免费视频hd| 窝窝影院91人妻| 精品人妻偷拍中文字幕| 欧美一区二区国产精品久久精品| 桃色一区二区三区在线观看| 亚洲精品一卡2卡三卡4卡5卡| 天堂√8在线中文| 成年女人毛片免费观看观看9| 国产精品亚洲一级av第二区| 国产精品三级大全| 亚洲不卡免费看| 国产一级毛片七仙女欲春2| 成人特级av手机在线观看| 欧美丝袜亚洲另类 | 久久草成人影院| 999久久久精品免费观看国产| 男女之事视频高清在线观看| 女人被狂操c到高潮| 国产精品亚洲美女久久久| 久久精品国产自在天天线| 亚洲五月天丁香| 成人欧美大片| 亚洲国产精品999在线| 国产精品嫩草影院av在线观看 | 日本 欧美在线| 可以在线观看毛片的网站| 国产野战对白在线观看| 欧美成人a在线观看| 欧美潮喷喷水| 无遮挡黄片免费观看| 老鸭窝网址在线观看| 中文字幕久久专区| 日韩欧美精品v在线| 午夜免费激情av| 久久久久久久久中文| 精品久久久久久久久亚洲 | 日日干狠狠操夜夜爽| 中文字幕人妻熟人妻熟丝袜美| 精品一区二区三区人妻视频| 深爱激情五月婷婷| 亚洲国产精品久久男人天堂| 欧美3d第一页| 久久久精品大字幕| 日韩欧美三级三区| 老司机午夜十八禁免费视频| 悠悠久久av| 日韩亚洲欧美综合| 精品一区二区三区视频在线观看免费| 日韩高清综合在线| 国产精品98久久久久久宅男小说| 免费搜索国产男女视频| 99久久九九国产精品国产免费| 免费人成视频x8x8入口观看| 国产成+人综合+亚洲专区| 国产私拍福利视频在线观看| 精品日产1卡2卡| 五月伊人婷婷丁香| 91麻豆av在线| 久久精品国产自在天天线| 久久久国产成人精品二区| 国产精品综合久久久久久久免费| 一区二区三区免费毛片| 亚洲午夜理论影院| 一二三四社区在线视频社区8| 亚洲av电影不卡..在线观看| 成人av一区二区三区在线看| 日本 欧美在线| 国产伦一二天堂av在线观看| 国产欧美日韩精品亚洲av| 欧美极品一区二区三区四区| 成人国产一区最新在线观看| 国产亚洲av嫩草精品影院| 国产精品乱码一区二三区的特点| 国产精品日韩av在线免费观看| 乱码一卡2卡4卡精品| 97人妻精品一区二区三区麻豆| 熟女人妻精品中文字幕| 欧美三级亚洲精品| 国产高清有码在线观看视频| 国产精品人妻久久久久久| 亚洲熟妇中文字幕五十中出| www.熟女人妻精品国产| 精品久久久久久,| 国产成人av教育| 日本黄大片高清| 日本 欧美在线| 欧美+日韩+精品| 国产一区二区激情短视频| 欧美国产日韩亚洲一区| 国产男靠女视频免费网站| 1024手机看黄色片| 亚洲专区国产一区二区| 听说在线观看完整版免费高清| 成人一区二区视频在线观看| 草草在线视频免费看| 在线看三级毛片| av在线蜜桃| 69av精品久久久久久| 国产精品人妻久久久久久| 高清日韩中文字幕在线| 国产精品亚洲av一区麻豆| 亚洲中文字幕一区二区三区有码在线看| 午夜亚洲福利在线播放| 看片在线看免费视频| 日本精品一区二区三区蜜桃| 精品久久久久久成人av| 2021天堂中文幕一二区在线观| 真人一进一出gif抽搐免费| 精品福利观看| 一个人免费在线观看电影| 国产激情偷乱视频一区二区| 亚洲av免费在线观看| 亚洲avbb在线观看| 男人舔奶头视频| 欧美色视频一区免费| 欧美最新免费一区二区三区 | 亚洲欧美清纯卡通| 成年版毛片免费区| 偷拍熟女少妇极品色| 日日摸夜夜添夜夜添小说| 丰满人妻一区二区三区视频av| 亚洲男人的天堂狠狠| 2021天堂中文幕一二区在线观| 成人性生交大片免费视频hd| 日韩中文字幕欧美一区二区| 99久久无色码亚洲精品果冻| 国产成+人综合+亚洲专区| 国产精品日韩av在线免费观看| 国产aⅴ精品一区二区三区波| 91av网一区二区| 日本撒尿小便嘘嘘汇集6| 麻豆久久精品国产亚洲av| 性色avwww在线观看| .国产精品久久| 女人十人毛片免费观看3o分钟| 国产精品99久久久久久久久| 国产精品自产拍在线观看55亚洲| 人妻丰满熟妇av一区二区三区| 国产私拍福利视频在线观看| 久久精品国产亚洲av天美| 欧美xxxx性猛交bbbb| 欧美激情久久久久久爽电影| 美女xxoo啪啪120秒动态图 | 中文字幕人成人乱码亚洲影| 99久久精品国产亚洲精品| ponron亚洲| 亚洲欧美日韩高清专用| 夜夜看夜夜爽夜夜摸| 天天躁日日操中文字幕| 特级一级黄色大片| 欧美性感艳星| 久久久久久久久久成人| 我要看日韩黄色一级片| 在线国产一区二区在线| 久久久久久国产a免费观看| 久久久精品大字幕| 99热只有精品国产| 级片在线观看| 国产精品一区二区三区四区久久| 日日摸夜夜添夜夜添小说| 90打野战视频偷拍视频| 成人永久免费在线观看视频| 噜噜噜噜噜久久久久久91| 91狼人影院| 男女之事视频高清在线观看| 欧美精品啪啪一区二区三区| 久久天躁狠狠躁夜夜2o2o| 一级黄色大片毛片| 男人的好看免费观看在线视频| 三级国产精品欧美在线观看| 男人和女人高潮做爰伦理| 两个人的视频大全免费| 午夜激情福利司机影院| 亚洲自拍偷在线| 国产精品久久电影中文字幕| 久久婷婷人人爽人人干人人爱| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 91午夜精品亚洲一区二区三区 | 久99久视频精品免费| 12—13女人毛片做爰片一| 亚洲成人久久爱视频| 久久人人精品亚洲av| 亚洲第一欧美日韩一区二区三区| avwww免费| 国产 一区 欧美 日韩| 99热只有精品国产| 欧美潮喷喷水| 嫩草影院精品99| 又黄又爽又免费观看的视频| 亚洲aⅴ乱码一区二区在线播放| 国产视频一区二区在线看| 国产真实乱freesex| av中文乱码字幕在线| 亚洲avbb在线观看| 久久久久久久久大av| 国产探花在线观看一区二区| 亚洲av日韩精品久久久久久密| 欧美日韩国产亚洲二区| 亚洲欧美日韩卡通动漫| 黄色日韩在线| 高清毛片免费观看视频网站| 国内精品美女久久久久久|