国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件漏洞模糊測試的關(guān)鍵分支探索及熱點更新算法

2024-08-17 00:00唐成華蔡維嘉林和強保華
計算機應(yīng)用研究 2024年7期

摘 要:在軟件開發(fā)及應(yīng)用中,由于具有可復(fù)現(xiàn)性,模糊測試能夠幫助發(fā)現(xiàn)漏洞和有針對性地對漏洞成因進行分析。為了解決模糊測試過程的效率及測試力度等問題,提出了軟件漏洞模糊測試的關(guān)鍵分支探索及熱點更新算法。該方法通過捕獲、分析和利用受檢程序在處理測試用例時的執(zhí)行位置的關(guān)鍵信息,以指導(dǎo)模糊測試過程的探索方向和測試用例的生成。實驗結(jié)果表明,提出的方法相較于傳統(tǒng)隨機發(fā)散的模糊測試方法在漏洞發(fā)現(xiàn)能力上有較大提升,在Otfcc、Swftools等14個開源程序中發(fā)現(xiàn)了100余個未被公布的漏洞,為模糊測試用于軟件漏洞檢測提供了新的可靠途徑。

關(guān)鍵詞:模糊測試;代碼分析;關(guān)鍵分支;漏洞檢測

中圖分類號:TP301 文獻標志碼:A 文章編號:1001-3695(2024)07-036-2179-05

doi: 10.19734/j.issn.1001-3695.2023.11.0508

Algorithm of key branch exploration and hotspot update for software vulnerability fuzzy testing

Abstract:In software development and application, due to its reproducibility, fuzzy testing can help identify vulnerabilities and analyze the causes of vulnerabilities in a targeted manner. In order to address the issues of efficiency and testing intensity in the fuzzy testing process, this paper proposed a key branch exploration and hotspot update algorithm for software vulnerability fuzzy testing. This method guided the exploration direction of the fuzzy testing process and the generation of test cases by capturing, analyzing, and utilizing key information on the execution position of the inspected program when processing test cases. The experimental results show that the proposed method has a significant improvement in vulnerability detection ability compared to the traditional randomly divergent fuzzy testing methods, and more than 100 undisclosed vulnerabilities were found in 14 open source programs such as Otfcc and Swftools which providing a new and reliable approach for using fuzzy testing to detect software vulnerability.

Key words:fuzzy testing; code analysis; key branch; vulnerability detection

0 引言

模糊測試是一種通過向系統(tǒng)注入隨機或異常數(shù)據(jù)來發(fā)現(xiàn)應(yīng)用程序或系統(tǒng)中的潛在漏洞和軟件缺陷的測試方法,已廣泛應(yīng)用于Web應(yīng)用程序、移動應(yīng)用程序、網(wǎng)絡(luò)協(xié)議、操作系統(tǒng)與內(nèi)核、數(shù)據(jù)庫系統(tǒng)、物聯(lián)網(wǎng)設(shè)備等領(lǐng)域的缺陷或潛在漏洞檢測[1~6]。 作為典型的模糊測試工具,Google推出的基于代碼覆蓋率的AFL,使用測試用例所能觸發(fā)到的受檢程序功能代碼與整體代碼(插樁得到部分)的比值來衡量當前測試用例發(fā)現(xiàn)漏洞、程序安全違例事件的潛力,藉此考察測試用例是否應(yīng)當保留,以用作后續(xù)突變產(chǎn)生新測試用例的母本,其核心思想在于基于測試所能覆蓋到的代碼體量占比越大,發(fā)現(xiàn)程序脆弱點的可能性越大[7]?;谠摲椒ǖ哪:郎y試工具在過去很長時間被Google、Microsoft、Adobe等諸多公司或廠商付諸應(yīng)用,實踐證明了其有效性。一方面,AFL在編譯受檢程序時進行插樁處理,為每個插樁單元生成一個隨機標識符來唯一標識當前程序位置[8],同時通過捕獲受檢程序的分支執(zhí)行情況來實現(xiàn)代碼覆蓋率的檢測。另一方面,AFL測試用例的生成采用樣本突變方式,其原生的突變操作包括byteflip 、bitflip、arithmetic inc/dec、interesting values、user extras、auto extras、random bytes、insert bytes、cross over等類型,執(zhí)行測試用例后會記錄該用例的執(zhí)行路徑覆蓋情況,并且評估該測試用例,指導(dǎo)后續(xù)新的用例的生成[9]。

實際上,傳統(tǒng)隨機發(fā)散的模糊測試方法存在著一些不足,例如過于依賴代碼覆蓋率的樣本質(zhì)量評估指標,由于不能進入某些程序保護邏輯等原因,導(dǎo)致同樣具備漏洞存在可能的部分程序代碼的探索用時較長,或者測試力度不足以觸發(fā)程序異常所帶來的漏報率[10]。可能帶來測試代碼覆蓋率問題的一段代碼如下:

其中,第3行的if條件分支中的代碼體量相對該處else分支的代碼體量而言更大,在衡量測試用例質(zhì)量的代碼覆蓋率關(guān)鍵指標上表現(xiàn)更優(yōu),存在使得模糊測試的測試方向傾向于分支條件為true的部分,而忽略了導(dǎo)致對該處分支條件為false的分支的發(fā)現(xiàn),或者由于測試強度不足以觸發(fā)這一分支下的錯誤(crash)而導(dǎo)致的發(fā)現(xiàn)效率低、漏報等情況。

Dinesh等人[11]認為程序模糊化對閉源二進制文件安全分析是可行的,基于代碼覆蓋率引導(dǎo)對二進制文件進行模糊化重寫,并保證其在性能上與編譯器插入的二進制文件相同。佘庚達等人[12]基于二進制程序靜態(tài)分析提出了用于驅(qū)動程序運行信息監(jiān)控和漏洞挖掘的模糊測試工具。Li等人[13]考慮到傳統(tǒng)模糊測試方法面向多字節(jié)保護邏輯時,單字節(jié)枚舉正確有利于測試,但因為無法體現(xiàn)代碼覆蓋率指標,導(dǎo)致諸多生成的測試用例無法針對這些保護邏輯進行測試而使效率低下,所以對相關(guān)位置代碼進行重寫,使得保護邏輯字段首字節(jié)的枚舉正確性得以反映在用于指導(dǎo)fuzzer變異的代碼覆蓋率上,并將該有效樣本送入下一輪的迭代再生成。Lemieux等人[14]提出一種自動識別稀有分支的方法,并結(jié)合一種新穎的突變掩碼創(chuàng)建算法,該算法將突變偏向于生成命中給定稀有分支的輸入。Ganesh等人[15]利用動態(tài)污點追蹤來識別原始種子輸入文件中影響關(guān)鍵程序攻擊點所用值的區(qū)域,然后對這些區(qū)域進行模糊處理,生成新的測試輸入文件,這些文件保留了原始種子輸入文件的底層語法結(jié)構(gòu),并指出此技術(shù)對于測試具有復(fù)雜、高度結(jié)構(gòu)化輸入文件格式的程序效果顯著。Ma等人[16]提出一種基于遺傳算法和BI-LST神經(jīng)網(wǎng)絡(luò)的模糊測試樣本生成框架,以獲得一個同時具有代碼覆蓋率和漏洞挖掘能力的樣本集,用于程序的關(guān)鍵執(zhí)行路徑,重點關(guān)注了路徑深度探索能力評估指標,使探索能夠發(fā)現(xiàn)原本無法發(fā)現(xiàn)的漏洞??偟膩碚f,諸多研究方法仍然體現(xiàn)了如何在模糊測試過程中完成對受檢程序內(nèi)部代碼的快速探索,以快速提升測試所能覆蓋到的更廣泛的代碼,以及如何生成高效、高質(zhì)量的測試用例是模糊測試技術(shù)在實踐中存在的挑戰(zhàn)。

本文借鑒AFL,通過對樣本突變操作所生成新的測試用例的質(zhì)量評估,保留具備更高潛力(主要體現(xiàn)在代碼覆蓋率上)的樣本,并作為用于后續(xù)突變生成新的測試用例的母本的思路,提出面向軟件漏洞模糊測試的關(guān)鍵分支探索及熱點更新算法及應(yīng)用方法,旨在解決針對受檢程序內(nèi)部關(guān)鍵分支的識別及其快速探索,以及高質(zhì)量測試用例生成方法等問題。將程序保護邏輯及其相關(guān)指令作為關(guān)鍵特征分支,結(jié)合合法樣本和非法樣本兩類樣本,在受檢程序內(nèi)部的處理過程中捕獲關(guān)鍵分支位置特征信息。通過比對這些指令位置的操作數(shù)、寄存器等執(zhí)行信息的差異,篩查并快速探索價值相對較高的關(guān)鍵分支,進而使用程序局部性原理結(jié)合測試用例的評估結(jié)果與突變位置構(gòu)建樣本突變熱點位記錄模塊,為樣本突變階段生成測試用例提供指導(dǎo)。

1 面向關(guān)鍵分支的軟件漏洞模糊測試模型

為了有效地提升代碼探索效率及漏洞檢測能力,構(gòu)建面向關(guān)鍵分支的軟件漏洞模糊測試模型,如圖1所示,主要包括關(guān)鍵分支篩選、分支內(nèi)部快速探索和突變熱點區(qū)域記錄三個模塊。首先,關(guān)鍵分支篩選負責完成對受檢程序內(nèi)部關(guān)鍵分支的篩選,利用靜態(tài)分析并結(jié)合受檢程序?qū)y試用例的處理過程,具體地執(zhí)行上下文信息,完成對程序敏感代碼或執(zhí)行檢查的識別與定位。該模塊的輸出結(jié)果僅保留滿足篩選條件的部分,即被認為對接收輸入合法性敏感的、具有較高探索價值的分支選擇指令。其次,分支內(nèi)部快速探索是結(jié)合關(guān)鍵分支篩選模塊的處理結(jié)果,負責對程序內(nèi)部分支的快速探索,該探索過程中會對受檢程序內(nèi)部運行進行干預(yù),目的在于提升受檢程序內(nèi)部分支的發(fā)現(xiàn)效率,同時,期望檢測出程序內(nèi)部更加隱蔽的漏洞,這是因為某些更加隱蔽、難以檢出的安全漏洞更常與非常規(guī)程序執(zhí)行流程或不正確的狀態(tài)轉(zhuǎn)換相關(guān)。最后,突變熱點區(qū)域記錄是在單個測試用例執(zhí)行結(jié)束后的樣本評估時執(zhí)行,主要是利用當前測試用例的執(zhí)行結(jié)果表現(xiàn),根據(jù)程序局部性原理,去評估當前樣本的突變位置在代碼覆蓋率、誘發(fā)受檢程序出現(xiàn)安全違例事件的可能性等潛力設(shè)置樣本熱點位圖,樣本熱點位圖中的熱度信息可為后續(xù)樣本突變階段的突變操作位置提供指導(dǎo)。

2 關(guān)鍵分支篩選

關(guān)鍵分支是指那些對接受輸入合法性較為敏感的部分分支,所對應(yīng)的選擇指令典型的有checksum、magic bytes check等[17]。對于接收輸入的合法性敏感,意味著這部分相應(yīng)的內(nèi)容在面向輸入合法性存在差異的內(nèi)容時,程序內(nèi)部的執(zhí)行上下文會存在不同程度的差異,進而表現(xiàn)出程序行為的差異。輸入合法性是指程序預(yù)期進行處理的內(nèi)容。模糊測試的基礎(chǔ)思想正是通過生成大量的畸形數(shù)據(jù),增加輸入非法樣本的可能產(chǎn)生比例,進而期望這些內(nèi)容能夠?qū)е鲁绦虺霈F(xiàn)安全違例事件。分支篩選的目的,一方面是為了避免測試工作負擔呈現(xiàn)指數(shù)型爆炸式增長,在犧牲部分探索價值不高的位置換取測試整體效率的提升;另一方面,價值不高的內(nèi)容并非真正丟棄,模糊測試的基本方法仍可能覆蓋未被選中的部分并完成測試。

首先,對關(guān)鍵分支位置的特征進行提取,由于其實施特征通常以cmp/轉(zhuǎn)移指令、test/轉(zhuǎn)移指令的方式出現(xiàn),所以使用靜態(tài)分析對滿足條件的內(nèi)容進行初步篩選。其次,為了確定那些對于接收輸入合法性敏感的位置,通過提交給受檢程序二類樣本(合法樣本和非法樣本),根據(jù)轉(zhuǎn)移指令je的邏輯,檢測受檢程序?qū)@些樣本的實際執(zhí)行過程中具體的相關(guān)執(zhí)行上下文的差異進行進一步篩查。要注意的是,je的實施邏輯與標志寄存器的內(nèi)容高度相關(guān)。

算法1 關(guān)鍵分支篩選

算法1的第1、2行輸入合法和非法兩類樣本并交付給受檢程序執(zhí)行,如果執(zhí)行到靜態(tài)分析初步篩選得出的關(guān)鍵分支標志轉(zhuǎn)移指令所在位置時,記錄相應(yīng)的標志寄存器內(nèi)容。記錄的內(nèi)容以hash表形式存放,鍵值以指令地址計算得出。第4行中,記錄對非法與合法兩類樣本都覆蓋的內(nèi)容。后續(xù)算法將對當前的檢查點(spot)進行特征檢查,以je指令為例,對于合法樣本和非法樣本,算法會記錄它們執(zhí)行到檢查點時的標志寄存器內(nèi)容,并檢查與je指令相關(guān)的標志位。如果存在差異(第7行),既當前的檢查點是一個對于輸入合法性比較敏感的校驗位置,具有較高的探索價值,因此將其保存進入關(guān)鍵分支篩選結(jié)果checkPointArray,并作為算法輸出。

3 分支內(nèi)部快速探索

3.1 分支干預(yù)與探索

分支內(nèi)部快速探索旨在完成受檢程序內(nèi)部快速探索的目的。通常,一些難以檢測的安全漏洞常常與非常規(guī)程序執(zhí)行流程或不正確的狀態(tài)轉(zhuǎn)換有關(guān)。因此,針對關(guān)鍵分支篩選模塊的執(zhí)行結(jié)果(即敏感位),分支內(nèi)部快速模塊干預(yù)程序的運行,即在這些位置對相應(yīng)寄存器內(nèi)容設(shè)定反值,以更改程序執(zhí)行分支的陷入方向。通常,這些敏感位置與程序的執(zhí)行分支選擇密切相關(guān)。對受檢程序內(nèi)部的快速探索如圖2所示。

干預(yù)可以視為非常規(guī)程序執(zhí)行流程或不正確的狀態(tài)轉(zhuǎn)換。如果在受檢程序的后續(xù)執(zhí)行過程中發(fā)生崩潰,則修復(fù)相應(yīng)的樣本。傳統(tǒng)模糊測試工具在評估樣本質(zhì)量時通常會保留表現(xiàn)優(yōu)秀的測試用例作為后續(xù)突變的母本,同時丟棄表現(xiàn)差的樣本。實際上,表現(xiàn)差的樣本也具有突變母本的某些特質(zhì),因此,這類樣本也可以作為操作對象,并且不會干擾主測試的進程。

算法2 分支內(nèi)部快速探索

算法2的第2行,pickPosToTwist方法隨機選擇執(zhí)行程序干預(yù)的位置,該操作可以先行降低后續(xù)可能啟動的樣本修復(fù)所導(dǎo)致的修復(fù)開銷。第7行checkPointArray是通過算法1得出,與程序的執(zhí)行分支轉(zhuǎn)移和輸入的合法性密切相關(guān)。選取通過關(guān)鍵分支篩選得出的敏感位置進行控制流程的干預(yù),可以快速探索受檢程序內(nèi)部的邏輯,以及檢出那些與非常規(guī)程序執(zhí)行流程或不正確狀態(tài)轉(zhuǎn)換相關(guān)的、隱蔽性較好的漏洞。在實施干預(yù)分支陷入方向后,如果受檢程序?qū)Ξ斍皽y試用例的執(zhí)行效果有提升(如crash或測試代碼覆蓋率有提升),則啟動樣本修復(fù)模塊進行后續(xù)操作,否則視當前所干預(yù)的分支為冗余操作,通過執(zhí)行第31行的rollback方法標記相應(yīng)的分支轉(zhuǎn)移位置,后續(xù)不再對其進行干預(yù),該操作同樣可以降低后續(xù)可能啟動的樣本修復(fù)所導(dǎo)致的資源開銷。

3.2 樣本修復(fù)

樣本修復(fù)模塊與分支內(nèi)部快速探索模塊協(xié)同工作,用于在快速探索模塊中對關(guān)鍵分支轉(zhuǎn)移位置實施干擾,并且修復(fù)因干預(yù)導(dǎo)致效益提升的樣本。采用受限性引用符號執(zhí)行技術(shù),即僅針對實施干預(yù)部分的節(jié)點實施技術(shù)應(yīng)用,這是由快速探索模塊的策略決定的[18]??焖偬剿髂K中,pickPosToTwist方法對干預(yù)位置的選擇是隨機的,也就是對checkPointArray中隨機挑選部分位置實施干預(yù),并非全部實施干預(yù),使得符號執(zhí)行應(yīng)用過程中的求解工作量減少。

另一方面,算法2中的rollback方法對于無表現(xiàn)提升的干預(yù)位置進行回退操作,其目的也在于降低符號執(zhí)行應(yīng)用過程中的求解工作量。針對分支轉(zhuǎn)移位置checkPoint cp進行干預(yù)的過程,如圖3所示,原執(zhí)行分支在該位置的轉(zhuǎn)移目的分支被干預(yù)。如果對checkPoint cp實施干預(yù)未帶來測試用例表現(xiàn)的提升,則執(zhí)行rollback方法進行回退,因此不存在對該點的干預(yù)后果承擔修復(fù)資源開銷的情況。如果對checkPoint cp實施干預(yù)帶來測試用例表現(xiàn)的提升,則需要進行修復(fù),此時符號執(zhí)行技術(shù)所需要修復(fù)的部分僅是相關(guān)的躍遷路徑(branch_src, branch_dst),從而降低符號執(zhí)行的求解復(fù)雜度。

4 突變熱點區(qū)域記錄

程序的執(zhí)行,在一段時間內(nèi)只限于程序中的某一部分,因此對于單次突變時選擇的突變位置,如果在測試階段執(zhí)行結(jié)束后,樣本質(zhì)量評估階段表現(xiàn)優(yōu)異,則確認該突變位置有價值。為了標記這些突變位置,采取對輸入用例的每個字節(jié)位置設(shè)置唯一標識符的方案,在突變過程中記錄相應(yīng)的突變位置。在樣本評估階段,根據(jù)執(zhí)行結(jié)果的表現(xiàn),將當前突變位置及其附近幾個單元視為熱度區(qū)域,構(gòu)建樣本熱點位圖,為后續(xù)的突變環(huán)節(jié)提供指導(dǎo),幫助突變模塊生成更高質(zhì)量的測試用例,從而提高測試的效率。

算法3 突變熱點更新

算法3根據(jù)突變位置的表現(xiàn)來更新熱點區(qū)域,可以為后續(xù)的突變環(huán)節(jié)提供指導(dǎo),使測試主要用在執(zhí)行高效的突變操作上。其中,updateHotzone方法用于更新熱點區(qū)域,它根據(jù)所關(guān)注的幾種運行結(jié)果狀態(tài),有以下三種更新:

a)如果執(zhí)行結(jié)果包含crash,則說明當前選中的樣本Hotzone的突變位置curMutatePos作為樣本突變階段的操作對象,存在相關(guān)字段的突變,導(dǎo)致程序測試過程出現(xiàn)crash,因此當前突變位置的熱度會相應(yīng)地提升。

b)如果執(zhí)行結(jié)果顯示本次測試過程覆蓋了新的代碼路徑,則說明當前選中的樣本Hotzone的突變位置curMutatePos作為樣本突變階段的操作對象,對于提升代碼覆蓋率有探索價值,因此當前突變位置的熱度會相應(yīng)地提升。

c)如果執(zhí)行結(jié)果顯示本次測試過程對受檢程序的代碼覆蓋率沒有提升,則說明當前選中的樣本Hotzone的突變位置curMutatePos作為樣本突變階段的操作對象,對于提升代碼覆蓋率沒有探索價值,因此當前突變位置的熱度會相應(yīng)地下降。

5 實驗結(jié)果與分析

實驗環(huán)境是6核3.0 GHz的Intel i5-12500H CPU,16 GB RAM,Ubuntu LTS 18.04操作系統(tǒng)。實驗選用Otfcc、Swftools、Xpdf、Swfmill、PNGdec等16個開源應(yīng)用。初始樣本的收集來自對應(yīng)項目的以往issue的相關(guān)POC文件,以及網(wǎng)絡(luò)收集的作為輸入的樣本集,樣本集的收集階段能夠很好地提升測試任務(wù)的起點。

a)采用本文方法在14個目標程序中測試發(fā)現(xiàn)了100余個未被公布的漏洞,均已獲得了CVE 編號(見https://cve.mitre.org/)。方法在檢測錯誤數(shù)(crash)、去重后錯誤數(shù)(unique)、錯誤檢出效率(EDE)以及是否執(zhí)行樣本修復(fù)(repaired?)方面的情況如表1所示,其中,錯誤檢出效率是指在對應(yīng)測試應(yīng)用中每小時發(fā)現(xiàn)的錯誤數(shù)量。

b)本文方法對受檢應(yīng)用進行模糊檢測后發(fā)現(xiàn)的新漏洞(部分)及其安全等級和所屬漏洞類型如表2所示,其中所涉及的漏洞類型包括heap buffer overflow、use after free、stack overflow、global buffer overflow、FPE、memory leak、segmentation violation等。

c)實驗將本文方法與隨機發(fā)散的模糊測試方法AFL[7]及其優(yōu)化方案FairFuzz[14]進行了對比。檢測出的去重(unique)后的漏洞情況如表3所示,從整體(覆蓋了發(fā)現(xiàn)漏洞的14個受檢目標程序)的漏洞發(fā)現(xiàn)情況來看,針對已檢出的漏洞類型,本文方法在檢出能力上均有所提升。在測試時間段內(nèi),相較于隨機發(fā)散的AFL和FairFuzz方法未能檢出use after free這類與程序操作的先后順序、執(zhí)行邏輯強相關(guān)的漏洞,本文方法則有著很好的檢出效果。其原因在于,盡管一些難以檢測的安全漏洞常常與非常規(guī)程序執(zhí)行流程或不正確的狀態(tài)轉(zhuǎn)換有關(guān),而本文方法利用關(guān)鍵分支篩選得出這些敏感位置并進行干預(yù),繼而通過分支內(nèi)部快速探索算法,對這類特殊邏輯相關(guān)的漏洞卻有較好的檢出能力提升。

另外,以O(shè)tfcc測試項目為例,對比本文方法與AFL和FairFuzz的隨測試時間發(fā)展的測試結(jié)果,如圖2所示,在漏洞發(fā)現(xiàn)情況以及unique漏洞發(fā)現(xiàn)情況的評估指標上,本文方法的表現(xiàn)均優(yōu)于AFL和FairFuzz。在測試用時50 h內(nèi),隨著測試用時的增加,模糊測試的深度與廣度都會相應(yīng)加大,檢出的錯誤或漏洞也呈遞增趨勢。由于代碼內(nèi)部邏輯作為類樹結(jié)構(gòu)在實際中不能全覆蓋,同時,因為理論上有無窮多的隨機輸入組合,使得模糊測試在理論上不會停止,但隨著測試用時的投入,新發(fā)現(xiàn)的概率會越來越少,即在測試用時16 h之后的檢出漏洞數(shù)增長趨勢變緩。通常在測試過程中,距離上次發(fā)現(xiàn)新的代碼分支或程序異常已經(jīng)過去5 h(即時間限制)、達到預(yù)設(shè)的測試用例數(shù)、達到預(yù)設(shè)的代碼覆蓋率或路徑覆蓋率、發(fā)現(xiàn)預(yù)設(shè)數(shù)量的漏洞或錯誤,或者資源消耗達到預(yù)設(shè)極限等就可以終止測試[19]。

6 結(jié)束語

本文主要通過篩選并評估受檢程序內(nèi)部存在的諸多分支,篩選有價值位置進行探索,對篩選位置所涉及的分支挖掘更高的漏洞發(fā)現(xiàn)能力。這些具有探索價值較高的分支,受限于傳統(tǒng)模糊測試方法在測試用例上的突變隨機性,不能總是在測試過程中被納入測試范圍,通過分支內(nèi)部快速探索模塊中的干預(yù)分支選擇方式完成對這些分支的測試。在模糊器生成測試用例階段,根據(jù)測試用例的執(zhí)行結(jié)果更新并維護樣本突變熱點區(qū)域,指導(dǎo)測試用例突變操作所作用的位置,向那些能帶來效益提升的位置傾斜。實驗結(jié)果驗證了本文方法的有效性,相比于AFL和FairFuzz均有較大的漏洞發(fā)現(xiàn)能力的提升。不足之處在于,通過構(gòu)建樣本突變熱點區(qū)域的方式指導(dǎo)突變操作的位置,雖然去除了傳統(tǒng)模糊測試方法的隨機性,但可能使得一些低頻、被判定探索價值低的程序邏輯被測試忽略,因此可能存在一定的漏報。樣本突變熱點區(qū)域的多樣性及熱點能力細分是下一步研究的方向。

參考文獻:

[1]Kumar R,Baz A,Alhakami H,et al. A hybrid fuzzy rule-based multi-criteria framework for sustainable-security assessment of Web application [J]. Ain Shams Engineering Journal,2021,12(2): 2227-2240.

[2]Weng Le,F(xiàn)eng Chao, Shi Zhiyuan,et al. FASSFuzzer—an automated vulnerability detection system for android system services [J]. Journal of Computers(Taiwan),2022,33(2): 189-200.

[3]Liu Xinyao, Cui Baojiang, Fu Junsong,et al. HFuzz: towards automa-tic fuzzing testing of NB-IoT core network protocols implementations [J]. Future Generation Computer Systems,2020,108: 390-400.

[4]肖天,江智昊,唐鵬,等. 基于深度強化學習的高性能導(dǎo)向性模糊測試方案 [J]. 網(wǎng)絡(luò)與信息安全學報,2023,9(2): 132-142. (Xiao Tian,Jiang Zhihao,Tang Peng,et al. High-performance directional fuzzing scheme based on deep reinforcement learning [J]. Chinese Journal of Network and Information Security,2023,9(2): 132-142.)

[5]盧昊良,鄒燕燕,彭躍,等. 基于物聯(lián)網(wǎng)設(shè)備局部仿真的反饋式模糊測試技術(shù) [J]. 信息安全學報,2023,8(1): 78-92.(Lu Hao-liang,Zou Yanyan,Peng Yue,et al. Feedback-driven fuzzing techno-logy based on partial simulation of IoT devices [J]. Journal of Cyber Security,2023,8(1): 78-92.)

[6]Trippel T,Shin K G,Chernyakhovsky A,et al. Fuzzing hardware like software [C]// Proc of the 31st USENIX Security Symposium. Berkeley,CA: USENIX Association,2022: 3237-3254.

[7]Fioraldi A,Mantovani A,Maier D,et al. Dissecting American fuzzy lop: a FuzzBench evaluation [J]. ACM Trans on Software Engineering and Methodology,2023,32(2): 1-26.

[8]王明哲,姜宇,孫家廣. 模糊測試中的靜態(tài)插樁技術(shù) [J]. 計算機研究與發(fā)展,2023,60(2): 262-273.(Wang Mingzhe,Jiang Yu,Sun Jiaguang. Static instrumentation techniques in fuzzing testing [J]. Journal of Computer Research and Development,2023,60(2): 262-273.)

[9]劉盈盈,楊秋輝,姚邦國,等. 基于依賴模型的REST接口測試用例生成方法研究 [J]. 計算機科學,2023,50(9): 101-107.(Liu Yingying,Yang Qiuhui,Yao Bangguo,et al. Study on REST API test case generation method based on dependency model [J]. Computer Science,2023,50(9): 101-107.)

[10]李賀,張超,楊鑫,等. 操作系統(tǒng)內(nèi)核模糊測試技術(shù)綜述 [J]. 小型微型計算機系統(tǒng),2019,40(9): 1994-1999.(Li He,Zhang Chao,Yang Xin,et al. Survey of OS kernel fuzzing [J]. Journal of Chinese Computer System,2019,40(9): 1994-1999.)

[11]Dinesh S,Burow N,Xu Dongyan,et al. RetroWrite: statically instrumenting cots binaries for fuzzing and sanitization [C]// Proc of the 41st IEEE Symposium on Security and Privacy. Piscataway,NJ: IEEE Press,2020: 1497-1511.

[12]佘庚達,付才,岑澤威,等. 基于適應(yīng)度和輸入約束模型的內(nèi)核驅(qū)動漏洞挖掘 [J]. 計算機應(yīng)用研究,2023,40(7): 2151-2156.(She Gengda,F(xiàn)u Cai,Cen Zewei,et al. Kernel driver vulnerability mining based on fitness and input constraint model [J]. Application Research of Computers,2023,40(7): 2151-2156.)

[13]Li Yuekang, Chen Bihuan, Chandramohan M,et al. Steelix: program-state based binary fuzzing [C]// Proc of the 11th Joint Meeting on Foundations of Software EnfX2igwv9iyZlYBGZ/wp3oUygL97nN0fLjMeVyvB3oAM=gineering. New York: ACM Press,2017: 627-637.

[14]Lemieux C,Sen K. FairFuzz: a targeted mutation strategy for increasing greybox fuzz testing coverage [C]// Proc of the 33rd ACM/IEEE International Conference on Automated Software Engineering. Piscataway,NJ: IEEE Press,2018:475-485.

[15]Ganesh V,Leek T,Rinard M. Taint-based directed whitebox fuzzing [C]// Proc of the 31st International Conference on Software Engineering. Washington DC: IEEE Computer Society,2009: 474-484.

[16]Ma Mingrui,Han Lansheng,Qian Yekui. CVDF DYNAMIC—a dynamic fuzzy testing sample generation framework based on BI-LSTM and genetic algorithm [J]. Sensors,2022,22(3): 1265.

[17]戴渭,陸余良,朱凱龍. 結(jié)合混合符號執(zhí)行的導(dǎo)向式灰盒模糊測試技術(shù) [J]. 計算機工程,2020,46(8): 190-196.(Dai Wei,Lu Yuliang,Zhu Kailong. Directed grey-box fuzzing test technology combining mixed symbolic execution [J]. Computer Engineering,2020,46(8): 190-196.)

[18]吳皓,周世龍,史東輝,等. 符號執(zhí)行技術(shù)及應(yīng)用研究綜述 [J]. 計算機工程與應(yīng)用,2023,59(8): 56-72.(Wu Hao,Zhou Shilong,Shi Donghui,et al. Review of symbolic execution technology and applications [J]. Computer Engineering and Applications,2023,59(8): 56-72.)

[19]Bohme M,Pham V T,Roychoudhury A. Coverage-based greybox fuz-zing as Markov chain [J]. IEEE Trans on Software Engineering,2019,45(5): 489-506.