模糊测试目标生成与评估框架
该框架使用各种大型语言模型(LLM)为实际的C
/C++
项目生成模糊测试目标,并通过OSS-Fuzz
平台对其进行基准测试。
更多详情请参见AI驱动的模糊测试:突破漏洞狩猎的障碍:
当前支持的模型有:
- Vertex AI code-bison
- Vertex AI code-bison-32k
- Gemini Pro
- Gemini Ultra
- Gemini Experimental
- Gemini 1.5
- OpenAI GPT-3.5-turbo
- OpenAI GPT-4
- OpenAI GPT-4o
生成的模糊测试目标通过四个指标对生产环境中最新的数据进行评估:
- 可编译性
- 运行时崩溃
- 运行时覆盖率
- 与
OSS-Fuzz
中现有人类编写的模糊测试目标相比的运行时行覆盖率差异。
以下是2024年1月31日的实验结果样本。 该实验包括来自297个开源项目的1300多个基准测试。
总体而言,该框架成功利用LLM为160个C/C++项目生成了有效的模糊测试目标(这些目标的覆盖率有所增加)。与现有人类编写的目标相比,最大行覆盖率增加了29%。
请注意,这些报告并未公开,因为它们可能包含未披露的漏洞。
使用
请查看我们详细的使用指南,了解如何运行此框架并基于结果生成报告。
合作
对研究或开源社区合作感兴趣吗? 欢迎创建问题或给我们发邮件:oss-fuzz-team@google.com。
发现的漏洞
到目前为止,我们通过此框架自动生成的目标报告了6个新漏洞:
项目 | 漏洞 | LLM | 提示模板 |
---|---|---|---|
cJSON | OOB 读取 | Vertex AI | 默认 |
libplist | OOB 读取 | Vertex AI | 默认 |
hunspell | OOB 读取 | Vertex AI | 默认 |
zstd | OOB 写入 | Vertex AI | 默认 |
未披露 | 堆栈缓冲区下溢 | Vertex AI | 默认 |
未披露 | 未初始化内存使用 | Vertex AI | 默认 |
这些漏洞只能通过新生成的目标发现。现有的OSS-Fuzz目标无法触及这些漏洞。
当前项目的顶级覆盖率提升
项目 | 覆盖率提升 % * |
---|---|
tinyxml2 | 29.84 |
inih | 29.67 |
lodepng | 26.21 |
libarchive | 23.39 |
cmark | 21.61 |
fribidi | 18.20 |
lighttpd | 17.56 |
libmodbus | 16.59 |
valijson | 16.21 |
libiec61850 | 13.53 |
hiredis | 13.50 |
cmake | 12.62 |
pugixml | 12.43 |
meshoptimizer | 12.23 |
libusb | 11.12 |
json | 10.84 |
* 覆盖率百分比是使用OSS-Fuzz构建过程中为整个项目编译的源代码总行数作为分母计算的。
引用本工作
请点击此GitHub页面右侧的_“引用此存储库”_按钮,获取引用详情。