ruzzy
Ruzzy 是一個基於 libFuzzer 的 Ruby 覆蓋率引導模糊測試工具,專門用於檢測 Ruby 程式碼及其 C 擴充功能的記憶體損壞與未定義行為。
簡介
Ruzzy 是一個功能強大且已達生產就緒水準的覆蓋率引導式模糊測試工具,專為 Ruby 生態系統設計。它基於強大的 libFuzzer 引擎,協助安全研究人員與開發者對純 Ruby 應用程式以及複雜的 Ruby C 擴充功能進行自動化測試。透過 AddressSanitizer (ASan) 等消毒工具的支援,Ruzzy 在辨識傳統單元測試容易遺漏的嚴重記憶體安全性問題、緩衝區溢位與未定義行為方面表現出色。對於維護帶有原生 C 元件的 Gem 以及確保 Ruby 生產環境的整體穩定性而言,它是不可或缺的工具。
-
採用 libFuzzer 的覆蓋率引導式模糊測試引擎,可探索 Ruby 應用程式中的深層程式碼路徑。
-
內建針對原生 C 擴充功能的記憶體損壞與未定義行為檢測功能。
-
支援 Linux x86-64 與 AArch64/ARM64 架構。
-
提供追蹤 Ruby 執行流程與整合消毒執行時期的進階檢測技術。
-
透過 ASAN_OPTIONS 與標準 libFuzzer 命令列參數即可進行高度配置。
-
若要使用 Ruzzy,請配置合適的 ASAN_OPTIONS 環境變數,例如停用 sigaltstack 並設定配置器行為,以防止 Ruby 直譯器產生誤報。
-
針對純 Ruby 程式碼,請使用提供的追蹤器指令碼來檢測執行環境,而 C 擴充功能通常可直接進行模糊測試。
-
確保測試工具(Harness)具備確定性,並遵循必須回傳 0 給模糊測試迴圈的規則;在測試 C 擴充功能時,應攔截 Ruby 層級的例外狀況,以避免模糊測試器過早崩潰。
-
務必遵循 Gem 的編譯準則,包含使用 -fsanitize=address,fuzzer-no-link、-fno-omit-frame-pointer 與 -g 等旗標,以納入除錯符號並確保崩潰分析時能取得高品質的堆疊追蹤。
-
本工具專為安全審計人員、函式庫維護者以及從事效能敏感或安全敏感 Ruby 專案(依賴原生 C 程式碼)的開發者所打造。
倉庫統計
- Star 數
- 4,873
- Fork 數
- 424
- Open Issue 數
- 21
- 主要語言
- Python
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 上午03:32