当前位置: 首页 > news >正文

PromeFuzz: A Knowledge-Driven Approach to Fuzzing HarnessGeneration with Large Language Models

一.简介:

  API 级模糊测试对现代软件愈发重要,为此我们提出PromeFuzz。我们方法的核心是:将项目相关的全部信息(包括源代码与 API 文档)转化为大模型能够高效利用的结构化知识,并通过增强 API 的语义约束与依赖关系,自动生成更高质量的模糊测试驱动,从而提升模糊测试效果。

  PromeFuzz 的核心在于改进 API 的调用约束,依托大模型生成严格满足三大要求的模糊测试驱动:①符合语法与初始化约束,确保可编译、可运行;②遵守 API 语义规则,保证函数组合、调用顺序与隐式约束正确;③能够有效探索程序状态空间,提升覆盖率与漏洞发现能力。

二.背景动机:

  第二章先讲 API 模糊测试与 Harness (驱动入口)的背景,举例子论述了之前的一些工具,在这方面都有一些不足,很多报错因素并不是因为fuzz,而是LLM本身存在的问题:传统与 LLM 方法不懂 API 约束、误报极高的问题,明确三大研究挑战,并引出 PromeFuzz 的整体解决思路。

  三个挑战:

  • 如何从代码 + 文档里有效抽取知识?
  • 如何用这些知识提升 Harness 质量,又不把 LLM 撑爆?
  • 如何系统修正 LLM 错误,减少幻觉、降低误报?

  解决思路:

  • 把代码元数据 + API 文档 + 真实调用关系变成结构化知识。
  • 用知识驱动 LLM 生成合规 Harness。
  • 加清洗、修复、反馈闭环,让生成越来越准。

  而我们的PromeFuzz 整个工作流程分为五个模块

  • Preprocessor 预处理模块:使用者api的调用序列,函数,依赖代码
  • Comprehender 理解模块:这些api通常怎么使用,配合什么使用
  • Scheduler 调度模块:通过上面的关系,按照相关性,生成我们api测试的组合(这种组合是可能性,可能测出新东西的组合)
  • Generator 生成模块:生成Fuzz Harness驱动(可以使用的)
  • Sanitizer 清洗模块:循环改错,看下哪里有问题,是什么方面的,应该怎么改

image

 

image

 自己总结一下流程图:

image

 第三章.详细设计

3.1知识库的建立

  包括preprocessorcomprehender.

  PromeFuzz 通过 { 从库源码、用户示例代码 和 API 文档(手册 / 注释) }  中提取并理解三类知识,来构建统一的 API 知识库。去理解:

  • 先理解 API 正确用法和各种API之间的相关性
  • 再用范围相关性圈定同一功能的 API
  • 用调用相关性看真实使用习惯
  • 用语义相关性补充功能相似度

3.2知识驱动生成

  scheduler  Generatorsanitizer

  先看哪些 API 关系近、经常一起用,再看测哪些能让代码覆盖变多,然后挑一组最值得测、最可能测出问题的 API,再把它们按正常使用顺序排好,方便后面直接生成能用的测试代码。

  内容很简单,主要在他代码是怎么写的。

第四章.实现

  PromeFuzz 是在 Clang/LLVM 和 LangChain 的基础上实现的,大概包含 9000 行 Python 代码和 900 行 C++ 代码。虽然 C++ 也能兼容,但是它主要还是用来测试 C 语言相关的库和 API。

  代码流程:

  PromeFuzz.py总命令入口,在cli文件夹里面有每个步骤(子模块)的详细组成

用户执行: ./PromeFuzz.py preprocess -D --config my.toml


if __name__ == "__main__" 触发

main()
├── setup_subcommands() # 动态导入 cli/preprocess.py 等
│ └── butler.add_command(preprocess) # 注册子命令

butler() [Click 处理参数]
├── setup_logger(True) # -D 开启 DEBUG
│ ├── 控制台: 彩色日志 + tqdm.write
│ └── 文件: logs/20260327..._preprocess_-D.log
├── load_config(Path("my.toml"), Path("libraries.toml"))
│ ├── 检查文件存在
│ ├── tomllib 解析 TOML → 字典
│ ├── 替换 {PROMEFUZZ_PATH} 变量
│ └── 存入 global_vars

Click 路由到 preprocess 子命令执行

后面:

  5.评估

  6.讨论假阳性和失败案例:论文分析假阳性和失败案例后得出,少量错误源于复杂依赖(理解错了api的信息或者关系)、严格调用顺序及 LLM 理解限制,但知识驱动设计已有效降低错误率,证明 PromeFuzz 思路可靠先进。

  7.对比

  8.总结:本文提出知识驱动的 PromeFuzz 方法,用于自动模糊测试线束生成;其通过集成代码元数据、文档及 API 相关性的结构化知识,让 LLM 生成语法正确且符合 API 隐式约束的控制,搭配自动编译修复、实时覆盖反馈和误报过滤消毒程序增强鲁棒性。经 22 个实际项目实验验证,PromeFuzz 性能优于 Prompt-Fuzz、CKGFuzzer 等先进工具及手工模糊测试工具,分支覆盖率分别比 PromptFuzz、CKGFuzzer、oss-fuzzgen、OSS-Fuzz 高 1.50 倍、3.88 倍、1.91 倍、1.40 倍,共发现 25 个未知漏洞(含 21 个开发者确认漏洞、3 个确认 CVEs),精度达 89.7%。

http://www.jsqmd.com/news/544468/

相关文章:

  • 百川2-13B模型微调实战:让OpenClaw更好理解你的工作习惯
  • 机器人手臂相机 vs 抓手相机:5个关键区别与选型指南(附避坑技巧)
  • Qwen3-TTS-12Hz-1.7B-CustomVoice惊艳效果:法语浪漫腔调+西班牙语热情语调语音对比
  • XU9232A可穿戴设备 电池供电设备 便携式医疗设备
  • 手把手教你用Buildroot为全志F1C200S定制Linux系统:从交叉编译到根文件系统
  • Qt官网抽风连不上?亲测有效的Qt6在线安装网络问题终极解决手册
  • 从硬件到软件:STC15+NTC热敏电阻温度测量系统避坑指南
  • 脚手架入门:重新认识SpringMVC,ruoyi岗位CRUD和导出的理解
  • 2026年二手笔记本年度排名交易二手笔记本,郑州购买二手笔记本多少钱 - 工业设备
  • Python实战:用LangGraph和MCP打造你的第一个AI代理(附完整代码)
  • 脱发星人必看!脱发严重有救了 - 品牌测评鉴赏家
  • 2026年高性价比GEO服务商推荐:预算友好型与效果导向型方案解析 - 品牌2025
  • 别再被Chrome吓到!NAS外网访问SSL证书失效的终极修复指南(华硕路由器+Let‘s Encrypt版)
  • 模拟地和数字地到底怎么接?从ADC设计误区讲起,用磁珠还是直接铺铜?
  • 新手练手项目推荐:C++控制台小游戏《恶魔轮盘赌》开发全记录(附源码解析)
  • 2026年常州豆包GEO公司官方联系方式查询 - 精选优质企业推荐榜
  • SkyWalking Web界面一片空白?从探针配置到数据存储的保姆级排错指南
  • 从Dockerfile到可运行镜像:手把手教你为Ubuntu 18.04容器定制Python+OpenCV环境
  • 揭秘支付宝立减金使用范围:你还不知道的隐藏规则和回收方法分享 - 团团收购物卡回收
  • 除螨喷雾喷一次能管多久?哪款除螨喷雾效果好?仙贝宁30天长效防护,抑菌除螨率99.9% - 博客万
  • 分析不错的可行性研究报告代写机构哪家性价比高 - 工业推荐榜
  • 告别“发缝宽星人”,解锁最新密发秘籍 - 品牌测评鉴赏家
  • 2026年长沙心理咨询优质机构推荐指南 - 第三方测评
  • 双目视觉测量系统实战:如何用BASLRR相机+8mm镜头提升近距离测量精度
  • Python实战:用Kruskal-Wallis检验分析鸢尾花数据集(附完整代码)
  • 2026年四川化粪池清理/河道清理厂家参考 深耕本地市场 设备硬核响应快 - 深度智识库
  • 告别数据丢失恐惧:用Restic和Backrest为飞牛Nas打造自动化加密备份系统
  • Visio图插入Word后糊了、排版乱了?收好这份高清导出与完美排版的避坑指南
  • OpenFOAM新手必看:如何快速解决计算不收敛问题(附详细排查步骤)
  • 2026年常州抖音推广公司官方联系方式与电话 - 精选优质企业推荐榜