欢迎光临
我们一直在努力

WildSync:通过Wild API 使用恢复实现自动化 Fuzzing Harness 合成

“  在现代模糊测试(Fuzzing)中,测试套件的质量往往直接决定了漏洞挖掘的深度与效率。然而,在真实工业代码中,API 使用方式复杂、多样且高度依赖上下文,人工编写 Harness 成本高昂,自动生成方法又常常缺乏对真实使用场景的理解。

    为此,研究者提出了WildSync,一种通过恢复“野生代码(Wild Code)”中真实 API 使用模式,自动合成高质量 Fuzzing 测试套件 的新方法,为提升模糊测试覆盖率与实用性提供了新的思路。 ”

  • 📄 论文标题:WildSync: Automated Fuzzing Harness Synthesis via Wild API Usage Recovery

  • 📅 发表时间: Proceedings of the ACM on Software Engineering, ISSTA, 2025

  • 🏫 作者单位:达特茅斯学院、犹他大学

  • 💡开源代码:

     https://github.com/spencerwuwu/WildSync

01—方法介绍

图1展示了调用vorbis库ov_time_seek的外部代码。基于已完成 OggVorbis_File初始化的测试框架,作者扩展其对ov_time_seek进行模糊测试,通过模糊输入填充双精度参数s,并覆盖其条件检查,以确保 API 调用正确且避免触发已知限制或冗余崩溃。

图片

图 1. ov_time_seek 的外部使用。  

WildSync 的核心思想是:与其从文档或头文件推测 API 如何使用,不如直接从真实世界代码中学习。整体流程分为四个关键阶段:

① 野生代码收集

从大规模开源项目中挖掘真实 API 调用实例;

② API 使用模式恢复

分析参数依赖、调用顺序与资源管理语义;

③ 依赖同步(Sync)建模

构建 API 之间的隐式依赖关系图;

④ 测试套件自动合成

生成可直接用于 Fuzzing 的测试驱动代码。

图片

图 2. WildSync整体框架

小结:WildSync将真实世界代码作为“隐式规范”,显著提升了测试套件的真实性与可执行性。

02—关键机制

  • 以真实世界代码作为 API 规范来源,避免文档不完整或过时的问题。
  • 依赖感知的测试套件合成,显式建模 API 调用间的顺序与状态约束。
  • 高度自动化,显著降低人工参与成本,适配大规模库级 Fuzzing。
  • 模块

    实现方式

    主要作用

    API 使用挖掘

    静态分析真实项目中的 API 调用片段

    获取高质量真实使用样本

    参数与状态依赖分析

    数据流与控制流联合分析

    恢复 API 之间的隐式约束

    使用模式同步(Sync)

    跨函数、跨文件依赖对齐

    保证生成 Harness 的语义一致性

    测试套件生成

    模板化代码合成 + 自动填充参数

    生成可直接执行的 Fuzzing 驱动

    小结:WildSync 的关键在于“依赖同步”,避免了传统自动测试套件中常见的无效调用与崩溃初始化问题。

    03—实验结果

    WildSync专注于为C风格库API生成测试框架,并利用OSS-Fuzz平台托管的现有库测试框架。实验保留了所有编译选项和初始模糊测试种子选择机制,仅对每个待测库的脚本进行微调以集成新测试框架。

    表1显示了WildSync的有效性。第一部分展示了已纳入OSS-Fuzz库的覆盖率提升情况。第二部分手动测试环节呈现了从stretch版本开始测试的3个库的成果。作者基于开发者提供的示例代码手动创建初始测试框架,随后通过WildSync扩展了API覆盖范围。每个测试框架均使用libFuzzer进行24小时、5轮的模糊测试。UC = 总唯一崩溃次数,S = 虚假崩溃,N = 正常崩溃(含超时/内存不足),B = 经人工复核后确认为缺陷的崩溃。

    表1. 采用WildSync技术合成的全新测试套件覆盖范围提升

    图片

    小结:基于现有测试框架,WildSync成功为27个库中的469个API合成了新的测试框架。结果是新增近2万行代码,覆盖了超过1300个新函数,显著提升了被测库的测试能力。

    📌 总结

    WildSync 从“API 实际如何被使用”这一角度重新审视 Fuzzing 测试套件合成问题,为解决长期存在的自动化测试套件质量瓶颈提供了切实可行的方案。

    该思路对库级模糊测试、API 安全评估以及自动化测试生成均具有重要启示意义。

    📣 欢迎留言讨论

    • 你认为未来Fuzzing的核心瓶颈在于输入生成,还是语义约束建模?

    • 真实世界代码是否可以作为更多程序分析任务的“隐式真值”?

    📌 点赞 + 收藏 + 分享,你的支持,是我们持续解析高水平软件安全论文的最大动力!

    赞(0)
    未经允许不得转载:171主机测评 » WildSync:通过Wild API 使用恢复实现自动化 Fuzzing Harness 合成
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址