[Paper] 剥开茧:揭示用于变异式灰盒模糊测试的被抑制黄金种子

发布: (2026年2月27日 GMT+8 15:03)
8 分钟阅读
原文: arXiv

Source: arXiv - 2602.23736v1

请提供您希望翻译的具体文本内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。谢谢!

概述

本文介绍了 PoCo,一种新颖的技术,能够“剥离”障碍条件语句,以暴露传统基于覆盖的种子选择(CSS)工具(如 afl‑cmin)常常错过的隐藏的高价值种子。通过暂时禁用这些阻塞因素,PoCo 使得对程序状态空间的探索更深入,从而产生更丰富的种子池并提升灰盒模糊测试的效果。

关键贡献

  • 障碍条件识别: 一种轻量级的静态‑动态分析,定位充当“茧”的条件分支,阻止模糊测试引擎到达下游代码。
  • 种子剥离机制: 一种插装方案,临时强制障碍条件同时评估为真和假,使模糊测试能够收集原本被抑制的种子。
  • 增强的 CSS 流程: 将 PoCo 与现有 CSS 工具(如 afl‑cminafl‑tmin)集成,生成更小但更强大的种子集合,且不牺牲覆盖率。
  • 实证验证: 在 12 个真实开源项目上的实验表明,与普通 CSS 相比,边缘覆盖率提升最高 23 %,唯一崩溃数提升 2–5 ×
  • 开源原型: 作者将 PoCo 作为 AFL‑2.52b 的插件发布,便于实践者轻松尝试。

方法论

  1. 静态扫描: PoCo 解析目标二进制的控制流图 (CFG),以定位 障碍条件——这些分支的真假结果会控制大型下游子图,但在初始种子语料库中很少被触发。
  2. 动态剖析: 当程序在基线模糊测试器下运行时,PoCo 记录哪些条件分支 从未 被执行,或仅以单一结果被执行。
  3. 条件剥离: 对于每个已识别的障碍,PoCo 注入一个微小的插桩桩,使分支在连续运行中强制两种方向都被评估(例如,通过切换全局标志)。这 不会 永久改变程序逻辑;在种子收集完成后会恢复原始条件。
  4. 深度种子选择: 在插桩后的二进制上重新运行模糊测试器。由于阻断条件被暂时解除,模糊测试器能够生成到达更深代码路径的输入。这些输入随后交给标准的 CSS 工具(afl‑cmin)进行冗余剪枝,同时保留新发现的覆盖率。
  5. 映射回原始: 最终的种子集合会在 原始(未插桩)二进制上进行验证,以确保每个种子在没有人工覆盖的情况下仍能触发预期路径。

整个流水线全自动化,并且仅增加了适度的运行时开销(平均约 5 %),因为插桩轻量且仅在种子生成阶段激活。

Source:

结果与发现

基准基线 (afl‑cmin)PoCo‑增强覆盖率 ↑新崩溃
libpng12 800 edges15 800 edges+23 %+3
openssl9 450 edges11 200 edges+18 %+2
sqlite314 300 edges16 100 edges+13 %+1
  • 种子集大小: 与基线相比,PoCo 将最终种子语料库减少约 30 %,同时提升覆盖率,这意味着更少的存储需求和更快的模糊测试循环。
  • 漏洞发现: 在 24 小时的模糊测试窗口中,使用 PoCo 增强的运行发现了 7 个先前未知的 CVE,全部由在普通 CSS 输出中缺失的种子触发。
  • 性能开销: 插桩阶段增加约 5 % 的 CPU 开销,但由于种子池更小且质量更高,下游模糊测试速度提升约 12 %。

实际影响

  • 更快的 Time‑to‑Bug: 开发团队可以将 PoCo 集成到 CI 流水线中,自动“解锁”更深层的代码路径,从而提前进行安全测试,缩短反馈周期。
  • 资源效率: 更小的种子集意味着模糊测试集群的磁盘 I/O 和内存压力更低,能够在大规模模糊测试平台上实现成本节约。
  • 对加固代码的更好覆盖: 对输入进行大量验证的应用(如解析器、加密库)常常在早期检查处卡住模糊测试器;PoCo 的条件剥离能够绕过这些阻碍,而无需使用重量级的符号执行。
  • 即插即用: 由于 PoCo 只是在 AFL 现有工具之上做一个轻量包装,团队可以在不重写模糊测试 harness 或重新培训工程师的情况下直接采用。

限制与未来工作

  • 数据依赖障碍: PoCo 目前专注于 语法 条件分支;那些结果依赖于复杂数据结构(例如校验和、密码哈希)的分支仍可能阻碍更深层的探索。
  • 潜在误报: 强制分支双向执行可能产生仅在人工覆盖下成功的种子,需要在最终验证步骤中将其过滤。
  • 静态分析的可扩展性: 超大型二进制文件(例如单体浏览器)可能导致 CFG 提取成为瓶颈;增量或基于抽样的分析是可能的解决方案。
  • 未来方向: 作者计划 (1) 将 PoCo 与轻量级符号执行相结合,以处理数据依赖障碍;(2) 扩展对其他模糊测试工具的支持(如 libFuzzer、Honggfuzz);以及 (3) 基于历史漏洞发现的 ROI,探索自动化优先级排序,以决定先处理哪些障碍。

作者

  • Ruixiang Qian
  • Chunrong Fang
  • Zengxu Chen
  • Youxin Fu
  • Zhenyu Chen

论文信息

  • arXiv ID: 2602.23736v1
  • 分类: cs.SE
  • 发布日期: 2026年2月27日
  • PDF: 下载 PDF
0 浏览
Back to Blog

相关文章

阅读更多 »