The embodiment of the present invention provides a software memory security detection method and a system, the method determines a plurality of default test case files of the software to be tested by symbolic execution, and converts the plurality of default test case files into the initial input seeds of fuzzy testing based on directional variation, respectively; and based on all the initial inputs Input seeds, fuzzy testing based on directional variation is performed on the software to be tested, which is a variation based on the coverage of the program in the software to be tested. The software memory security detection method and system provided by the embodiment of the invention make full use of the test case file generated by symbol execution. At the same time, the mutation in fuzzy test is improved to get the directional mutation method. The symbolic execution and directional variation are combined to make directional variation on all the seeds satisfying the initial input conditions, which improves the effectiveness of the variation and consequently saves resources.
【技术实现步骤摘要】
软件内存安全检测方法及系统
本专利技术实施例涉及计算机软件分析
,更具体地,涉及软件内存安全检测方法及系统。
技术介绍
软件是计算机实现功能的载体,软件的安全直接关系到计算机系统和网络的安全。利用软件的缺陷和漏洞对计算机系统进行攻击是黑客的惯用手段之一,而这往往会泄露关键信息,造成经济损失。内存安全问题是软件开发中最容易被忽视,也是最容易产生的问题。然而,一个简单的内存安全问题很有可能对软件的安全造成极大的威胁,因此,保障软件的内存安全极为重要。通过对软件进行内存安全检测,可以发现软件中各种不合法的内存操作,保障软件的合理平稳运行,增强软件的可靠性。模糊测试是目前针对内存安全问题最有效的检测手段之一,它的关键思想是产生尽可能多的输入以探索程序的各种执行路径,以这些输入来执行程序,同时不断的监测程序在运行中是否会产生内存错误。产生输入的方式通常包括基于直接生成和基于变异的方法。基于直接生成的模糊测试一般针对的是具有严格输入格式或规则的软件,利用这些严格输入格式或规则来产生用于测试的输入。此方法需要用户对被测试软件有较强的领域知识,熟悉各种规则。这造成了两个缺点,一是它需要大量的人工参与,难以做到自动化;二是针对每个软件都需要建立一套新的生成机制,无法通用。另外,这种方法也难以保证软件中程序的覆盖率。而基于变异的模糊测试,是通过变异现有输入以产生新的、有意义的输入。在这种方法中,产生一个有意义的输入往往要经过大量的变异尝试,效率不高,且软件中程序的覆盖率也难以得到保证。由于许多的程序中对输入均有严格的检查机制,而普通的变异方式难以生成可以通过这些复杂检查 ...
【技术保护点】
1.一种软件内存安全检测方法,其特征在于,包括:S1,通过符号执行确定待测试软件的多个预设测试用例文件,并将所述多个预设测试用例文件分别转换为基于导向性变异的模糊测试的初始输入种子;S2,基于所有初始输入种子,对所述待测试软件进行基于导向性变异的模糊测试,所述导向性变异为根据所述待测试软件中程序的覆盖范围进行的变异。
【技术特征摘要】
1.一种软件内存安全检测方法,其特征在于,包括:S1,通过符号执行确定待测试软件的多个预设测试用例文件,并将所述多个预设测试用例文件分别转换为基于导向性变异的模糊测试的初始输入种子;S2,基于所有初始输入种子,对所述待测试软件进行基于导向性变异的模糊测试,所述导向性变异为根据所述待测试软件中程序的覆盖范围进行的变异。2.根据权利要求1所述的方法,其特征在于,S2具体包括:S221,将所有初始输入种子依次存储至预设种子池内,基于种子变异属性、种子执行速度、种子大小以及种子命中程序分支属性,从所述预设种子池内筛选满足预设条件的种子进行导向性变异,并基于种子变异属性、种子执行速度、种子大小以及种子命中程序分支属性,从变异产生的种子中选取满足所述预设条件的种子存储至所述预设种子池中以更新所述预设种子池;S222,对更新后的所述预设种子池内的所有种子重复上述筛选及变异过程,直至更新后的所述预设种子池内满足所述预设条件的每一种子的变异次数分别达到预设次数;S223,基于更新后的所述预设种子池内的所有种子,对所述待测试软件进行测试。3.根据权利要求2所述的方法,其特征在于,所述预设条件具体为:所述种子变异属性为未经变异、所述种子执行速度与所述种子大小的乘积最小以及所述种子命中程序分支属性为命中所述待测试软件中程序的稀有分支;所述稀有分支为:所述待测试软件中程序对应预设命中次数的分支。4.根据权利要求2所述的方法,其特征在于,S2中所述导向性变异具体包括:确定性变异和导向性随机变异;所述确定性变异包括:对满足所述预设条件的种子按位进行翻转、替换或进行算数运算;所述导向性随机变异包括:随机筛选满足所述预设条件的种子的变异位数及变异位置,并基于所述变异位置处字节的变异属性,对满足所述预设条件的种子的变异位置处字节进行变异。5.根据权利要求2所述的方法,其特征在于,还包括:将更新后的所述预设种子池内的所有种子分别输入至所述待测试软件,以使所述待测试软件分别执行更新后的所述预设种子池内的每一种子;...
【专利技术属性】
技术研发人员:姜宇,梁杰,王明哲,陈元亮,顾明,孙家广,
申请(专利权)人:清华大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。