ruzzy
為 Ruby 程式碼與 C 擴充功能設計的覆蓋率導向模糊測試工具,運用 libFuzzer 與記憶體清理器 (ASan) 偵測記憶體損毀與未定義行為。
簡介
Ruzzy 是一款專為 Ruby 生態系統設計的專業級覆蓋率導向模糊測試工具。它利用 libFuzzer 引擎,為純 Ruby 應用程式以及包含原生 C 擴充功能的複雜 Ruby Gem 提供強大的測試能力。透過與記憶體清理器 (AddressSanitizer, ASan) 的整合,Ruzzy 使開發人員與安全性審計人員能夠發掘傳統單元測試容易遺漏的記憶體損毀、緩衝區溢位以及未定義行為。這是維護原生擴充功能完整性與確保 Ruby 安全架構穩定性的重要工具。
-
採用覆蓋率導向的變異策略,最大化 Ruby 直譯器中的程式碼路徑探索。
-
支援對 Ruby C 擴充功能進行直接模糊測試,以識別深層的記憶體安全性漏洞。
-
與 clang 與 ASan 整合,為發現的崩潰錯誤提供精確的堆疊追蹤。
-
具備靈活的測試線束 (harness) 架構,允許對輸入進行精細控制與例外處理。
-
針對 Linux 環境進行最佳化,支援 x86-64 與 AArch64/ARM64 架構。
-
安裝時需使用相容的 clang 版本 (14.0.0+) 並配置正確的環境變數 (CC, CXX, LDSHARED) 以進行儀器化。
-
使用者必須透過 LD_PRELOAD 與特定的 ASAN_OPTIONS (例如停用 sigaltstack 並設定 allocator_may_return_null=1) 來管理 Ruby 直譯器與 ASan 的互動。
-
測試線束開發需要確保 Ruby 程式碼的確定性;在對 C 擴充功能進行模糊測試時,測試人員應處理 Ruby 層級的例外情況,以確保模糊測試工具專注於記憶體安全性問題而非直譯器錯誤。
-
對於純 Ruby 程式碼的模糊測試,工具要求使用追蹤指令碼來輔助必要的執行時期儀器化。
-
有效彌合了高階 Ruby 邏輯與低階 C 記憶體安全性之間的差距,使其成為供應鏈安全與依賴項目審計的關鍵組件。
倉庫統計
- Star 數
- 4,882
- Fork 數
- 424
- Open Issue 數
- 21
- 主要語言
- Python
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 下午12:57