Bitcoin-Core-Development

我應該使用哪個 fuzzer 來對 Bitcoin Core 進行模糊測試?

  • February 2, 2021

在比特幣核心模糊測試文件中,有三種不同模糊測試器的設置說明:libFuzzer美國模糊 lop (afl-fuzz) 和Honggfuzz。大概我應該按這個順序嘗試它們。他們如何比較?我應該在一個場景中使用一個特定的模糊器,在另一個場景中使用不同的模糊器嗎?當我進行模糊測試時,我應該一個接一個地執行它們嗎?

這是一個正在進行的答案,其中一些內容目前取自 Google fuzzing docs

libFuzzer

libFuzzer 是一個工具,它允許您以與單元測試類似的風格編寫模糊測試。對於第一次設置模糊測試的開發人員,Google模糊測試團隊推薦它的簡單性。

[它] 可能是測試輸入相對較小的庫的一個不錯的選擇,每個輸入的執行時間 < 10 毫秒,並且庫程式碼預計不會因輸入無效而崩潰。範例:正則表達式匹配器、文本或二進制格式解析器、壓縮、網路、加密。

有關libFuzzer 與其他 fuzzer 比較的更多資訊,請參閱http://llvm.org/docs/LibFuzzer.html#q-so-what-exactly-this-fuzzer-is-good-for 。

澳大利亞橄欖球聯盟

AFL 是推動覆蓋引​​導模糊測試早期成功的最重要的工具。Google fuzzing 團隊不建議將 AFL 用於新項目,因為它的維護不如 Honggfuzz 或 libFuzzer。也就是說,由於它的廣泛性,經常會遇到依賴它進行模糊測試的現有項目。

與其他儀表化模糊器相比,afl-fuzz 被設計為實用:它具有適度的性能成本,使用各種高效的模糊測試策略和工作量最小化技巧,基本上不需要配置,並且可以無縫處理複雜的真實案例 -比如說,常見的圖像解析或文件壓縮庫。

有關afl-fuzz 與其他模糊器的比較的更多資訊,請參閱https: //lcamt​​uf.coredump.cx/afl/。

紅毛絨

Honggfuzz 是另一個具有豐富功能的模糊測試工具。Google fuzzing 團隊建議安全研究人員在他們的 fuzzer 中尋找更多自定義選項,或者在復雜項目中使用 libFuzzer 的類似單元測試的風格工作很困難的開發人員。它允許使用者指定如何將輸入文件提供給目標程序(例如,在命令行上、在標準輸入上),或者允許更複雜的定制,例如直接將輸入提供給網路伺服器。

引用自:https://bitcoin.stackexchange.com/questions/99949