oss-fuzz-gen

GitHub
1.4k 218 较难 1 次阅读 2天前Apache-2.0图像Agent开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

oss-fuzz-gen 是一个由谷歌推出的开源框架,旨在利用大语言模型(LLM)自动生成针对 C、C++、Java 和 Python 项目的模糊测试目标(Fuzz Targets),并通过 OSS-Fuzz 平台进行验证。它主要解决了传统模糊测试中人工编写测试用例成本高、覆盖率有限以及难以发现深层漏洞的痛点,显著降低了安全测试的门槛。

该工具特别适合安全研究人员、开源项目维护者以及希望提升代码健壮性的开发者使用。其核心技术亮点在于能够调用包括 Gemini、GPT-4 在内的多种主流大模型,智能生成可编译且有效的测试代码。实验数据显示,oss-fuzz-gen 已成功在数百个真实项目中运行,不仅实现了最高 29% 的代码行覆盖率提升(相较于现有人工编写的用例),还实际发现了 30 多个此前未被披露的安全漏洞,如越界读写和栈缓冲区下溢等。通过自动化评估编译性、崩溃情况及覆盖率差异,oss-fuzz-gen 为软件安全测试提供了一种高效、智能的新范式,帮助团队更轻松地守护代码质量。

使用场景

某开源安全团队负责维护一个广泛使用的 C++ 数据解析库,亟需在版本发布前深度挖掘潜在的内存破坏漏洞以保障用户安全。

没有 oss-fuzz-gen 时

  • 安全工程师需手动编写大量模糊测试(Fuzz)目标代码,不仅耗时数周,且高度依赖个人对代码逻辑的理解,难以覆盖边缘场景。
  • 现有的人工测试用例覆盖率停滞不前,许多深层逻辑分支和复杂输入组合长期处于“盲区”,导致隐蔽的越界读写漏洞潜伏其中。
  • 面对成千上万的开源项目依赖,团队缺乏自动化手段快速生成针对新函数或新接口的有效测试驱动,漏洞响应速度严重滞后。
  • 尝试引入传统自动生成工具时,常因生成的代码无法编译或缺乏有效的崩溃检测机制(Oracle),导致大量无效计算资源浪费。

使用 oss-fuzz-gen 后

  • 利用集成的 Gemini 或 GPT-4 等大模型,oss-fuzz-gen 能在数小时内自动为库中数百个函数生成可编译、高质量的 Fuzz 目标代码,效率提升数十倍。
  • 生成的测试目标在 OSS-Fuzz 平台上运行后,成功将代码行覆盖率提升了 29%,精准触达了人工测试从未覆盖的低频执行路径。
  • 工具自动评估运行时崩溃与覆盖率差异,直接定位并报告了包括 cJSONzstd 类项目中常见的越界读取/写入等 30+ 个此前未被发现的高危漏洞。
  • 通过内置的代理执行框架,团队可独立验证特定 Agent 的生成效果,无需运行全量实验即可快速迭代优化测试策略,大幅降低试错成本。

oss-fuzz-gen 通过将大模型的代码理解能力与工业级模糊测试平台结合,彻底打破了人工编写测试用例的效率瓶颈,让漏洞挖掘从“大海捞针”变为“自动化收割”。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具主要依赖云端大语言模型 API(如 Google Vertex AI, Gemini, OpenAI GPT 系列,Azure OpenAI),而非本地部署的模型,因此 README 中未提及本地 GPU、显存或特定深度学习库(如 PyTorch/TensorFlow)的需求。运行环境需配置相应的云服务商 API 密钥及网络访问权限。生成的模糊测试目标需在支持 OSS-Fuzz 的环境(通常为 Linux 容器)中进行编译和评估。
python未说明
未说明
oss-fuzz-gen hero image

快速开始

模糊测试目标生成与评估框架

该框架利用多种大型语言模型(LLM),为现实世界的 C/C++/Java/Python 项目生成模糊测试目标,并通过 OSS-Fuzz 平台对其进行基准测试。

更多详情请参阅 AI 驱动的模糊测试:突破漏洞挖掘的壁垒Alt text

当前支持的模型包括:

  • 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
  • OpenAI GPT-4o-mini
  • OpenAI GPT-4-turbo
  • OpenAI GPT-3.5-turbo(Azure)
  • OpenAI GPT-4(Azure)
  • OpenAI GPT-4o(Azure)

生成的模糊测试目标将基于来自生产环境的最新数据,采用以下四项指标进行评估:

  • 可编译性
  • 运行时崩溃
  • 运行时覆盖率
  • OSS-Fuzz 中现有人工编写的模糊测试目标相比,运行时代码行覆盖率的变化量。

以下是 2024 年 1 月 31 日的一份实验结果示例。该实验涵盖了来自 297 个开源项目的 1300 多个基准测试

image

总体而言,该框架成功地利用大型语言模型为 160 个 C/C++ 项目生成了有效的模糊测试目标(这些目标能够带来非零的覆盖率提升)。其中,代码行覆盖率的最大提升幅度达到了 29%,相较于现有的人工编写的模糊测试目标。

请注意,这些报告并未公开,因为它们可能包含尚未披露的漏洞。

使用方法

请查阅我们详细的 使用指南,了解如何运行本框架并根据结果生成报告。

独立代理执行与评估

您也可以不运行完整实验,而是使用集成的代理执行框架来单独执行或评估各个代理。有关如何运行单个代理或代理序列的详细说明,请参阅 框架文档

合作交流

如果您对研究合作或开源社区合作感兴趣,请随时创建议题或发送邮件至:oss-fuzz-team@google.com

发现的漏洞

到目前为止,我们已报告由该框架构建的自动生成目标所发现的30个新漏洞/安全问题:

项目 漏洞 LLM 提示词生成器 目标预言机
cJSON 越界读取 Vertex AI 默认 覆盖范围广但覆盖率低
libplist 越界读取 Vertex AI 默认 覆盖范围广但覆盖率低
hunspell 越界读取 Vertex AI 默认 覆盖范围广但覆盖率低
zstd 越界写入 Vertex AI 默认 覆盖范围广但覆盖率低
gdbm 栈缓冲区下溢 Vertex AI 默认 覆盖范围广但覆盖率低
hoextdown 使用未初始化内存 Vertex AI 默认 覆盖范围广但覆盖率低
pjsip 越界读取 Vertex AI 默认 使用模糊测试关键字和简单参数时覆盖范围低但可达性高
pjsip 越界读取 Vertex AI 默认 使用模糊测试关键字和简单参数时覆盖范围低但可达性高
gpac 越界读取 Vertex AI 默认 使用模糊测试关键字和简单参数时覆盖范围低但可达性高
gpac 越界读/写 Vertex AI 默认 全部
gpac 越界读取 Vertex AI 默认 全部
gpac 越界读取 Vertex AI 默认 全部
sqlite3 越界读取 Vertex AI 默认 全部
htslib 越界读取 Vertex AI 默认 全部
libical 越界读取 Vertex AI 默认 全部
croaring 越界读取 Vertex AI Test-to-harness 全部
openssl CVE-2024-9143 - 越界读/写 Vertex AI 默认 全部
liblouis 使用未初始化内存 Vertex AI Test-to-harness 测试标识符
libucl 越界读取 Vertex AI 默认 使用模糊测试关键字和简单参数时覆盖范围低但可达性高
openbabel 释放后使用 Vertex AI 默认 使用模糊测试关键字和简单参数时覆盖范围低但可达性高
libyang 越界读取 Vertex AI 默认 全部
openbabel 越界读取 Vertex AI 默认 全部
exiv2 越界读取 Vertex AI 默认 全部
未披露 Java RCE(待维护者评估) Vertex AI 默认 覆盖范围广但覆盖率低
未披露 正则表达式DoS(待维护者评估) Vertex AI 默认 覆盖范围广但覆盖率低
未披露 越界读取 Vertex AI 默认 全部
未披露 越界写入 Vertex AI 默认 全部
未披露 越界读取 Vertex AI 默认 全部
未披露 越界读取 Vertex AI 默认 全部
未披露 释放后使用 Vertex AI 代理提示词 全部

这些漏洞仅能通过新生成的目标被发现。在现有的OSS-Fuzz目标中,它们是无法触及的。

各项目当前覆盖率提升情况

项目 总覆盖率提升 总相对覆盖率提升 OSS-Fuzz 生成的总覆盖行数 OSS-Fuzz 生成的新覆盖行数 已有覆盖行数 项目总代码行数
phmap 98.42% 205.75% 1601 1181 574 1120
usbguard 97.62% 26.04% 24550 5463 20979 3564
onednn 96.67% 7057.14% 5434 5434 77 210
avahi 82.06% 155.90% 3358 2814 1805 3046
pugixml 72.98% 194.95% 9015 6646 3409 7662
librdkafka 66.88% 845.57% 5019 4490 531 1169
casync 66.75% 903.23% 1171 1120 124 1678
tomlplusplus 61.06% 331.10% 4755 3652 1103 5981
astc-encoder 59.35% 177.88% 2726 1745 981 2940
mruby 48.56% 0.00% 34493 34493 0 71038
arduinojson 42.10% 85.80% 3344 1800 2098 4276
json 41.13% 66.51% 5051 3339 5020 8119
double-conversion 40.40% 88.12% 1663 779 884 1928
tinyobjloader 38.26% 77.01% 1157 717 931 1874
glog 38.18% 58.69% 895 331 564 867
cppitertools 35.78% 45.07% 253 151 335 422
eigen 35.38% 190.70% 2643 1947 1021 5503
glaze 34.55% 30.06% 2920 2416 8036 6993
rapidjson 31.83% 148.07% 1585 958 647 3010
libunwind 30.58% 83.25% 2899 1342 1612 4388
openh264 30.07% 50.14% 6607 5751 11470 19123

* “项目总代码行数”是指由 OSS-Fuzz 中现有的人工编写的模糊测试目标编译并链接后的被测项目源代码行数。

* “总覆盖率提升”是以“项目总代码行数”为分母计算得出的。而“总相对覆盖率提升”则是指与原有覆盖行数相比,覆盖率的增加量。

* 在编译新的模糊测试目标时,可能会包含来自被测项目的额外代码,从而导致较高的百分比提升。

引用本工作

请单击此 GitHub 页面右侧的 '引用此仓库' 按钮,以获取引用详情。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.4k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|2天前
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像