oss-fuzz-gen 项目介绍
项目概述
oss-fuzz-gen 是一个用于生成和评估模糊测试(fuzzing)目标的框架。它能够利用多种大型语言模型(LLM),为实际的 C
、C++
、Java
和 Python
项目生成模糊测试目标,并通过 OSS-Fuzz 平台进行基准测试。
支持的模型
oss-fuzz-gen 支持多种大型语言模型(LLM),包括:
- Vertex AI code-bison
- Vertex AI code-bison-32k
- Gemini 系列(Pro、Ultra、Experimental 和 1.5)
- OpenAI 的 GPT 模型(GPT-3.5-turbo、GPT-4、GPT-4o、GPT-4o-mini 等,包括 Azure 平台)
评估标准
生成的模糊测试目标通过四个指标进行评估,以最新的生产环境数据为依据:
- 可编译性
- 运行时崩溃
- 运行时覆盖率
- 运行时行覆盖差异(与现有人类编写的
OSS-Fuzz
测试目标相比)
实验结果
根据 2024 年 1 月 31 日的实验结果,oss-fuzz-gen 框架成功利用 LLM 为 160 个 C/C++ 项目生成了有效的模糊测试目标,与现有的人工测试目标相比,最大行覆盖率提升达 29%。这些报告尚未公开,因为可能包含未披露的漏洞信息。
使用指南
有关如何运行该框架及根据结果生成报告的详细说明,请参见 使用指南。
合作与交流
如果您对研究或开源社区合作感兴趣,欢迎创建问题或通过邮箱 oss-fuzz-team@google.com 与我们联系。
已发现的漏洞
截至目前,通过 oss-fuzz-gen 自动生成的目标已经报告了 26 个新漏洞或安全隐患。这些漏洞以前使用现有 OSS-Fuzz 目标无法发现,包括但不限于 cJSON
、libplist
、hunspell
和 zstd
等项目。
覆盖率提升项目
oss-fuzz-gen 在多个项目中显著提高了测试覆盖率。以下是一些项目的覆盖率提升详情:
phmap
项目的覆盖率总提升达 98.42%usbguard
项目的覆盖率提升 97.62%onednn
项目的覆盖率提升高达 96.67%
这些提升表明 oss-fuzz-gen 通过自动生成的新的测试目标,在提高软件质量和发现潜在问题方面具有重要作用。
引用
关于如何引用该工作的详细信息,请点击 GitHub 页面右侧的「引用此库」按钮。