拓展阅读
开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)
开源 Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)
test fuzz-01-模糊测试(Fuzz Testing)
test fuzz-02-模糊测试 JQF + Zest Semantic Fuzzing for Java
test fuzz-03-模糊测试 Atheris A Coverage-Guided, Native Python Fuzzer
test fuzz-04-模糊测试 jazzer Coverage-guided, in-process fuzzing for the JVM
test fuzz-05-模糊测试 kelinci AFL-based fuzzing for Java
test fuzz-06-模糊测试 AFL american fuzzy lop - a security-oriented fuzzer
test fuzz-07-模糊测试 libfuzzer
模糊测试(Fuzz Testing)是什么?
模糊测试(Fuzz Testing)是一种自动化的测试方法,通过向程序、应用程序或系统输入注入大量随机或半随机生成的数据(模糊输入),以寻找潜在的安全漏洞、软件缺陷或异常行为。
模糊测试的目标是通过在输入中引入未知、异常或非预期的数据,评估目标系统的鲁棒性和稳定性。
模糊测试流程:
-
选择目标:
- 确定要进行模糊测试的目标,可以是一个应用程序、库、协议等。选择目标通常基于其重要性、复杂性和潜在的攻击面。
-
生成模糊输入:
- 创建模糊测试工具或使用现有工具生成模糊输入。模糊输入通常是通过对有效输入进行随机修改、添加或删除而生成的。
-
注入模糊输入:
- 将生成的模糊输入注入到目标系统中。这可以通过直接发送网络请求、修改文件、通过标准输入等方式进行。
-
监测异常行为:
- 监测目标系统的行为,包括崩溃、错误消息、异常响应等。模糊测试工具通常会监测程序的执行状态,以检测到任何不正常的行为。
-
收集反馈:
- 收集模糊测试过程中观察到的异常行为。这可能包括崩溃日志、错误报告、程序输出等。
-
优化模糊输入生成:
- 根据反馈信息,调整模糊输入生成策略,以生成更有针对性的模糊输入,提高发现漏洞的效率。
-
迭代:
- 重复模糊测试过程,不断优化生成的模糊输入,直到达到预期的测试目标或发现了潜在的问题。
Atheris、Jazzer、jqf、kelinci、FLA、libfuzzer,给出对比表格
下面是对Atheris、Jazzer、jqf、Kelinci、FLA、libFuzzer的对比表格:
功能/特性 | Atheris | Jazzer | jqf | Kelinci | FLA | libFuzzer |
---|---|---|---|---|---|---|
语言 | Python | Java | Java | Java | C | C++ |
支持的目标程序类型 | Python | Java | Java | Java | C | C/C++ |
指导性模糊测试 | ✔️ | ✔️ | ✔️ | ✖️ | ✔️ | ✔️ |
静态分析 | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ |
动态二进制插桩 | ✖️ | ✔️ | ✖️ | ✔️ | ✔️ | ✔️ |
支持的反馈机制 | 覆盖率 | 覆盖率 | 覆盖率 | 路径导向 | 覆盖率 | 覆盖率 |
支持的变异策略 | 多种 | 多种 | 多种 | 多种 | 多种 | 多种 |
最小化工具 | 自带 | ✔️ | ✔️ | 依赖Kelinci Minimizer | FLA Minimizer | ✔️ |
支持并行化 | ✖️ | ✔️ | ✖️ | ✔️ | ✔️ | ✖️ |
支持网络服务 | ✖️ | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ |
是否开源 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |