atheris
Atheris 是基於 libFuzzer 的覆蓋率導向 Python 模糊測試工具,適用於純 Python 程式碼與 Python C 擴充模組的測試。
簡介
Atheris 是一款專為 Python 生態系統設計的強大覆蓋率導向模糊測試工具。透過利用業界標準的 libFuzzer,它使開發人員和安全研究人員能夠對純 Python 程式碼以及複雜的 Python C 擴充模組進行深入的自動化測試。得益於其整合的 AddressSanitizer (ASAN) 支援,它在發掘原生擴充模組中的記憶體毀損問題方面特別有效。此技能專為安全工程師、軟體測試人員和開發人員設計,用於識別傳統單元測試經常遺漏的漏洞,例如邊緣案例崩潰、斷言失敗和記憶體洩漏。
-
執行覆蓋率導向的模糊測試,有效探索程式碼路徑。
-
支援使用裝飾器對純 Python 函數進行模糊測試。
-
為測試帶有 AddressSanitizer 的 Python C 擴充模組提供深入支援。
-
與 libFuzzer 生態系統無縫整合。
-
提供靈活的插裝選項,包括函數級、模組級和全系統覆蓋。
-
在 Linux 和 macOS 上為常見開發環境提供快速設定。
-
模糊測試器需要一個測試入口函數 (test_one_input) 來接收引擎生成的隨機位元組序列。
-
使用者應應用裝飾器如 @atheris.instrument_func 或上下文管理器如 atheris.instrument_imports 來啟用程式碼插裝。
-
建議在 Linux Docker 環境中執行模糊測試,以確保效能與相依性管理的一致性,特別是在編譯帶有特定 clang/LLVM sanitizer 的 C 擴充模組時。
-
預期用法是在主執行區塊中呼叫 atheris.Setup 和 atheris.Fuzz,以啟動對崩潰或未預期執行時期行為的探索。
-
限制條件包括需要較新版本的 clang/LLVM 來支援原生擴充測試,並需具備基礎的 Harness 結構知識,以避免捕獲到模糊測試器應報告為錯誤的預期異常。
倉庫統計
- Star 數
- 4,904
- Fork 數
- 428
- Open Issue 數
- 21
- 主要語言
- Python
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月30日 上午08:11