oss-fuzz-gen简介
oss-fuzz-gen是Google开发的一个开源框架,旨在利用大语言模型(LLM)为真实世界的C/C++项目自动生成模糊测试目标,并通过OSS-Fuzz平台对其进行基准测试。该项目的主要目标是提高模糊测试的覆盖率和效率,发现更多的潜在漏洞。
核心功能
- 使用LLM自动生成模糊测试目标
- 支持多种LLM模型,包括Vertex AI、Gemini和OpenAI的GPT系列
- 通过四个指标评估生成的模糊测试目标:可编译性、运行时崩溃、运行时覆盖率、与人工编写目标的覆盖率差异
- 与OSS-Fuzz平台集成,可直接应用于实际项目
使用指南
-
安装依赖:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
-
设置LLM访问:
- 对于Vertex AI,需要设置GCP项目和API密钥
- 对于OpenAI,需要设置API密钥
-
运行实验:
./run_all_experiments.py \ --model=<model-name> \ --benchmarks-directory='./benchmark-sets/comparison' \ [--template-directory=prompts/custom_template] \ [--work-dir=results-dir]
-
查看结果:
python -m report.web -r <results-dir> -o <output-dir> python -m http.server <port> -d <output-dir>
主要资源
- GitHub 仓库: 项目源码和文档
- 使用指南: 详细的安装和使用说明
- OSS-Fuzz 平台: oss-fuzz-gen所依赖的模糊测试平台
- 相关博客文章: 介绍oss-fuzz-gen的技术细节和应用场景
示例和基准测试
oss-fuzz-gen提供了两组基准测试集:
- comparison: 包含少量精选的OSS-Fuzz C/C++项目
- all: 包含所有OSS-Fuzz C/C++项目的基准测试
这些基准测试可以帮助用户了解oss-fuzz-gen在不同项目上的表现,也可以作为使用参考。
成果展示
截至2024年1月,oss-fuzz-gen已经:
- 成功为160个C/C++项目生成有效的模糊测试目标
- 最高实现了29%的代码覆盖率提升
- 发现了14个新的bug/漏洞
参与贡献
如果你对oss-fuzz-gen感兴趣并希望参与贡献,可以:
- 在GitHub上提交Issue或Pull Request
- 联系项目维护者: oss-fuzz-team@google.com
oss-fuzz-gen是一个活跃的开源项目,欢迎社区成员参与到开发和改进中来。无论是bug报告、功能建议还是代码贡献,都将对项目的发展起到重要作用。
通过学习和使用oss-fuzz-gen,开发者可以大幅提高模糊测试的效率和覆盖率,为软件安全做出贡献。希望本文汇总的资源能够帮助你快速上手这一强大的工具。