清华大学|ProphetFuzz:一种仅通过大语言模型利用文档实现高风险选项组合全自动预测与模糊测试的方法

admin 2026-01-30 18:07:07 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: ProphetFuzz是基于大语言模型的模糊测试工具,通过解析程序文档提取约束并预测高风险选项组合。该方法无需源码即可实现全自动测试,有效解决选项组合爆炸问题。在52个程序测试中发现140个漏洞且93个获认证,显著提升了漏洞挖掘效率与精度。 综合评分: 88 文章分类: 漏洞分析,安全工具,AI安全


cover_image

清华大学 | ProphetFuzz:一种仅通过大语言模型利用文档实现高风险选项组合全自动预测与模糊测试的方法

原创

张倩月 张倩月

安全学术圈

2026年1月29日 21:30 四川

论文题目:ProphetFuzz: Fully Automated Prediction and Fuzzing of High-Risk Option Combinations with Only Documentation via Large Language Model 论文作者:Dawei Wang, Geng Zhou, Li Chen, Dan Li, Yukai Miao 发表会议:CCS ’24: Proceedings of the 2024 on ACM SIGSAC Conference on Computer and Communications Security 主题类型:漏洞检测 笔记作者:张倩月@Web攻击检测与追踪 主编:黄诚@安全学术圈

研究概述

软件复杂度的增长使得程序选项及其组合数量激增,以ImageMagick为例,该软件拥有305个选项,在不考虑各选项参数取值差异的情况下,理论上会产生2^305种可能的组合。这种组合数量指数级的增长会形成大量独特的执行路径,极大拓展了漏洞挖掘的搜索空间,给传统的模糊测试技术带来了挑战。现有的一些专注于探索选项组合的模糊测试工具相较于传统工具更有效,但仍然存在以下限制:1)忽略选项组合的漏洞风险等级,平等地生成测试用例;2)对可执行命令的组件(选项、值、文件),进行随机变异,未考虑到语义匹配问题;3)依赖于专家知识。在此背景下,本文设计了一个基于大语言模型的、完全自动化的选项组合模糊测试工具ProphetFuzz,该工具仅依赖于程序文档,通过精心设计的提示词工程驱动大语言模型(LLM),能够实现自动化预测高风险选项组合并执行无人干预的模糊测试。对52个程序的最新版本进行模糊测试后,发现了140个漏洞,其中93个获开发者认证,21个被分配CVE编号。

图1给出了ProphetFuzz的工作流程图,包含文档解析、选项之间的约束提取、高风险选项组合预测、命令组装等模块。对于一个待测程序,首先采用关键词匹配的方式对其文档进行解析,获取其中的关键信息如程序描述、用法摘要和选项详情等。随后,为了防止LLM生成大量无效的选项组合,ProphetFuzz利用LLM从程序描述和选项描述中提取选项间的约束,找出各个选项存在互斥或依赖关系的选项。为了减少幻觉问题带来的误报,本文设计了双向推理的自检方式,即对于互斥或依赖型约束,分别构造一个验证问题和一个反例问题,从两个不同角度评估约束的有效性。在文档内容和选项约束的基础上,采用少样本学习的方法,预测生成不会违反这些约束的高风险选项组合。接着,ProphetFuzz利用LLM基于选项组合的语义信息,生成相应的可执行命令,以及用于生成所需文件的python代码。最后,Prophetfuzz执行文件生成代码以生成种子语料库,并修改组装命令进行模糊测试。

图1:Prophet工作流程图

为了实现全流程的自动化,在文档解析、约束提取、高风险选项预测这三个阶段均以JSON格式输出结果。在高风险选项组合预测和命令组装与文件生成过程中作者精心设计的提示词分别如图2和图3所示。

图2:高风险选项组合预测的提示词

图3:命令组装与文件生成过程的提示词

贡献分析

  • 贡献点1:论文针对选项组合空间过大导致模糊测试效率低下的问题,提出了基于LLM预测高风险选项组合的方法,实现了在无需源码的前提下,仅依赖程序文档即可自动化识别更有可能触发漏洞的组合,提高了模糊测试的效率和漏洞触发率;
  • 贡献点2:论文针对LLM易将违反约束的选项组合识别为高风险组合从而导致程序过早终止的问题,提出了一种基于双向推理的自检机制,实现了在LLM存在幻觉风险的情况下自动验证约束信息的能力,提高约束提取的准确性;
  • 贡献点3:论文针对当前方法对高风险组合缺乏有效知识的问题,提出了自动化生成少样本训练语料的方法,实现了无需人工专家参与即可构造实例,从而提升LLM对文档中潜在高风险组合的理解和预测能。

代码分析

代码链接:

https://github.com/NASP-THU/ProphetFuzz

简要对其论文的代码进行点评,点评内容如下:

  1. ProphetFuzz使用的类库主要为开源类库,依赖OpenAI API实现大模型的调用,使用afl-cmin对测试语料库进行最小化处理,使用CarpetFuzz作为面向选项的模糊测试器,文档解析部分使用了col -b等Unix工具对Groff文档进行预处理。
  2. 项目实现难度较高,涉及文档解析、约束抽取、LLM交互、模糊测试自动化等多个环节,且需保证各环节能自动衔接。
  3. manpage_parser模块实现程序文档的解析;llm_interface模块实现约束提取、高风险选项组合预测、命令组装等与大语言模型相关的核心逻辑;fuzzing_handle模块实现模糊测试准备、命令修改、语料最小化以及自动化fuzzing执行。run_all_in_one.sh是一键式自动化流程脚本,串联各模块。

论文点评

  1. 论文中约束提取主要集中在两个选项之间的关系,例如,A和B存在依赖关系时,A和B一定要同时启用。但是现实中存在多选项约束,即三个或更多个选项之间存在依赖或冲突关系,在这种情况下单独处理任意两个的关系可能无法准确表达约束。面对多选项时,ProphetFuzz让LLM一次性处理多个选项组,但这样容易导致模型推理混乱,从而引入错误的约束。可以使用整体推理加两两验证的方式,先让LLM对整个多项式组合进行初步判断,再对将多选项约束拆解为两两组合的选项对,对其进行逐一验证。
  2. LLM对选项之间约束关系的理解完全依赖于程序文档中的自然语言描述,信息来源较为单一。虽然这种“仅依赖文档”的设计提升了系统的通用性和适配能力,但也带来了显著的局限性。一旦程序文档存在缺失、表述模糊或信息不一致的情况,将严重影响 ProphetFuzz 的约束提取、组合预测和命令构造等关键模块的准确性与稳定性。为缓解这一问题,未来可以考虑引入程序执行过程中的动态反馈信息,例如结合运行时错误日志、程序输出行为或崩溃路径等数据,对LLM提取的约束关系进行辅助验证与纠错,从而提升约束推理的鲁棒性与语义准确性。同时,也可探索将文档信息与其他静态源(如源码注释、默认配置模板)融合,构建多模态、可信度更高的约束推理机制。
  3. ProphetFuzz主要是对输入文件进行变异,但是不同程序可能具有不同的变异目标需求。以vim为例,该类程序的行为更受配置文件的影响,相比于变异输入文件,直接变异配置参数可能更容易触达深层逻辑路径。未来可拓展ProphetFuzz的输入选择策略,赋予 LLM 自主判断能力,使其能够根据程序文档内容、选项语义及程序特性,自动识别并选择更适合进行变异的输入类型(如输入文件、配置文件、环境变量等),以提升测试覆盖率和漏洞发现能力。

论文文献

  1. Wang, Dawei, et al. “ProphetFuzz: Fully Automated Prediction and Fuzzing of High-Risk Option Combinations with Only Documentation via Large Language Model.” Proceedings of the 2024 on ACM SIGSAC Conference on Computer and Communications Security. 2024.

安全学术圈招募队友-ing 有兴趣加入学术圈的请联系 secdr#qq.com


专题最新征文

  • 期刊征文 | 暗网抑制前沿进展 (中文核心)
  • 期刊征文 | 网络攻击分析与研判 (CCF T2)
  • 期刊征文 | 域名安全评估与风险预警 (CCF T2)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全学术圈 张倩月 张倩月《清华大学 | ProphetFuzz:一种仅通过大语言模型利用文档实现高风险选项组合全自动预测与模糊测试的方法》

评论:0   参与:  0