工程开发
atheris avatar

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