Hawkeye 定向灰盒模糊測試技術

2021-10-05 02:02:20 字數 1909 閱讀 8847

conference: ccs 2018

full *****:

slides:

hawkeye是乙個定向模糊測試技術。定向模糊測試的基本原理是通過靜態分析call graph和control flow graph,計算function/basic block level distance, target function trace closure,這些距離用於fuzzing時的種子優先度,能量排程和適應性變異,以達到定向測試的目的。本文提出4個定向型fuzzer的特性並進行改進:考慮所有到達目標點的路徑,不管長短;平衡靜態分析的開銷和實用性;合理分配能量;適應性變異策略。實驗與afl和a***o進行對比,對於某些漏洞發現的時間能從3.5個小時縮短到0.5個小時,縮短了到達目標點點時間和發現crash的時間,發現了41個unique crashes,並申請了15個cve。

定向模糊測試和一般測試的區別:

定向模糊測試的應用場景:

(1)補丁測試

(2)鑑別可疑的漏洞

(3)根據漏洞的描述去復現crash

理想的定向模糊測試工具應具備的性質:

a***o的解決方案:

改進建議:

在模糊測試的過程中,模糊器從優先順序種子佇列中選擇乙個種子。fuzzer對種子應用乙個能量排程,目的是給那些被認為「更接近」目標位點的種子更多的突變機會,即能量。具體地說,這是通過冪函式實現的,冪函式是覆蓋函式相似度和基本塊跟蹤距離的組合。對於每乙個在變異過程中新生成的測試種子,在捕獲其執行軌跡後,fuzzer將基於這些實用工具計算覆蓋函式相似度和基本塊跟蹤距離。對於每個輸入執行跟蹤,其基本塊跟蹤距離計算為累積的基本塊級距離除以執行的基本塊總數;其覆蓋函式相似度計算基於當前執行函式的重疊和目標函式跟蹤閉合,以及功能級距離。

在能量確定後,模糊器根據突變子在種子上的粒度(粗粒突變和細粒突變)自適應地分配兩種不同型別的突變預算。然後,fuzzer對新生成的種子進行評估,以對那些能量更大或已達到目標函式的種子進行優先順序排序。

靜態分析:

以源**和目標點作為輸入,輸出插樁後的binary(含basic block級距離資訊)

fuzzing loop:

權衡短路徑與長路徑的能量分配,覆蓋期望集(所有能到達目標點的函式集)上更多函式的種子優先變異,路徑越長重合越多,分數越高;

新種子優先順序排序:

分3層儲存,若為新種子,且發現新邊、能量較高、可到達目標點,則放第1層,否則放第2層,不為新種子則放第3層。

適應性變異策略(詳見文中演算法):

若seed到達目標,細粒度變異增大,粗粒度變異下降;

實驗與afl和a***o進行對比,對於某些漏洞發現的時間能從3.5個小時縮短到0.5個小時,縮短了到達目標點點時間和發現crash的時間,發現了41個unique crashes,並申請了15個cve。

實驗設計圍繞4個rq:

實現binary fuzzing,目標識別基於二進位制**匹配,靜態分析基於ida,插樁基於intel pin。

測試之灰盒測試

2011年1月3日 由 baoni 測試分為三種 黑盒測試 白盒測試 灰盒測試。如果對於我來說我更愛灰盒測試,也最常做灰盒測試。灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於整合測試階段,不僅關注輸出 輸入的正確性,同時也關注程式內部的情況。灰盒測試不像白盒那樣詳細 完整,但又比黑...

軟體測試 灰盒測試

灰盒測試,是介於白盒測試與黑盒測試之間的,可以這樣理解,灰盒測試關注輸出對於輸入的正確性,同時也關注內部表現,但這種關注不象白盒那樣詳細 完整,只是通過一些表徵性的現象 事件 標誌來判斷內部的執行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低...

測試知識之 黑盒白盒和灰盒測試

黑盒測試 黑盒測試也稱功能測試,它是在已知產品所應具有的功能上,通過測試來檢測是否每個功能是否能夠按照需求規格說明書的規定正常使用。我們通過程式的介面進行測試,看程式能否適當的接收輸入資料而產生正確的輸出資訊,並且保持外部資訊 如資料庫或者檔案 的完整性。常見的黑盒測試方法有 等價類劃分法 邊界值 ...