cargo-fuzz
cargo-fuzz 是 Rust 的基準模糊測試工具,透過 libFuzzer 後端與整合式清理器支援,為 Cargo 專案提供自動化漏洞挖掘功能。
簡介
cargo-fuzz 是資安工程師與開發人員針對 Rust 專案進行覆蓋率引導式模糊測試的首選工具。它提供專門的 Cargo 子指令,可自動化 libFuzzer 的複雜建置需求,包括對位址清理器 (AddressSanitizer, ASan) 與其他檢測功能的原生支援。透過直接整合至 Cargo 工作流程,它能協助開發人員識別傳統單元測試經常遺漏的崩潰、記憶體安全問題與執行緒恐慌。該工具旨在與安全及非安全的 Rust 程式碼無縫協作,是高保障 Rust 應用程式安全開發生命週期中的關鍵元件。
-
自動化檢測:自動配置 libFuzzer 的編譯標誌,確保深度的覆蓋率分析。
-
清理器支援:內建 AddressSanitizer 整合,有助於在執行期間偵測記憶體損毀、洩漏與緩衝區溢位。
-
結構感知模糊測試:相容於 arbitrary 套件,可根據專案特定的資料結構產生高品質且具備型別的輸入資料。
-
語料庫管理:處理測試輸入 (corpus) 與崩潰產物 (artifacts) 的儲存與優化,實現可重現的錯誤報告。
-
覆蓋率報告:利用 llvm-tools-preview 產生 HTML 格式的覆蓋率報告,以衡量模糊測試工具的有效性。
-
使用需求:需要 Rust nightly 工具鏈才能正常運作。
-
Harness 最佳實踐:使用者應將程式碼建構為函式庫 crate,並利用 fuzz_target! 巨集以確保穩定性與確定性的執行。
-
效能優化:對於純安全的 Rust 專案,支援使用 --sanitizer none 停用清理器,以獲得顯著的效能提升。
-
工作流程整合:專為持續整合或本地開發而設計,能主動發現解析邏輯、資料序列化器與網路協定中的漏洞。
-
輸入處理:該工具預期一個接受 &[u8] 切片的函式作為 harness,模糊測試引擎會持續使用變異後的資料進行餵食。
倉庫統計
- Star 數
- 4,873
- Fork 數
- 424
- Open Issue 數
- 21
- 主要語言
- Python
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 上午06:17