分享自:

基于自动输入格式逆向工程的智能模糊测试

期刊:32nd USENIX Security Symposium

这篇文档属于类型a(单篇原创研究报告),以下是针对该研究的学术报告:


基于自动输入格式逆向工程的智能模糊测试技术:AIFORE

作者及机构
研究由Ji Shi(中国科学院信息工程研究所{cas-klonat, bklonspt}、清华大学网络科学与网络空间研究院{BNRist}、中关村实验室、华为奇异安全实验室、中国科学院大学网络安全学院)、Zhun Wang(清华大学网络科学与网络空间研究院、中关村实验室)、Zhiyao Feng(同前、EPFL)等合作完成,通讯作者为Chao Zhang(清华大学网络科学与网络空间研究院)。论文发表于第32届USENIX安全研讨会(USENIX Security Symposium 2023),会议于2023年8月9日至11日在美国阿纳海姆举行。


学术背景

研究领域
该研究属于软件安全测试领域,聚焦于模糊测试(Fuzzing)技术的优化,具体涉及输入格式逆向工程智能变异策略的结合。

研究动机
传统模糊测试工具(如AFL)在生成高质量输入时面临挑战,尤其是当程序输入需符合复杂格式规范(如ELF、PNG等)时。现有方法(如ProFuzzer、TIFF-Fuzzer)在字段边界识别和类型推断上存在局限性:
1. 字段边界识别:依赖指令级污点分析或统计方法,易因循环或多指令处理导致字段误合并或拆分;
2. 字段类型推断:基于人工规则或库函数参数类型,难以识别语义类型(如校验和、魔术数字);
3. 变异策略:现有工具(如AFLSmart)依赖预定义模板,无法动态适应格式变体。

研究目标
提出AIFORE(Automatic Input Format Reverse Engineering),通过动态逆向输入格式结构,结合深度学习与功率调度算法,实现更高效的模糊测试。


研究流程与方法

1. 字段边界分析(Field Boundary Analysis)

方法
- 基本块(Basic Block, BB)级污点分析:通过字节级动态污点追踪,记录每个BB处理的输入字节偏移量。
- 最小聚类算法(Minimum Cluster Algorithm):将同一BB内连续处理的字节聚类为不可分割字段,避免指令级分析导致的误拆分。
- 重叠区间分割:对跨BB的字段,按端点排序后拆分。

实验设计
- 对象:15种文件格式(如ELF、GIF、PCAP)及其解析程序(如readelf、tcpdump)。
- 样本:每个格式选取5个样本,人工标注字段边界(基于010 Editor模板)。
- 工具:基于Libdft和Vuzzer改造的污点分析引擎,支持64位程序。

创新点
- 首次提出以BB为最小语义单元识别字段边界,优于传统指令级方法(如Tupni)。

2. 字段类型分类(Field Type Classification)

方法
- 语义类型定义:支持6类(大小、枚举、魔术数字、字符串、校验和、偏移量)。
- 训练数据收集
- 从010 Editor模板提取字段类型真值;
- 通过污点分析定位处理字段的BB,前向切片合并语义相关BB。
- 特征向量化
- IR操作:提取VEX中间表示的100种常见操作(如cmp、shl);
- 库函数调用:记录memcpy、strcpy等调用;
- 格式字符串:统计%s、%d等使用情况。
- CNN模型:6层卷积网络,输入为特征向量,输出为类型概率。

实验设计
- 训练集:8种格式的10,582个字段,优化级别覆盖-O0至-Os。
- 验证:在未训练格式(如XLS)和程序(如elfutils-readelf)上测试泛化能力。

创新点
- 首次将深度学习用于字段语义类型推断,准确率显著高于基于规则的ProFuzzer(84.26% vs. 56.60%)。

3. 基于格式的功率调度(Power Scheduling)

方法
- 种子价值评估:覆盖增长率>3%的种子标记为“有价值”,触发格式重分析。
- 变异策略
- 按字段类型选择变异器(如大小字段用边界值替换,字符串字段增删字节);
- 优先变异低频测试的格式变体。
- 动态平衡:当模糊测试停滞时,重新分配能量至未充分变异的格式。

实验设计
- 对比工具:AFL、AFLFast、ProFuzzer等;
- 指标:24小时内基本块覆盖率及漏洞发现数量。


主要结果

  1. 字段边界识别

    • 平均准确率84.06%,优于ProFuzzer(36.27%)和TIFF-Fuzzer(63.14%)。
    • 编译器优化级别(-O0至-Os)对结果无显著影响。
  2. 字段类型推断

    • 在未训练格式上,Top-1准确率84.26%,Top-2达93.92%;
    • 例如,ELF的e_machine(枚举类型)识别准确率91.23%。
  3. 模糊测试性能

    • 覆盖率:平均比ProFuzzer高6%,比Weizz高26%;
    • 漏洞发现:发现15个程序的20个新漏洞(如readelf栈溢出、sfinfo堆溢出)。

结论与价值

科学价值
1. 提出BB级污点分析与最小聚类的字段边界识别方法,解决了指令级分析的粒度问题;
2. 通过CNN模型实现语义类型自动推断,减少对人工规则的依赖;
3. 动态功率调度算法提升对格式变体的探索效率。

应用价值
- AIFORE可集成至现有模糊测试框架(如AFL++),适用于二进制解析器、协议分析器等复杂目标的安全测试。


研究亮点

  1. 跨领域方法融合:首次结合污点分析、聚类算法与深度学习于模糊测试;
  2. 高泛化性:模型在未训练格式和程序上表现优异;
  3. 开源贡献:工具原型已实现,代码量超12K行(C++/Python)。

局限性
- 未处理校验和自动修正(如Weizz),未来可结合符号执行优化。


(报告全文约2000字,涵盖方法细节、实验数据及学术价值评估)

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com