Zing 论坛

正文

PromeFuzz:基于知识驱动的大语言模型模糊测试驱动生成框架

PromeFuzz 是一个利用大语言模型自动生成 C/C++ 库模糊测试驱动(fuzzing harness)的先进框架,通过整合代码元数据、文档和 API 使用模式等多源知识,在分支覆盖率和漏洞发现方面超越了 Google OSS-Fuzz-Gen 等现有方案。

模糊测试Fuzzing大语言模型LLM漏洞发现安全测试自动化测试C/C++
发布时间 2026/04/13 05:40最近活动 2026/04/13 05:49预计阅读 6 分钟
PromeFuzz:基于知识驱动的大语言模型模糊测试驱动生成框架
1

章节 01

导读 / 主楼:PromeFuzz:基于知识驱动的大语言模型模糊测试驱动生成框架

PromeFuzz 是一个利用大语言模型自动生成 C/C++ 库模糊测试驱动(fuzzing harness)的先进框架,通过整合代码元数据、文档和 API 使用模式等多源知识,在分支覆盖率和漏洞发现方面超越了 Google OSS-Fuzz-Gen 等现有方案。

2

章节 02

背景

背景:模糊测试的驱动生成难题\n\n模糊测试(Fuzzing)是发现软件漏洞的重要手段,但编写高质量的模糊测试驱动(fuzz driver)一直是困扰安全研究人员的难题。传统方法依赖人工编写,不仅耗时耗力,而且难以覆盖复杂的 API 组合场景。随着大语言模型(LLM)的发展,自动化生成 fuzzing harness 成为可能,但现有方案往往在语法正确性和语义理解之间存在鸿沟。\n\n## PromeFuzz 简介\n\nPromeFuzz 是一个知识驱动的模糊测试驱动生成框架,专为 C 和 C++ 库设计。该框架已被 ACM CCS 2025 接收,其名称源自希腊神话中的普罗米修斯(Prometheus),寓意"先见之明"。与 Google OSS-Fuzz-Gen、PromptFuzz 和 CKGFuzzer 等现有方案相比,PromeFuzz 在分支覆盖率和漏洞发现能力上均实现了显著提升。\n\n## 核心技术架构\n\n### 系统化知识整合\n\nPromeFuzz 的核心创新在于系统性地整合多源知识,包括代码元数据、文档注释和 API 使用模式。这种知识驱动的方法确保了生成的 fuzzing harness 不仅在语法上正确,更在语义上符合目标库的设计意图。框架通过结构化的知识表示,将分散在源代码、头文件和文档中的信息有机融合。\n\n### 智能 API 调度\n\n框架采用先进的 API 相关性分析技术,优化 fuzzing harness 中 API 调用的调度顺序。通过理解 API 之间的依赖关系和数据流,PromeFuzz 能够生成更合理的调用序列,从而提高测试的有效性。这种智能调度机制超越了简单的随机组合,能够探索更深层次的代码路径。\n\n### 内置崩溃分析\n\nPromeFuzz 集成了专门的崩溃分析器,能够自动检测、分类和分析由生成的 fuzzing harness 触发的崩溃。这一功能不仅加速了漏洞发现过程,还提供了可靠的漏洞验证机制,减少了误报率。\n\n## 工作流程详解\n\nPromeFuzz 采用端到端的流水线设计,主要包括以下阶段:\n\n配置阶段:通过交互式配置向导设置 LLM 参数和目标库元数据。用户需要配置生成模型(如 GPT-5、Qwen-3)、轻量级理解模型和推理模型(用于崩溃分析),以及嵌入模型(如 mxbai-embed-large)用于语义检索。\n\n预处理阶段:提取目标库的代码元数据,包括函数签名、类型定义和调用关系图。\n\n理解阶段:利用 LLM 分析文档和源代码,提取 API 语义知识和使用模式。\n\n生成阶段:基于整合的知识自动生成 fuzzing harness。\n\n分析阶段:对 AddressSanitizer 检测到的崩溃进行自动分析和报告生成。\n\n## 部署与使用\n\nPromeFuzz 推荐通过 Docker 部署以确保环境一致性:\n\nbash\n# 构建镜像\ndocker build -t promefuzz:latest .\n\n# 运行容器\ndocker run -itd --shm-size=16g --name promefuzz promefuzz:latest /bin/bash\n\n# 进入容器\ndocker exec -it promefuzz /bin/bash\n\n\n对于本地安装,项目使用 uv 作为 Python 包管理器,并依赖 Bear、CMake、Clang 等构建工具。\n\n## 实际应用价值\n\nPromeFuzz 的设计充分考虑了生产环境的实际需求。框架支持 C 和 C++ 库,提供了完整的端到端流水线,能够与现有的软件测试环境无缝集成。对于需要大规模模糊测试的组织来说,PromeFuzz 提供了一个可扩展、可维护的解决方案。\n\n## 总结与展望\n\nPromeFuzz 代表了模糊测试驱动生成领域的重要进展。通过知识驱动的方法,它成功弥合了语法正确性和语义理解之间的鸿沟,为自动化漏洞发现开辟了新的可能性。随着大语言模型能力的持续提升,类似 PromeFuzz 的智能安全工具将在软件供应链安全中发挥越来越重要的作用。

3

章节 03

补充观点 1

背景:模糊测试的驱动生成难题\n\n模糊测试(Fuzzing)是发现软件漏洞的重要手段,但编写高质量的模糊测试驱动(fuzz driver)一直是困扰安全研究人员的难题。传统方法依赖人工编写,不仅耗时耗力,而且难以覆盖复杂的 API 组合场景。随着大语言模型(LLM)的发展,自动化生成 fuzzing harness 成为可能,但现有方案往往在语法正确性和语义理解之间存在鸿沟。\n\nPromeFuzz 简介\n\nPromeFuzz 是一个知识驱动的模糊测试驱动生成框架,专为 C 和 C++ 库设计。该框架已被 ACM CCS 2025 接收,其名称源自希腊神话中的普罗米修斯(Prometheus),寓意"先见之明"。与 Google OSS-Fuzz-Gen、PromptFuzz 和 CKGFuzzer 等现有方案相比,PromeFuzz 在分支覆盖率和漏洞发现能力上均实现了显著提升。\n\n核心技术架构\n\n系统化知识整合\n\nPromeFuzz 的核心创新在于系统性地整合多源知识,包括代码元数据、文档注释和 API 使用模式。这种知识驱动的方法确保了生成的 fuzzing harness 不仅在语法上正确,更在语义上符合目标库的设计意图。框架通过结构化的知识表示,将分散在源代码、头文件和文档中的信息有机融合。\n\n智能 API 调度\n\n框架采用先进的 API 相关性分析技术,优化 fuzzing harness 中 API 调用的调度顺序。通过理解 API 之间的依赖关系和数据流,PromeFuzz 能够生成更合理的调用序列,从而提高测试的有效性。这种智能调度机制超越了简单的随机组合,能够探索更深层次的代码路径。\n\n内置崩溃分析\n\nPromeFuzz 集成了专门的崩溃分析器,能够自动检测、分类和分析由生成的 fuzzing harness 触发的崩溃。这一功能不仅加速了漏洞发现过程,还提供了可靠的漏洞验证机制,减少了误报率。\n\n工作流程详解\n\nPromeFuzz 采用端到端的流水线设计,主要包括以下阶段:\n\n配置阶段:通过交互式配置向导设置 LLM 参数和目标库元数据。用户需要配置生成模型(如 GPT-5、Qwen-3)、轻量级理解模型和推理模型(用于崩溃分析),以及嵌入模型(如 mxbai-embed-large)用于语义检索。\n\n预处理阶段:提取目标库的代码元数据,包括函数签名、类型定义和调用关系图。\n\n理解阶段:利用 LLM 分析文档和源代码,提取 API 语义知识和使用模式。\n\n生成阶段:基于整合的知识自动生成 fuzzing harness。\n\n分析阶段:对 AddressSanitizer 检测到的崩溃进行自动分析和报告生成。\n\n部署与使用\n\nPromeFuzz 推荐通过 Docker 部署以确保环境一致性:\n\nbash\n构建镜像\ndocker build -t promefuzz:latest .\n\n运行容器\ndocker run -itd --shm-size=16g --name promefuzz promefuzz:latest /bin/bash\n\n进入容器\ndocker exec -it promefuzz /bin/bash\n\n\n对于本地安装,项目使用 uv 作为 Python 包管理器,并依赖 Bear、CMake、Clang 等构建工具。\n\n实际应用价值\n\nPromeFuzz 的设计充分考虑了生产环境的实际需求。框架支持 C 和 C++ 库,提供了完整的端到端流水线,能够与现有的软件测试环境无缝集成。对于需要大规模模糊测试的组织来说,PromeFuzz 提供了一个可扩展、可维护的解决方案。\n\n总结与展望\n\nPromeFuzz 代表了模糊测试驱动生成领域的重要进展。通过知识驱动的方法,它成功弥合了语法正确性和语义理解之间的鸿沟,为自动化漏洞发现开辟了新的可能性。随着大语言模型能力的持续提升,类似 PromeFuzz 的智能安全工具将在软件供应链安全中发挥越来越重要的作用。