SmartSeed: Smart Seed Generation for Efficient Fuzzing

摘要              

模糊測試是一種自動化的應用程序漏洞檢測方法。對於基於遺傳算法的模糊測試,它可以對用戶提供的種子文件進行變異,以獲得一些輸入,然後用於測試目標應用程序,以觸發潛在的崩潰。如現有文獻所示,種子文件的選擇對模糊處理的效率至關重要。然而,目前的種子選擇策略似乎並不比隨機選擇種子文件好。因此,本文提出了一種新的通用系統SmartSeed,以實現種子文件的高效模糊化。具體來說,SmartSeed是基於機器學習模型設計的,用於學習和生成高價值的二進制種子。我們在12個輸入格式爲MP3、BMP或FLV的開源應用程序上評估了SmartSeed和American Fuzzy Lop(AFL)。我們還將smartseed與不同的模糊工具相結合,以檢查其兼容性。通過大量的實驗,我們發現smartseed有以下優點:首先,它只需要幾十秒就可以生成足夠的高價值種子。第二,它可以生成具有多種輸入格式的種子,對於大多數具有相同輸入格式的應用程序,它可以顯著提高模糊性能。第三,SmartSeed與不同的模糊工具兼容。總的來說,我們的系統比現有的12個評估應用程序的最佳種子選擇策略發現兩次以上的唯一崩潰和5040個額外的唯一路徑。從SmartSeed發現的崩潰中,我們發現了16個新的漏洞,並收到了它們的CVE ID。 

Index Terms—Fuzzing, vulnerability detection, seed generation.

一.導言

應用程序錯誤是指計算機系統的應用程序(如操作系統或圖像瀏覽器)中的錯誤,事故或故障,導致其出現錯誤。 有幾種常見的應用程序錯誤類型,如緩衝區溢出,整數溢出,UAF等。

應用程序錯誤可能會造成巨大的危害。 Therac-25的應用程序錯誤導致了幾名患者的死亡[12]。 1996年6月4日,阿麗亞娜5號火箭在升空後僅四十秒就爆炸了。 這是由於申請錯誤造成的,並且損失了價值5億美元的貨物[16]。 2002年,美國國家標準與技術研究院(NIST)的一項研究估計,應用程序漏洞每年損失595億美元[21]。 因此,應用程序錯誤可能導致安全問題和財務損失。 在應用程序錯誤導致事故或被攻擊者利用之前找到並修復它們非常重要。

幾十年來,對應用程序錯誤檢測進行了廣泛的研究。學術界和工業界有幾種現有的主要技術,如動態污點分析,符號執行和模糊測試。

動態污點分析是檢測應用程序錯誤的最常用方法之一[13],[14]。它將不受信任的輸入數據標記爲污染。然後,分析工具在應用程序運行時跟蹤所有受污染數據的軌跡。如果在某些危險的內存中使用了受污染的數據,則分析會認爲檢測到錯誤。通過以這種方式發現錯誤,動態污點分析具有低誤報率。但是,由於分析需要在應用程序運行時添加必要的檢查並跟蹤數據跟蹤,因此動態污點分析的執行效率較低。

符號執行是一種通過將整個過程視爲求解約束來檢測錯誤的方法[22],[23]。它將目標應用程序的輸入視爲變量X,並試圖找出X與應用程序的執行路徑之間的關係。如果符號執行工具運行到分支語句中,它將記錄兩個約束,每個分支一個約束。因此,當符號執行完成時,用戶具有一堆約束,每個約束對應於目標應用程序的一條執行路徑。如果用戶想要分析其中一條路徑,則可以解決相應的約束以獲得相應的X.換句話說,用戶獲得相應的輸入來測試目標執行路徑。符號執行可以準確定位應用程序中的錯誤。但是,它的可擴展性很差。當目標應用很大時,最終的等式變得太複雜而無法解決。

模糊測試是檢測應用程序崩潰的最有效方法之一。與其他類型方法不同,模糊測試不分析哪些數據或哪些代碼導致崩潰。模糊測試工具使用簡單而有效的方法來檢測崩潰。它會生成大量輸入文件。然後,該工具使用這些輸入測試目標應用程序,並檢測應用程序是否表現異常。如果目標應用程序碰巧發生崩潰,則模糊測試工具將存儲觸發崩潰的輸入文件。通過這種方式,模糊測試工具可以檢測崩潰並獲得觸發崩潰的輸入文件。然後,用戶可以研究這些輸入文件,以確定目標應用程序是否存在錯誤。但是,由於模糊測試不考慮如何在客觀應用程序中觸發崩潰,因此檢測崩潰的整個過程是盲目的。幸運的是,藉助當前強大的計算功能,模糊測試工具可以使用大量輸入文件在短時間內多次測試目標應用程序。因此,模糊測試可能會發現更多崩潰。在本文中,我們專注於爲模糊測試提供更好的種子集,以發現更多的崩潰。

如今,現代應用程序更大,更復雜,這使得根據需要更難以適應模糊測試工具。爲了提高模糊效率,研究人員通常會按照兩個方向制定改進策略:設計更好的模糊測試工具並使用更好的模糊化種子組。

在第一個方向之後,有許多工作專注於設計更好的工具或改進當前的模糊測試工具。

基於生成規則的模糊測試工具可以學習目標應用的輸入格式[6],[15],[19],[20],[26]。然後,他們可以根據輸入格式生成高度結構化的輸入文件。當其他模糊測試工具花費大部分時間通過格式檢查時,基於生成的模糊測試工具使用生成的高度結構化文件來測試應用程序的執行。因此,基於生成的模糊測試工具更好地檢測檢查輸入文件的語法特徵和語義規則的應用程序的崩潰。

基於遺傳算法的模糊測試工具不考慮目標應用的輸入格式。根據遺傳算法,這些工具通過字節翻轉,交叉等改變初始輸入種子集。然後,爲了發現崩潰,工具將初始輸入種子集和變異的輸入文件作爲應用程序的輸入。由於它們對目標應用程序幾乎沒有先驗知識,因此基於突變的模糊測試工具可以非常有效地工作。但是,由於簡單的崩潰檢測策略,有時它們會卡住。爲了提高基於突變的模糊測試工具的效率,許多研究將模糊測試工具與其他漏洞檢測技術相結合,如靜態分析,污點分析和符號執行[4],[5],[7],[17], [18]。還有其他一些研究表明,刺激模糊測試工具來改善覆蓋範圍和測試低頻路徑可以提高模糊測試的效率[2],[3],[39],[40],其中提出了基於他們觀點的新的模糊測試工具分別。

提高模糊測試工具效率的第二個方向是使用更好的種子組。 Allen和Foote提出了一種算法來考慮參數選擇和種子文件的自動選擇[25]。該算法在開源Basic Fuzzing Framework(BFF)中實現。 Woo等人。開發了一個分析框架來評估26個隨機在線調度算法,這些算法可以安排更好的種子來模糊程序[24]。 2014年,Rebert等人。評估了六種模糊選種策略,並展示瞭如何選擇最佳選擇策略[1]等。

然而,目前的種子選擇策略有許多不足之處。例如,某些策略需要大量時間來獲取種子集[1]。更重要的是,通過我們的實驗和上述工作[1]證明,當前的種子選擇策略在許多應用場景中表現不穩定。此外,在許多情況下,它們與隨機種子選擇相比沒有明顯的優勢。

因此,爲了解決如何在沒有高度結構化的輸入格式的情況下爲應用程序獲得更好的種子集的問題,我們提出了以下啓發式問題:

Q1:我們能否快速有效地生產有價值的種子?正如我們之前討論的那樣,許多現有的種子選擇策略都很慢,這對於模糊測試來說是不合適的。更重要的是,現有的解決方案在許多情況下無法產生有效的種子。因此,爲了解決這些限制,我們的主要目標是研究如何利用最先進的機器學習技術快速自動生成有效的種子,而不是研究如何選擇種子。

Q2:我們能否以穩健的方式生產有價值的種子?基於我們已經找到了快速有效的種子生成策略的假設,如果SmartSeed只能爲某些特定的輸入格式生成有價值的種子,或者我們每次想要使用模糊新應用程序時重新訓練模型,它仍然是低效的。相同的輸入格式。因此,我們的第二個目標是設計一個強大的種子生成系統。它應該能夠爲多種輸入格式生成有價值的種子。此外,我們只需要爲任何類型的輸入格式訓練模型。然後,此模型生成的文件可以使用此輸入格式提高其他應用程序的模糊測試性能。

Q3:我們能否以兼容的方式生成有價值的種子?如果我們的系統只能爲特定的模糊測試工具生成有價值的種子,那麼對於大多數模糊測試案例來說是沒有什麼好期望的,爲了提高兼容性,我們的目標是設計一種種子生成策略,該策略可以與不同的模糊測試工具結合並提高其性能。

根據上述啓發式問題,在本文中,我們提出了一種新的種子生成系統SmartSeed,以提供具有更好種子集的模糊測試工具,如圖1所示。

基本上,SmartSeed的工作流程包括三個階段。

(1)準備。 SmartSeed是一個基於機器學習的系統。 要引導SmartSeed,我們需要準備必要的訓練數據。 具體來說,我們收集一些常規文件並使用它們來模糊一些應用程序,通過常用的模糊工具,如American Fuzzy Lop(AFL)[11]。 然後,我們收集觸發唯一崩潰的輸入文件或新路徑作爲訓練數據。 請注意,此步驟僅用於收集必要的訓練數據以引導SmartSeed(然後可用於生成用於模糊許多應用程序的種子),並且可以在實踐中輕鬆實現。 我們在第II-B節中展示了細節。

(2)模型構建。 爲了使SmartSeed在實踐中易於擴展,我們提出了一種轉換機制,將原始訓練數據編碼爲通用矩陣,然後將其用於構建種子生成的生成模型。 利用生成模型,我們生成有效的文件作爲種子。

(3)模糊測試。 利用從構建的生成模型生成的種子,我們使用模糊測試工具(例如,AFL)來發現客觀應用程序的崩潰。

請注意,整個過程可以形成閉環。 機器學習模型可以生成有效的種子文件,以幫助模糊測試工具發現新的崩潰和客觀應用程序的路徑。 然後,可以使用觸發新崩潰或路徑的補充輸入文件來優化和增強SmartSeed中的機器學習模型的訓練集。

在SmartSeed的幫助下,用戶可以有效地生成有價值的輸入種子集。 我們對12種開源應用的評估表明,與最先進的種子選擇策略相比,SmartSeed顯着提高了模糊測試的性能。 本文的主要貢獻可歸納如下:

  • 我們提出了一個名爲SmartSeed的基於機器學習的系統,用於爲模糊測試應用程序生成有價值的二進制種子文件,而無需高度結構化的輸入格式。
  • 結合AFL,我們使用輸入格式(如mp3,bmp或flv)評估SmartSeed在12個開源應用程序上生成的種子文件。 與最先進的種子選擇策略相比,SmartSeed發現了608個額外的獨特崩潰和5,040個額外的新路徑,而不是現有的最佳策略。
  •  我們進一步將SmartSeed與其他流行的模糊測試工具結合起來檢驗其兼容性:(1)與AFLFast結合[2],SmartSeed仍然是每種應用的最佳種子策略。(2)SmartSeed + honggfuzz [29]發現六個目標應用程序中有五個最崩潰。(3)在評估的種子選擇/生成策略中,只有SmartSeed在使用VUzzer [3]作爲模糊測試工具時發現ps2ts和mp42aac上的崩潰。

我們進一步分析了SmartSeed生成的種子集和其他最先進的種子選擇策略,並提出了一些有趣的發現,以啓發模糊測試的研究。 通過t-SNE [30]可視化,SmartSeed生成的種子文件更接近觸發崩潰或路徑的最有價值的文件。 同時,觸發獨特崩潰的SmartSeed文件覆蓋了最大的區域,這意味着生成的文件更容易變異爲更離散的有價值文件。 更重要的是,我們意識到執行速度是發現崩潰的不正確指標。 然而,更大代的種子有助於模糊測試工具發現更多獨特的路徑。 總的來說,SmartSeed在9個應用程序中發現了23個獨特的漏洞,其中包括16個未被發現的漏洞。 最後,我們開源SmartSeed的代碼,預計將有助於未來的模糊研究1。

本文的其餘部分安排如下。 在第二節中,我們描述了SmartSeed的細節。 我們在12個應用中評估SmartSeed和現有的最先進的種子選擇策略,將SmartSeed與不同的模糊測試工具結合起來,並分析第III節中不同種子選擇策略發現的漏洞的結果。 在第八節中,我們進一步分析了不同種子選擇策略的表現。 在第五節中,我們進行了一些討論,並指出了我們工作的侷限性。 我們在第VI節中總結了這篇論文。 我們提供更多評估結果,並通過補充文件中的備註總結相關工作。

II.SMARTSEED

A.系統架構

SmartSeed的核心思想是構建一個生成模型。 然後,我們使用此模型快速生成有價值的文件作爲模糊工具的輸入種子集。

如圖2所示,SmartSeed的整個架構可分爲4個程序:

(1)訓練數據收集:我們引入一個衡量輸入文件值的標準,並提出一種獲取SmartSeed訓練集的方法(部分)II-B)。

(2)原始數據轉換:爲了處理具有不固定格式或不固定文件大小的文件,我們將原始訓練數據的二進制文件轉換爲統一類型的矩陣(第II-C節)。

(3)模型構建:以矩陣作爲訓練數據,構建基於Wasserstein生成對抗網絡的種子生成模型(第II-D節)。

(4)逆向轉換:基於生成模型,我們生成新的矩陣並將它們轉換爲適當的輸入文件,這是程序(2)(第II-E節)的逆過程。

在我們的系統中,使用的模糊測試工具可以是靈活的,即SmartSeed可以與大多數現有的基於突變的模糊測試工具結合使用。 由於AFL是現有效率最高的模糊測試工具之一[11],因此默認情況下,我們選擇AFL作爲我們實現中的模糊測試工具。

B.培訓數據收集

爲了構建用於生成有價值的種子文件的機器學習模型,我們需要首先獲得初始訓練集。當然,我們希望確保訓練集中的輸入文件真正有價值。否則,SmartSeed可能無法學習“有價值的輸入文件”的有用功能,並進一步生成此類文件。因此,我們首先澄清有價值的輸入文件。具體來說,在我們的實現中,我們將有價值的文件定義爲觸發唯一崩潰或應用程序的唯一路徑的輸入文件。原因如下:(1)由於模糊測試的最終目標是檢測更多崩潰,如果輸入文件可以觸發客觀應用程序的獨特崩潰,則認爲輸入文件是有價值的; (2)根據現有研究[2],[3],[39],[40],增加模糊路徑的覆蓋範圍和深度更有可能增加探索崩潰的次數。因此,從這個角度來看,觸發新路徑的文件也是有價值的。

直觀地,我們可以使用現有的種子選擇策略來選擇一些有價值的輸入文件作爲訓練集。然而,根據現有的研究[1]和我們的實驗結果,目前的種子選擇策略似乎是不可靠的。然後,我們意識到像AFL這樣的模糊測試工具將存儲觸發獨特崩潰或路徑的輸入文件,這些文件完全符合我們的需求。因此,我們有以下培訓數據收集策略:我們可以首先使用從Internet收集的常規輸入文件來使用相同的輸入格式模糊應用程序。然後,我們收集有價值的輸入文件,這些文件觸發這些應用程序的唯一路徑或獨特崩潰,作爲SmartSeed的訓練集。

需要注意的是,上述訓練集的構建並不是SmartSeed在實踐中的限制。首先,確定有價值的輸入文件的標準是它可以觸發崩潰或新路徑,這在實踐中可以由AFL輕鬆實現。其次,對於具有相同輸入格式的應用程序,例如處理mp3的應用程序,我們可以同時模糊多個應用程序以方便訓練集構建過程,同時增加訓練集中輸入文件的多樣性。第三,由於我們可以並行運行許多模糊測試程序,我們可以進一步加快訓練集收集過程,例如,我們可以在一週內收集超過20,000個有價文件,用於一種輸入格式。因此,我們可以在實踐中輕鬆快速地構建SmartSeed訓練集

通過這種方式收集訓練集,我們還具有以下優勢:

我們可以準確地評估輸入文件的值。 訓練集中的輸入文件當然可以檢測到唯一路徑或觸發某些應用程序的唯一崩潰。 因此,它們具有有用的學習功能。

在模糊測試過程中,我們發現觸發崩潰或新路徑的許多文件的格式都已損壞。 我們分析原因是文件是根據所採用的遺傳算法隨機變異的,並且似乎被破壞的文件更有可能觸發唯一的崩潰和路徑。 但是,很難從Internet收集大量損壞的文件,而SmartSeed可以訓練以按預期生成許多損壞的文件。

C.原始數據轉換

爲了構建通用種子生成模型,我們提出了一種機制,將訓練集中的原始輸入文件轉換爲統一類型的矩陣。進行這種轉換的原因如下。

首先,我們的目標之一是使SmartSeed處理多種輸入格式和不固定的文件大小。然而,爲不同種類和不同尺寸的文件調整數據讀取模式是不方便的。因此,我們應該找出一種從訓練集中讀取數據的統一方法。其次,訓練集中許多文件的格式已損壞。諸如將bmp圖片文件作爲三維矩陣讀取的正常讀取方式可能在許多應用場景中不起作用。第三,基於機器學習算法更好地處理矩陣的定量值而不是某些隨機值類型的知識,我們期望找到一種可以將多種類型的文件轉換爲統一類型的矩陣的方法。最後,我們期望以二進制形式的訓練文件表達魔術字節。因爲通過這種方式,機器學習模型將更容易學習控制代碼執行路徑的魔術字節的特徵。因此,文件應以二進制形式讀取,並期望轉換爲統一矩陣。

下面,我們介紹原始訓練數據轉換的主要步驟,如圖3所示。

(1)由於所有文件都可以二進制形式讀取,我們可以讀取任何類型文件的二進制形式並獲得二進制字符串。
(2)爲了處理如何識別二進制字符串結束的問題,我們用Base64對字符串進行編碼。因此,我們有由64種字符和“=”形成的字符串,例如圖3中所示的字符串。
(3)現在,由於字符串可能有65個不同的字符,爲方便起見,我們將Base64和“=”的字符轉換爲數字(從0到64)。因此,我們獲得了一串數字,如圖3所示。這種轉換的編碼機制如圖4所示。
(4)爲了節省矩陣中元素的數量,我們將數字串的每六個數字轉換爲大量的十進制數。然後,我們將十進制系統的數量標準化爲[0,0.75418890624](因爲65^{6}-1= 75418890624),以確保模型訓練的準確性和效率。最後,如果存在空元素,則在矩陣的末尾添加0,如圖3所示。

由於較大的數字將以科學記數法形式存儲並失去一些準確性,因此矩陣的一個元素只能在十進制系統中存儲一個數字,該數字最多從六個數字(從0到64)轉換。 但是,如果文件大小在實際應用場景中較小,則用戶可以選擇小於6的數字。 請注意,將數字轉換爲一個較大的數字越少,機器學習模型就越容易學習輸入文件的功能。 我們在實驗中轉換了6個數字,以測試機器學習模型最困難的情況。

利用上述方法,我們可以將具有損壞格式或未固定文件大小的原始文件轉換爲統一類型的矩陣。 這可以顯着提高SmartSeed的可擴展性和兼容性。

D.模型構建

最好的現有生成模型之一是生成性對抗網絡(GAN)模型,自2014年以來已被廣泛用於無監督學習[8]。 GAN是一個由生成模型和判別模型組成的新框架。 生成模型試圖生成與訓練集中的實際數據類似的僞數據,而判別模型試圖將僞數據與真實數據區分開。 兩個模型交替地一起工作以相互訓練並進一步相互改進。 結果,生成模型將生成太真實的數據,以通過判別模型來區分。 通常,GAN提供的生成模型可以生成比其他算法更真實的數據。 但是,訓練GAN模型是不穩定的。 GAN還存在許多問題,例如模型崩潰。

Radford等。 嘗試了多種機器學習方案組合,爲GAN構建更好的生成和判別模型。 他們提出了深度卷積GAN(DCGAN)模型[9]。 DCGAN可以生成比標準GAN更真實的數據,並且更容易進行培訓。 然而,它仍然存在許多問題,包括模型崩潰。

2017年,Arjovsky等人。 介紹了Wasserstein GAN(WGAN)模型[10]。 與其他GAN模型不同,WGAN提高了學習的穩定性。 訓練WGAN模型也更容易。 此外,WGAN可以解決大多數應用場景中GAN模式崩潰的問題

因此,出於我們的目的,我們使用WGAN來學習有價值文件的特徵,然後生成有價值的種子文件。我們的選擇還具有以下優點。首先,WGAN可以自己學習訓練集的功能。因此,我們不需要注意特徵選擇,這非常節省時間。另一個優點是我們可以自由選擇合適的機器學習模型作爲WGAN的生成模型和判別模型。我們分析了多層感知器(MLP)更多地關注矩陣中的每個定量值,而卷積神經網絡(CNN)更關注矩陣的全局特徵。然後,爲了構建更好的模型,我們測試兩個神經網絡模型的性能。對於我們的應用,MLP確實比CNN更好地作爲WGAN的生成和判別模型。它還需要較少的培訓時間。因此,我們選擇MLP作爲SmartSeed中的模型。現在,基於收集的訓練數據,我們可以訓練有價值的種子生成的生成模型。

注意,WGAN的詳細描述可以在[10]中找到。由於我們在本文中的重點是構建一個基於GAN的高效模糊測試框架並進一步證明其有效性,因此我們將開發改進的GAN模型的研究留作未來的工作。此外,SmartSeed的用戶可以根據應用場景選擇替代機器學習模型作爲生成模型。

E.逆轉換

在本小節中,我們將介紹如何使用SmartSeed的生成模型來獲得有效的輸入種子集。 由於SmartSeed的訓練集是許多矩陣,因此訓練生成模型以生成類似的矩陣。 要獲取用於模糊測試的二進制輸入文件,我們必須將生成的矩陣轉換爲二進制文件。 因此,我們與第II-C節中的上述程序相反。

具體而言,第一步是將矩陣的[0,0.75418890624]元素恢復爲大量的十進制系統。 其次,將十進制系統的每個數字轉換爲六個數字(從0到64),即數字字符串,如圖3所示。然後,將數字(從0到64)轉換爲Base64的字符和“= “即,如圖3所示的字符串。最後,將Base64的字符串解碼爲二進制文件並將其存儲在本地。 因此,我們獲取以下模糊測試的輸入文件。

IV。更深入的分析

爲了找出SmartSeed比其他種子選擇策略表現更好的原因,我們採用了t-SNE [30],它是可以將相似數據聚合在一起的最佳降維算法之一,可視化分佈。我們分析了不同種子選擇策略和來自這些種子的變異文件生成的輸入種子的相似分佈,這是理解模糊性能的新角度(更多細節在補充文件中給出)。

A.執行計數

對於大多數(如果不是全部)現有流行的基於coverage的greybox模糊測試工具(如AFL),它們旨在優先處理變異快速執行的種子文件。這種設計基於這樣的直覺:快速執行的種子更有可能變異爲也快速執行的輸入文件,因此,可以在固定時間內對目標應用程序進行更多測試,然後發生更多潛在的崩潰可能會找到。爲了測量種子集(或平均輸入文件)的執行速度,我們可以使用執行計數,其被定義爲在一段時間內由模糊測試工具執行的測試/執行時間的數量。顯然,更大的執行計數意味着可以從種子中更改更多輸入文件以測試應用程序,並且平均每個輸入文件的執行速度更快。

現在,在與表III中的實驗相同的設置下,我們分析由SmartSeed生成的種子的執行計數和最先進的種子選擇策略。結果如表VII所示。考慮到表III和表VII中的結果,我們發現:雖然SmartSeed + AFL是大多數評估方案中發現崩潰和路徑的最有效策略,但它在大多數情況下沒有最大的執行計數。例如,SmartSeed + AFL使用較少的輸入文件發現更多崩潰和路徑。例如,SmartSeed + AFL是唯一能夠發現magick崩潰而其執行次數最少的策略。因此,根據表III和表VII中的結果,我們得出結論,執行計數與發現的崩潰和路徑數之間沒有明確的相關性。

上述分析引出了一個有趣的見解。這可能是一種誤解,即具有更快執行速度的種子文件可以發現更多獨特的崩潰或路徑。雖然這些種子可以生成更多文件並且可以更多次地測試目標應用程序,但是大多數生成的文件可以執行已知路徑,因此可能什麼都發現不了。因此,有價值的種子更有利於有效的模糊測試而不是快速執行。

B.生成分析

對於基於遺傳算法的模糊測試,我們通常使用生成來測量輸入文件和種子文件之間的變異/生成關係。例如,初始種子文件的生成是“1”,從種子文件變異/生成的文件具有“2”的生成,並且類似地,從具有生成k的文件變異/生成的文件有一代k + 1。

然後,在與表III中的實驗相同的設置下,我們顯示錶VII中每種種子策略的所有生成文件中的最大代數。綜合考慮表III和表VII中的結果,我們發現一般來說,更多代意味着更好的覆蓋性能。在除了avconv之外的評估的12個應用中的11箇中,最獨特的路徑是由最後一代或倒數第二代模糊測試策略發現的。例如,最大的SmartSeed生成量比mp3gain,mpg123,magick,bmp2tiff,sam2p和mp42aac上的其他種子生成/選擇策略要大得多,同時,SmartSeed在這些應用程序上具有更好的覆蓋性能。

因此,根據我們的結果和分析,我們還有另一個有趣的見解:代數與種子策略的覆蓋性能之間存在正相關關係。這可以解釋SmartSeed的重大覆蓋範圍改進。

請注意,許多研究人員爲增加覆蓋範圍做了大量工作以發現更多崩潰。現在我們瞭解到更好的種子集也可以提高覆蓋率。

五,討論

在本節中,我們從第一節中提出的三個啓發式問題開始,對SmartSeed進行了一些討論。然後,我們將討論本文的侷限性和未來的工作。

Q1:我們能否快速有效地生產有價值的種子?從表II中,SmartSeed的種子生成過程是線性可擴展且快速的。爲流行的模糊測試工具生成足夠的種子文件只需要幾十秒。此外,正如我們在第III部分中評估的那樣,當模糊多種實際應用時,SmartSeed明顯優於現有的種子選擇策略。因此,正如預期的那樣,SmartSeed可以快速有效地生成有效的種子。

Q2:我們能否以穩健的方式生產有價值的種子?如第II部分所示,SmartSeed被設計爲通用系統,可爲應用程序生成有價值的種子,而無需高度結構化的格式。我們還實現了這個系統,爲不同格式的應用程序生成種子。如第三部分所示,一旦SmartSeed的生成模型被構建,它可以用於以相同/相似的格式模糊許多應用,同時,其性能明顯優於最先進的種子選擇技術。因此,根據我們的評估,SmartSeed可以穩健地生成有價值的種子。

Q3:我們能否以兼容的方式生成有價值的種子?如第III部分所示,SmartSeed可與現有流行的模糊測試工具輕鬆兼容。此外,在大多數情況下,它們的模糊測試性能也可以得到改善。因此,SmartSeed易於擴展和兼容。由於篇幅限制,我們在補充文件中展示了本文的侷限性和未來工作。

VI.結論

在本文中,我們提出了一種名爲SmartSeed的新型無監督學習系統,用於生成用於模糊測試的有價值的輸入種子文件。 與最先進的種子選擇策略相比,當我們使用AFL模擬12種不同輸入格式的開源應用程序時,SmartSeed發現了608個額外的獨特崩潰和5,040個額外的獨特路徑。 然後,我們將SmartSeed與不同的模糊測試工具結合起來。 評估結果表明,SmartSeed易於兼容,同時非常有效。 爲了進一步瞭解SmartSeed的性能,我們對SmartSeed生成的種子進行了更多的分析,並提出了一些有趣的發現,以啓發我們對有效模糊測試的瞭解。 更重要的是,我們在SmartSeed的9個應用程序中發現了23個獨特的漏洞,並獲得了16個未發現的CVE ID。 最後,我們將開源SmartSeed系統,預計將有助於未來的模糊測試研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章