概要:
现有灰盒模糊测试工具要么策略固定、要么只能整工具切换,无法随目标程序和测试阶段 的变化而细粒度、运行时地调整策略;我们提出 xFUZZ,首次把输入调度、变异调度等核 心组件全部做成可热插拔的插件,并用滑动窗口 Thompson Sampling 在运行期动态组合最优策略,结果比传统fuzz工具多挖 10.07% 漏洞、多覆盖11.48%代码。
第一章
进行简介,传统的FUZZ非常单一不灵活,我们xfuzz核心就在于可以把测试中的不同过程,更细致地拆成几个插件,通过对比某个插件在某个过程的性能优势,滑动地去选择不同插件,从而达到整个过程的最优化。
第二章
在讲:fuzzing 里两类最核心的调度算法是输入调度和变异调度,但都是单点突破、工具硬编码,不支持运行时换零件,无法自由组合;虽然有 LibAFL 首次拆成插件形式,但组合好一旦运行就不能动态切换,而协作式 fuzz(如 autofz)也只能整进程调度,拆不到组件级;xFUZZ 准备把它们全部插件化,实现运行时动态调整策略的优点。
几个关键词
- Extensibility,可拓展性,就是插件是否可拓展,有无插件
- Runtime Adaptability,运行时适应性。是否允许动态地调整插件(自动决定下分钟用哪个插件)
- Strategy Hot-Swapping策略热插拔:是否允许用户在不重新启动模糊测试进程的情况下更改特定策略(手动去切换插件)
关键机制
- 细粒度策略组合,支持在不同阶段、不同程序状态下采用不同fuzzing 策略。
- 运行时自适应调整,不依赖离线训练或人工配置,完全基于在线反馈。
- 高度可扩展框架,新策略可按模块直接接入,降低开发成本。
第三章
对前面的实验证实,得出两个结论,
对于我们的插件:
- 最优策略是目标依赖的,就是不同的程序有不同的最优方法。
- 某一阶段最优的策略,未必全程最优。
所以得出结论:框架将允许在运行时选择和修改策略,通过在整个人工测试过程中不断适应每个目标的独特特征和不断发展需求来优化模糊测试性能。
xfuzz的总体架构

左侧是插件类别,主要是输入调度的插件和变异调度的插件,右侧PC(Plugin Composition),按轮次,每轮选择不同的插件,通过每轮的reward再去选择左侧的插件。
第四章:
4.2细粒度插件系统
主要包括:
- 输入调度插件:负责选择语料库中的测试用例(如 AFLFast、EcoFuzz 等经典算法);
- 变异调度插件:控制变异方式的选择逻辑(如 MOpt、Havoc);
- 变异器插件:具体的测试用例变异操作(如位翻转、算术变异等);
4.3运行时自适应模糊测试策略组合
主要介绍 xFUZZ 如何基于运行时反馈动态选择最优的插件组合策略
核心算法:滑动窗口汤普森采样(Sliding-Window Thompson Sampling)
SW-TS 算法的核心目标:
解决 “非平稳多臂laohuji ##拼音(NS-MAB)” 问题:传统汤普森采样会依赖全部历史数据,但程序在模糊测试过程中行为会变化(比如路径覆盖进入瓶颈期),旧数据会干扰决策。SW-TS 通过设置滑动窗口(window),只保留最近 w 轮的反馈数据,丢弃过时的收益信息,让策略选择更贴合当前程序状态。

算法过程:
初始时,正收益计数器(RewardP)和负收益计数器(RewardN)的数值均设定为 0。统计范围从 max (1, 当前轮次 - 窗口大小(sw_value)) 开始,一直到当前轮次结束,这个起始边界的设定是为了避免出现无效轮次。在该范围内,分别累加目标插件组合(PC)在每一轮对应的正收益(rewardP_PC,i)和负收益(rewardN_PC,i),再以累加后的总正收益和总负收益为参数,从 β(贝塔)分布中抽取一个采样值(sample),最终依据各个插件组合的采样值高低,筛选出最优的插件组合。
SW-TS的奖励机制:
用 “奖励” 指挥测试用例生成 —— 能找到 “少见路径” 的用例有奖,总走 “常见路径” 的用例没奖,这样测试就会越来越多地探索新代码。
Tiered Exploration Strategy 分层探索策略

外层:初始从继承上轮的选择开始,首先从上一轮中选出最优插件,调用子函数,为每个类别选择最优的插件,保存本轮结果,下一轮继续用,结束后返回最优的插件组合。
内层子函数:1.首先临时替换插件,生成测试组合,2.运行xfuzz,获取组合奖励3.记录奖励4.给每个插件打分(SW-TS算法)5.选得分最高的插件
第五章
讲该框架是一个全新的框架,C++架构
第六章
通过对比实验,印证我们的优势。
通过在统一硬件、软件环境及公开基准套件(Fuzzbench、Unifuzz、Magma)下,与 AFL++、autofz 等主流模糊测试工具开展多轮重复测试,从代码覆盖率、漏洞发现数量与效率等核心维度对比验证,证实 XFUZZ 凭借细粒度插件化架构与 runtime 自适应策略组合,在性能上显著优于同类工具。
漏洞发现能力更强、效率更高,代码覆盖率显著提升,策略组合灵活且支持 runtime 自适应,探索效率更高,资源开销更优。
第七章
- 局限性:当前插件类型较有限,仅覆盖输入调度、变异调度等核心模块,且依赖 AFL 式插桩与 forkserver 执行器,适配场景存在局限;
- 未来工作:计划扩展插件集以支持更多先进模糊测试技术,新增 QEMU 式执行器适配闭源二进制文件,同时支持分布式、跨平台模糊测试,拓宽应用范围;
- 有效性保障:实验虽基于公开基准套件,但通过纳入 mruby、file 等多样化目标程序,提升了结果对真实应用场景的代表性,降低实验有效性风险。
总结:
通过将核心模糊测试组件模块化,并整合基于汤普森采样的动态策略选择算法,xFUZZ能够实时调整配置以优化漏洞发现与代码覆盖率。实验结果表明,xFUZZ超越了当前最先进的模糊测试工具,发现的独特漏洞数量提升10.07%,代码覆盖率最高可达11.48%。
最后总结原文:
In this paper, we presented xFUZZ, a fuzzing framework that enables fine-grained, runtime-adaptive strategy composition, addressing the limitations of existing fuzzing tools constrained by static or coarse-grained configurations, and by modularizing core fuzzing components and incorporating a Thompson Sampling-based algorithm for dynamic strategy selection, xFUZZ adapts its configurations in real-time to optimize vulnerability discovery and code coverage, with experimental results showing that xFUZZ outperforms state-of-the-art fuzzers, discovering 10.07% more unique vulnerabilities and achieving up to 11.48% higher code coverage.