论文部分内容阅读
二进制软件漏洞自动挖掘技术一直是国外软件安全领域研究热点,各大研究机构每年都投入大量的资金、人力,试图提升漏洞挖掘的效率、准确性、覆盖率和速度,以期大量发现网络空间中主流操作系统、应用软件、网络协议等存在的未知漏洞,支撑其网络对抗行动。然而现阶段流行的系统级的漏洞挖掘系统存在新系统适应慢、执行效率低等问题,因此进程级漏洞挖掘系统的研究成为一个亟待深入研究和解决的课题。本文研究基于离线符号执行的Windows下二进制软件漏洞挖掘方法,本文主要研究内容及成果如下: (1)提出基于静态污点分析的缓冲区溢出危险函数粗定位方法。 针对典型缓冲区溢出漏洞如栈溢出漏洞、堆溢出漏洞,论文分析了这些漏洞在二进制层次的表现形式及行为特点,采用了静态污点分析方法来对程序内自定义的具有缓冲区溢出危险的函数进行粗定位,通过实验证明方法具有较高的准确率。 (2)提出基于离线符号执行的Windows下缓冲区溢出漏洞挖掘方法。 本文将静态分析与动态分析相结合,通过约简待测试用例中待分析的关键字段,提升离线符号执行约束收集有效性和效率。同时,根据离线符号执行的特点,设计了基于离线符号执行的指定路径执行算法。并在此基础上,根据Windows下堆栈结构的特点,提出了Windows平台下栈溢出漏洞和堆溢出漏洞的快速挖掘算法,实现了高效准确的缓冲区溢出漏洞挖掘方法。 (3)设计并实现了Windows下进程级漏洞挖掘系统SymbolicWin。 研究了基于离线符号执行的Windows下模糊测试工具FuzzWin结构并分析其缺陷。设计了SymbolicWin漏洞挖掘系统,实现了有别于传统系统级别影子内存方法的污点分析与约束收集方法,并实现了针对堆溢出和栈溢出漏洞快速检测方法。实验证明基于离线符号执行的进程级漏洞挖掘系统SymbolicWin能够实现Windows下缓冲区溢出漏洞的检测与挖掘。