“ 在模糊测试(Fuzzing)领域,“策略”决定了效率的上限。无论是输入生成方式、变异算子,还是调度与反馈机制,都会直接影响漏洞发现能力。然而,现有模糊测试工具大多采用静态、固定的策略配置,难以适应程序行为的动态变化。
为了解决这一问题,研究者提出了xFUZZ,一种支持细粒度、运行时自适应的模糊测试策略组合框架,允许模糊测试系统在执行过程中根据反馈动态调整和组合多种策略,从而显著提升漏洞挖掘效率。 ”
📄 论文标题:xFUZZ: A Flexible Framework for Fine-Grained, Runtime-Adaptive Fuzzing Strategy Composition
📅 发表时间: Proceedings of the ACM on Software Engineering, ISSTA, 2025
🏫 作者单位:中关村实验室、清华大学等
💡开源代码:
https://anonymous.4open.science/r/xfuzz_submit-6BE0
01—方法介绍
xFUZZ的核心思想可以概括为一句话:将模糊测试策略“模块化”,并在运行时动态组合与调度。整体框架主要包括以下三个阶段:
① 策略解耦与模块化
将输入生成、变异、调度、反馈分析等策略拆解为可独立组合的组件。
② 运行时反馈感知
持续收集覆盖率、路径特征与执行反馈,为策略调整提供依据。
③ 自适应策略组合
根据运行状态动态启用、切换或融合不同策略,实现细粒度调控。

图 2. xFUZZ整体框架
小结:xFUZZ 不再把 Fuzzer 看作“单一算法”,而是一个可持续进化的策略系统。
02—关键机制
- 细粒度策略组合,支持在不同阶段、不同程序状态下采用不同fuzzing 策略。
- 运行时自适应调整,不依赖离线训练或人工配置,完全基于在线反馈。
- 高度可扩展框架,新策略可按模块直接接入,降低开发成本。
|
模块 |
设计思路 |
作用 |
|---|---|---|
|
策略组件化 |
将不同 fuzzing 策略抽象为独立模块 |
提升系统灵活性与可扩展性 |
|
运行时反馈分析 |
实时监控覆盖率、路径与执行特征 |
为策略调整提供决策依据 |
|
自适应调度机制 |
根据反馈动态选择或组合策略 |
避免策略失效或资源浪费 |
|
统一执行框架 |
对外提供一致的 fuzzing 接口 |
降低集成与部署成本 |
小结:该设计突破了传统 Fuzzer “策略写死”的限制,使模糊测试具备在线优化能力。
03—实验结果
作者已将Splice作为变异调度器的扩展集成到xFUZZ中,使其可自由组合使用任何变异调度器。但由于其可能影响EcoFuzz插件的算法数据完整性,Splice无法与EcoFuzz组合使用。xFUZZ共提供14种(4×2×2-2)组合方案。除上述插件外,变异器调度器还支持30个变异器插件,实现位翻转、字典、算术等变异操作。主要实验结果如下。
表1显示了xFUZZ的分支覆盖率能力。实验计算了六个模糊测试器在12个目标程序上的平均代码覆盖率。
表1. Fuzzbench平台上6款模糊测试工具对12个目标程序的分支覆盖率结果,基于10轮测试(每轮24小时)


表2显示了协同模糊测试的代码覆盖率比较结果。由于两种模糊测试工具在覆盖率测量机制上的差异,实验采用经AFL++的PCGUARD工具注入的二进制文件进行统一覆盖率测量。实验持续24小时,并使用Unifuzz数据集的相同初始种子重复进行了五次测试。
表1. Unifuzz平台中xFUZZ与Autofz对12个目标程序的分支覆盖率结果(基于5轮运行,每轮24小时)

小结:通过将核心模糊测试组件模块化,并整合基于汤普森采样的动态策略选择算法,xFUZZ能够实时调整配置以优化漏洞发现与代码覆盖率。实验结果表明,xFUZZ超越了当前最先进的模糊测试工具,发现的独特漏洞数量提升10.07%,代码覆盖率最高可达11.48%。
📌 总结
xFUZZ从系统设计层面重新思考了模糊测试策略的组织方式,将“策略自适应”作为一等公民纳入框架之中。相比依赖经验调参的传统方法,该框架更符合真实软件系统的动态特性。这一工作表明,未来Fuzzing的竞争焦点,可能不在于单个算法,而在于策略协同与自适应能力。
📣 欢迎留言讨论
-
你认为自适应策略是否会成为下一代 Fuzzer 的标配?
-
xFUZZ 这种“策略即组件”的设计,是否有机会统一不同 Fuzzing 流派?
📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!


1万+

被折叠的 条评论
为什么被折叠?



