工程開發
cargo-fuzz avatar

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
在 GitHub 查看