SuperAPI AI 工具集

implementing-fuzz-testing-in-cicd-with-aflplusplus

测试与质量

查看项目

更新于 10-16 01:30

技能介绍

用途:把 AFL++ 覆盖率引导的模糊测试接入 CI/CD,持续测试解析器、协议处理、文件格式处理等处理不可信输入的代码,发现崩溃、挂起和未定义行为。

主要能力:AFL++ 是 AFL 的社区维护分支,通过遗传算法变异输入并跟踪代码覆盖以探索新执行路径;支持持久模式(宣称每秒 10 万次以上执行)、自定义变异器、QEMU 模式做无源码二进制模糊测试,以及 CmpLog/RedQueen 自动字典提取。插桩模式包括 afl-clang-fast LTO(性能最高)、afl-clang-fast、afl-gcc-fast、QEMU、Frida、Unicorn。

使用方式:先编写隔离输入处理的 harness,用持久模式模板(__AFL_FUZZ_INIT、__AFL_INIT、__AFL_LOOP、__AFL_FUZZ_TESTCASE_BUF)循环处理输入;再插桩编译,例如 export CC=afl-clang-fast、export AFL_USE_ASAN=1、$CC -o fuzz_harness fuzz_harness.c -ltarget_parser -fsanitize=address,并可构建 CmpLog 版本;准备种子语料后用 afl-cmin 与 afl-tmin 最小化;在 CI 中运行 afl-fuzz,设置 -S ci_fuzzer、-i corpus/、-o findings/、-t 5000,配合 AFL_CMPLOG_ONLY_NEW=1、AFL_FAST_CAL=1 等;检查 crashes 目录,有崩溃则退出 1,并用 afl-collect 按栈去重,用 afl-whatsup 查看统计。夜间可用多实例并行(按 nproc)并合并语料。

适用场景:编译型应用、解析器、协议处理程序、文件格式处理器等处理不可信输入的目标;CI 短跑建议 30-60 分钟,夜间长跑 4-24 小时。

限制:AFL++ 原生不支持 Windows,需要 Linux CI runner、GCC/Clang 工具链、已安装 AFL++、harness 与有效种子语料。稳定性应高于 90%。资料未提供具体价格、许可证或性能数值承诺。