论文部分内容阅读
模糊测试是重要的二进制漏洞挖掘方法。近些年来学术界尝试将模糊测试与污点传播、协议逆向、基因算法等技术相结合以提高其针对性。污点导向型模糊测试就是一种被广泛借鉴和认可的复合技术。然而由于漏洞机理的复杂性,且模糊测试本身缺乏完备的理论支撑,因而研究人员通常只验证了该技术的可行性,即能否成功挖掘出漏洞。对于技术本身的适用性、性能提升等基础性理论问题缺乏进一步的研究。此外,该技术并不能对其关联输入进行语义层次的限制,能否在继续保留轻量级特点的同时为其赋予更强的目标导向能力也是值得研究的方向。本文围绕污点导向型模糊测试技术,开发研究所需基础工具,重点研究了该技术的基础性理论问题及如何在保证技术轻量级特色的条件下予以改进。主要研究内容与成果如下:(1)设计并实现了二进制动态分析引擎与并行模糊测试平台。在动态分析引擎的设计中,通过多种设计保证引擎的通用性与高扩展性,主要包括基于pin与BAP的离线重放、基于Piqi的规范化轨迹格式描述、面向BIL中间语言等;在并行模糊测试平台的设计中,提出了使用内存虚拟硬盘技术转移硬盘瓶颈,使平台整体吞吐量大幅度提高。同时,结合测试机器内外环境优化、基于vmtools的脚本式管理等技术改善了平台稳定性及管理便捷性。这些工具为后续研究提供了高效、高可控的基本平台;(2)结合漏洞实例与数学分析研究了污点导向型模糊测试技术的适用限制及性能提升问题。在适用限制问题研究中,综合14个CVE漏洞的手工分析与前述基础工具的细粒度调试结果,建立了污点的元数据传播模型,解释了该技术存在的主要限制;在性能提升问题研究中,通过假设模糊测试变异前后样本比特长度不变,将模糊测试抽象成伯努利概型。利用概率论知识,求出该技术相比传统模糊测试的效率提升公式,依据公式下界值总结效率提升随关键参数的变化趋势。实验结果表明,效率提升公式的计算值接近实际值,具有良好的参考价值。上述工作为该技术的基础理论研究提供系统、数学的补充;(3)提出并分析了一种基于约束验证的改进方法。改进方法受启发于动态符号执行技术,但使用约束验证替代约束求解以保证原技术的轻量级特点—改进方法收集约束生成约束验证器,并以约束滤层的方式加进原技术流程,通过省去"过畸形"变异样本的实际测试来提升效率。该改进对于不同类型的漏洞,效果与最佳配置存在差异,本文给出了整数溢出型漏洞下改进方法的最佳配置。此外,改进方法具有很高的并行潜力,在多线程、进程环境下能获取更大的效率收益。实验结果表明,针对整数溢出型漏洞,改进方法相比原技术,效率提升了 2-4倍。