论文部分内容阅读
随着信息技术的飞速发展,软件的规模与复杂程度不断增加,这使得各类软件的正确性与安全性越来越难以保证。对于软件系统的安全,一个主要的威胁就是软件漏洞,一旦攻击者尝试恶意利用这些漏洞,往往会造成大规模信息泄露和服务器宕机等严重后果,给用户,企业,甚至国家都会带来巨大威胁。近年来,众多科研工作者们提出了不同的技术来有效地检测漏洞,其中两大主流的漏洞检测技术为符号执行(symbolic execution)与模糊测试(fuzz testing),被广泛研究并应用到工业界与学术界中。随着漏洞检测技术的发展,对其采用的算法和相应性能的优劣也有很多评价方案,其中一种比较常见的方案是通过观察漏洞检测工具在一组基准测试程序(benchmark)上的表现来评判其性能的优劣。总体上,这些基准测试程序集可以分为两类:真实世界的漏洞程序组成的漏洞库和人为开发的漏洞库。尽管真实世界的漏洞可以较为准确地评价相应的漏洞检测工具的性能,但是其分布较为分散,研究人员很难在数百万个有漏洞的程序上运行漏洞检测工具然后对其评估。因此,研究人员开发了一系列人工漏洞库来衡量漏洞检测工具的性能以及探索这些工具的局限性。但是,对于这些人工漏洞库能否充分代表真实漏洞特征从而用于漏洞检测技术的评估,仍缺乏相应的研究。事实上,如果不能充分了解人工漏洞库和真实世界漏洞的区别与联系,盲目使用人工漏洞库对漏洞检测工具进行评估,其衡量的结果是不可靠的,同时也缺乏公平性与公正性。本文主要对现有的主流人工漏洞库进行研究,分析其与真实世界漏洞的区别与联系,并对其是否可以有效地衡量漏洞检测工具的性能进行探究。同时,在研究基础上对现有的人工漏洞库进行优化与改进,使之更加接近真实漏洞并适用于评价漏洞检测工具的性能。本文的主要工作如下:1)本文围绕包含漏洞的程序及漏洞本身两个方面,对比三个主流的人工漏洞库(LAVA-M,DARPACGC,Rode0day,总计4427个漏洞)和真实世界中广泛存在的内存错误漏洞(总计80个真实世界的漏洞),探究人工漏洞库和真实漏洞的区别与联系。2)为了系统地进行对比研究,本文提出了一个通用性模型,该模型概括了程序本身的属性和漏洞本身的属性,以及这些属性如何影响漏洞检测工具性能的评估。遵循此模型,本文设计了系统性的实验流程,花费1500个工时进行实验并分析结果。3)本文从程序本身属性以及漏洞本身属性提供了关于人工漏洞库与真实漏洞之间差异的定量证据,并确定上述方面如何影响漏洞检测工具的评估。实验结果辅助表明,现有的人工漏洞库和真实世界的漏洞区别较大,并不能完全公正地作为衡量漏洞检测工具有效性的基准。4)根据上述结论,本工作从影响漏洞触发的条件(控制流和数据流)修改应用最广泛的人工漏洞库LAVA-M,使其更加接近真实漏洞并更适用于评价漏洞检测工具的性能。5)针对如何使人工漏洞库更趋近于真实世界的漏洞,使其能够更好、更全面地衡量漏洞检测工具的性能,本文提出了一系列具有创新意义的改进建议。