SuperAPI AI 工具集

testing-handbook

测试与质量

查看项目

更新于 10-16 05:42

技能介绍

用途:面向处理不可信输入的代码(解析器、反序列化器、网络处理器等)开展结构化安全测试,在发布前或审计 C/C++ 代码内存安全问题时使用,也可用于搭建持续模糊测试流水线、验证 SAST 告警、分诊崩溃报告。

主要能力:覆盖三大支柱——模糊测试(AFL++、libFuzzer、Honggfuzz)、Sanitizer(ASan、MSan、UBSan、TSan)、静态分析(Semgrep、CodeQL、Clang Static Analyzer)。内容包括 harness 编写模板、语料管理与最小化、Sanitizer 编译标志与输出解读、崩溃复现与去重、结果映射到 MITRE ATT&CK 技术编号,以及按严重级别、CWE、复现步骤输出报告。

使用方式:先选定处理不可信输入的目标函数,编写 libFuzzer 或 AFL++ harness;用 -fsanitize=address,undefined 等标志编译(libFuzzer 加 -fsanitize=fuzzer,AFL++ 用 afl-clang-fast 包装器);准备种子语料后运行,如 ./harness -max_total_time=3600 -artifact_prefix=./crashes/ ./corpus/ 或 afl-fuzz -i ./afl_in -o ./afl_out -- ./afl_target @@;随后用 -minimize_crash 或 afl-tmin 最小化崩溃输入,读取 ASan 输出的错误类型与 file:line,并运行 semgrep、scan-build、codeql database create/analyze 做静态分析。

限制与注意:MSan 与 ASan 互斥,TSan 与 ASan 不兼容,需分开构建;MSan 要求所有依赖以相同标志重编译;ASan 约有 2 倍运行时与 1.5–3 倍内存开销,不适合生产构建;崩溃可能因 ASLR 或竞态不可复现;CodeQL 数据库构建需先 make clean;Semgrep 社区规则可能误报较多。Rust 可用 cargo fuzz,Go 可用 go test -fuzz。具体安装命令与更多细节以原始资料为准。