这篇文档属于类型a(单篇原创研究报告),以下是针对该研究的学术报告:
作者及机构:
研究由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),通过动态逆向输入格式结构,结合深度学习与功率调度算法,实现更高效的模糊测试。
方法:
- 基本块(Basic Block, BB)级污点分析:通过字节级动态污点追踪,记录每个BB处理的输入字节偏移量。
- 最小聚类算法(Minimum Cluster Algorithm):将同一BB内连续处理的字节聚类为不可分割字段,避免指令级分析导致的误拆分。
- 重叠区间分割:对跨BB的字段,按端点排序后拆分。
实验设计:
- 对象:15种文件格式(如ELF、GIF、PCAP)及其解析程序(如readelf、tcpdump)。
- 样本:每个格式选取5个样本,人工标注字段边界(基于010 Editor模板)。
- 工具:基于Libdft和Vuzzer改造的污点分析引擎,支持64位程序。
创新点:
- 首次提出以BB为最小语义单元识别字段边界,优于传统指令级方法(如Tupni)。
方法:
- 语义类型定义:支持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%的种子标记为“有价值”,触发格式重分析。
- 变异策略:
- 按字段类型选择变异器(如大小字段用边界值替换,字符串字段增删字节);
- 优先变异低频测试的格式变体。
- 动态平衡:当模糊测试停滞时,重新分配能量至未充分变异的格式。
实验设计:
- 对比工具:AFL、AFLFast、ProFuzzer等;
- 指标:24小时内基本块覆盖率及漏洞发现数量。
字段边界识别:
字段类型推断:
e_machine(枚举类型)识别准确率91.23%。模糊测试性能:
科学价值:
1. 提出BB级污点分析与最小聚类的字段边界识别方法,解决了指令级分析的粒度问题;
2. 通过CNN模型实现语义类型自动推断,减少对人工规则的依赖;
3. 动态功率调度算法提升对格式变体的探索效率。
应用价值:
- AIFORE可集成至现有模糊测试框架(如AFL++),适用于二进制解析器、协议分析器等复杂目标的安全测试。
局限性:
- 未处理校验和自动修正(如Weizz),未来可结合符号执行优化。
(报告全文约2000字,涵盖方法细节、实验数据及学术价值评估)