来源笔记
FuzzingBrain V2: A Multi-Agent LLM System for Automated Vulnerability Discovery and Reproduction
摘要
FuzzingBrain V2 是一个多智能体 LLM 系统,用来发现 C/C++ 漏洞,并用 OSS-Fuzz 崩溃结果验证这些漏洞。它的核心主张是:只有当每个已报告问题都必须产出可复现的 fuzz 输入时,LLM 分析才更有用。
问题
- LLM 漏洞报告常有较高误报率,因为它们缺少可执行的 PoC 输入。
- 基于函数级的审查在大型上下文里会漏掉漏洞,而基于行级的审查往往缺少足够上下文来判断是否可利用。
- 涉及跨函数数据流、间接调用、状态、校验和或协议步骤的漏洞,很难靠普通静态工具和只用 LLM 的审查处理。
方法
- 该系统为每个 fuzzer 和 sanitizer 组合运行 worker,例如 libFuzzer 配合 AddressSanitizer,并把 OSS-Fuzz 作为验证后端。
- 它引入了 Suspicious Points:把可疑漏洞候选和控制流位置、漏洞类型、评分、可达性、验证状态和 PoC 指引绑定起来的结构化表示。
- 专门的 agent 负责生成方向、筛选函数中的 Suspicious Points、去重候选、验证可达性和安全检查、生成 PoC 输入,以及撰写报告。
- 它先在按特征组织的代码区域上做分层搜索,然后一次分析一个函数,并结合调用者、被调用者、静态分析和动态分析上下文。
- 它把 LLM 生成的输入和两层 fuzzing 结合起来:一个全局 fuzzer 用于广泛探索,一个 SP fuzzer 用于变异失败的 PoC 尝试,同时让 LLM 继续尝试新输入。
结果
- 在 AIxCC 2025 Final Competition C/C++ 数据集上,论文报告的检测率为 90%:40 个漏洞中发现了 36 个。
- 摘要报告称,在 12 个开源项目中发现了 29 个零日漏洞,全部被维护者确认并修复,其中 2 个分配了 CVE ID。
- 引言还声称在 19 个开源项目中发现了 41 个零日漏洞;这段摘录没有解释这一说法与摘要之间的冲突。
- 论文声称已确认漏洞的复现率为 100%,因为确认报告要求给出一个能触发 sanitizer 检测到崩溃的输入。
- 该系统设计为可在 1,000 多个接入 OSS-Fuzz 的开源项目上运行。