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---关键机制

  1. 以真实世界代码作为 API 规范来源,避免文档不完整或过时的问题。
  2. 依赖感知的测试套件合成,显式建模 API 调用间的顺序与状态约束。
  3. 高度自动化,显著降低人工参与成本,适配大规模库级 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的核心瓶颈在于输入生成,还是语义约束建模?

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

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

相关推荐
苏州邦恩精密37 分钟前
浙江蔡司3D扫描仪应用领域及厂家选择分析
人工智能·科技·3d·自动化·制造
蝶恋舞者43 分钟前
怎样设置软件开机自启动(用的最多,最简单)
linux·运维·服务器
学逆向的1 小时前
汇编——修改EIP的值
开发语言·汇编·网络安全
段一凡-华北理工大学1 小时前
AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章23:从Demo到上线:Agent应用的架构设计、性能优化与成本控制实战
运维·网络·人工智能·性能优化·高炉炼铁·工业智能体
Axis tech1 小时前
MANUS手套为NVIDIA的DreamDojo机器人世界模型提供真实的手部运动数据
人工智能·深度学习·机器学习
L1624761 小时前
Zabbix 7.0 LTS 完整部署与运维手册(AlmaLinux 9 + MySQL 8.0 + Nginx)
运维·mysql·zabbix
happymade1 小时前
MSRM3 区域层级嵌套功能深度解析与实操教程
运维·网络拓扑·网络管理·网络运维·msrm3
大鱼>1 小时前
宠物监控数据安全与隐私保护:端到端加密与合规实践
人工智能·深度学习·算法·iot·宠物
网络小白不怕黑2 小时前
14.VSFTP服务相关配置
linux·运维·服务器
爱喝水的鱼丶2 小时前
SAP-ABAP:ALV字段布局定制全攻略——快速适配业务端个性化展示需求
运维·性能优化·sap·abap·经验交流·alv报表