论文部分内容阅读
随着计算机技术的不断发展,各行各业对软件的需求越来越大,越来越多的人享受着信息系统带来的方便快捷。在信息技术不断发展过程中不可避免要面对的问题就是软件漏洞。在软件开发过程中开发人员都会犯一些错误,有些错误是致命的,如果不及时找出来会造成很严重的后果。如今我们遇到的绝大多数安全漏洞都是不安全代码引起的,对计算机系统的保护在很大程度上取决于对软件漏洞的识别。因此,对软件漏洞的分析与研究日益成为信息安全领域关注的重点。在多年的研究过程中,国内外的研究人员从不同的角度研究了软件漏洞,并都取得了一定的进展。尽管目前在漏洞研究方面已经取了丰硕的成果,但是针对缓冲区溢出漏洞而言,目前在代码形式化方面的研究仍然不够全面,在漏洞挖掘方面的应用还不够充分,主要体现在以下的两个方面:一是目前在代码形式化的研究主要集中于定义化的描述,不能够很好地运用到实际的漏洞检测中;二是在现有代码形式化漏洞检测方法中,缺乏比较有效的权威性方法。以下对本文的主要工作进行阐述:1.本研究通过分析漏洞源代码,提出了一种基于数据控制流图(Data Control Flow Graph,DCFG)的危险函数识别方法。首先在数据控制流图(DCFG)的基础上,研究了基于DCFG的源代码中危险函数的识别方法(Danger Function Detection Method based on Data Control Flow Graph,记为FDMDC),同时给出所提FDMDC方法的具体识别框架并详细阐述了其中DCFG生成模块和危险函数判定模块的实现细节。本研究中提出了一种DCFG生成算法,用以指导数据流控制流图DCFG的生成,并且提出一种基于DCFG的危险函数判定(Danger Funtion Judging Based on Data Control Flow Graph,记为DCDFJ)算法,该算法的主要思想是对DCFG进行遍历并且记录可执行路径上的漏洞相关危险点。2.提出一种基于DCFG的缓冲区溢出漏洞检测方法。根据本文所提的基于DCFG的危险函数识别方法FDMDC,提出了基于DCFG的缓冲区溢出漏洞检测方法(Vulnerability Detection Method based on Data Control Flow Graph,记为DCVDM),重点介绍了基于DCFG的漏洞判定(Vulnerability Judging Based on Data Control Flow Graph,记为DCVJ)算法。该算法的主要思想是利用基于DCFG的危险函数识别方法确定所有的危险点并判断危险函数的类型,接着在危险点处构建危险函数的约束规则,建立约束系统,最后对约束系统进行求解得到漏洞判定的结果。3.设计并实现了一个漏洞检测原型系统——基于DCFG的缓冲区溢出漏洞检测系统(Vulnerability Detection System based on Data Control Flow Graph,记为DCFG-VDS)。DCFG-VDS系统中的主要模块有DCFG生成模块、基于DCFG的漏洞检测模块(记为DCVDM模块)和方法对比分析模块。DCFG生成模块的主要功能是对测试用例进行语法分析生成其对应的DCFG。漏洞检测模块的主要功能是导入漏洞测试用例和测试用例描述文件,选择要检测的漏洞类型和检测指标进行漏洞的检测。方法对比分析模块的主要功能是对不同方法的检测效果进行对比分析。