工程開發
cargo-fuzz avatar

cargo-fuzz

Rust 專案使用 Cargo 與 libFuzzer 的標準模糊測試工具。自動化測試套件設定、記憶體消毒器整合與覆蓋率分析。

簡介

cargo-fuzz 是 Rust 生態系統中實施模糊測試 (fuzzing) 的首選工具。它以 libFuzzer 作為後端引擎,並與 Cargo 建構系統無縫整合,確保 Rust 開發者無需處理複雜的工具鏈配置即可進行漏洞研究。透過自動化編譯標記並提供產生模糊測試目標的結構化方法,它能夠快速識別安全與非安全 Rust 程式碼中的崩潰、恐慌 (panic) 以及記憶體安全違規。

  • 透過專用的 CLI 子指令簡化了模糊測試套件 (harness) 的建立,自動處理樣板程式碼與專案結構初始化。

  • 支援 AddressSanitizer (ASan) 及其他基於 LLVM 的消毒器,能高精度地檢測記憶體損毀、緩衝區溢位與釋放後使用 (use-after-free) 等錯誤。

  • 透過與 arbitrary crate 的深度整合實現結構感知模糊測試,允許產生符合定義資料結構的複雜輸入,而非僅僅是原始位元組串。

  • 提供覆蓋率引導分析的內建支援,開發者可使用 llvm-tools-preview 產生報告,視覺化模糊測試期間程式碼庫的路徑執行情況。

  • 提供靈活的執行模式,包括用於引導模糊測試器的字典支援、用於維護輸入狀態的語料庫 (corpus) 管理,以及針對崩潰分類的特定產出物重現執行。

  • 專為使用 Cargo 建構系統與 Nightly 工具鏈的 Rust 專案設計,Nightly 版本對於特定編譯器插裝功能至關重要。

  • 適用於安全性稽核、回歸測試,以及識別函式庫與二進位箱 (crate) 中的邊緣情況失敗。

  • 建議使用者將程式碼結構化為函式庫 crate,以最大化可測試函式的粒度。

  • 效能注意事項:消毒器會增加額外負擔;對於效能敏感場景或純安全 Rust 程式碼,可停用消毒器以顯著提升測試速度。

  • 輸入要求包含使用 fuzz_target! 巨集的有效 harness 函式;工具負責管理語料庫目錄與產出物儲存,以確保錯誤報告的可重現性。

倉庫統計

Star 數
4,856
Fork 數
421
Open Issue 數
29
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月28日 上午11:52
在 GitHub 查看