工程開發
harness-writing avatar

harness-writing

編寫有效模糊測試 (fuzzing) 腳本的技術。適用於建立新的模糊測試目標或優化現有的腳本程式碼。

簡介

harness-writing 技能提供了一套結構化的方法,用於開發高品質的模糊測試 (fuzzing) 腳本。這些腳本是模糊測試器與受測系統 (SUT) 之間最重要的切入點。一個設計良好的腳本是任何模糊測試活動中最關鍵的組件,因為它決定了來自 libFuzzer 或 cargo-fuzz 等工具的隨機原始資料,如何轉換為應用程式可理解的輸入。此技能協助開發者避開常見陷阱,例如遺漏程式碼路徑、無法重現的崩潰,或對複雜子系統的測試覆蓋率不足。

  • 使用標準介面(如 LLVMFuzzerTestOneInput 或 fuzz_target! 巨集)來實現 C、C++ 和 Rust 的腳本模式。

  • 使用 FuzzedDataProvider 的結構化資料提取策略,將原始位元組轉換為型別化基本型別、字串和複雜物件。

  • 輸入驗證邏輯,用於過濾掉無意義或格式錯誤的輸入,確保測試器將資源集中在深度邏輯,而非表面解析錯誤。

  • 整合確定性檢查,以確保在發現崩潰後能輕鬆進行重現。

  • 處理交錯模糊測試 (interleaved fuzzing) 的進階技術,透過單一腳本管理多個作業或 API 呼叫,以觸發受測系統內的複雜狀態轉換。

  • 在發起新的模糊測試活動,或現有覆蓋率不足以發現深層安全漏洞時,請應用此技術。

  • 利用提供的位元組轉型、大小驗證和資料序列化的快速參考模式,以減少重複性程式碼。

  • 確保腳本能有效測試高複雜度區域,例如協定解析器、檔案格式處理、加密運算及輸入驗證常式。

  • 限制:此工具不會自動生成特定於複雜邏輯的腳本;它提供手動建立所需的架構框架與程式碼模式。使用者應確保不會跳過已滿足覆蓋率需求且維護良好的現有基礎設施。

  • 預期的輸入包括目標原始碼、API 文件和任何現有的測試裝置。預期的輸出是穩健且高效的模糊測試入口,能夠驅動受測系統進入深層且高風險的程式碼路徑。

倉庫統計

Star 數
4,884
Fork 數
424
Open Issue 數
21
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月29日 下午02:38
在 GitHub 查看