一种针对挖掘安全漏洞的混合模糊测试优化方法

文档序号:36608594发布日期:2024-01-06 23:12阅读:15来源:国知局
一种针对挖掘安全漏洞的混合模糊测试优化方法

本发明属于软件测试、信息安全等交叉,具体的说是涉及一种针对挖掘安全漏洞的混合模糊测试优化方法。


背景技术:

1、模糊测试是一种成熟的漏洞检测技术。它主要基于模糊逻辑方法,通过模糊法定义一组预期、可行或有益的测试案例,然后根据模糊逻辑解决给定的问题。它借助于一些特定的模糊逻辑和模糊数学理论来构建测试用例,并可以有效地测试出软件中存在的问题,为软件的可靠性和可用性提供可靠的检测依据。模糊测试常用于以下领域:1)安全测试:模糊测试可以用于发现软件系统中的安全漏洞和漏洞利用点。通过输入各种异常的数据,模糊测试可以检查软件是否会因为输入错误而导致系统崩溃、数据泄漏、拒绝服务等安全问题;2)兼容性测试:模糊测试可以模拟各种不同的环境和使用场景,发现软件在不同环境下的兼容性问题。例如,输入各种不同的数据格式、字符集和语言等,测试软件在各种环境下是否能够正确处理数据。3)可靠性测试:模糊测试可以检测软件的稳定性和可靠性,发现软件中的内存泄漏、死锁等问题。例如,输入大量数据、多线程并发访问等方式来检测软件的性能和稳定性。4)功能测试:模糊测试可以检测软件的功能是否符合预期,发现软件中的功能缺陷和错误。输入各种不同的参数和参数组合来测试软件的各种功能。

2、afl虽然是模糊测试的常用框架,但是在变异策略和测试用例合法性等方面存在局限性。它不能快速覆盖包含常量比较的路径,而且会生成大量的无效测试用例。模糊测试和符号化执行有各自的优缺点。模糊测试可以执行并覆盖到较深的分支,但随机变异生成测试用例并动态执行程序时,很难生成覆盖到复杂条件分支的测试用例。符号执行依赖约束求解器,可以生成覆盖复杂条件分支的测试用例,但在符号化执行过程中往往会出现状态爆炸问题,因此很难覆盖到较深的分支。


技术实现思路

1、针对上述的问题,将模糊测试和符号化执行相结合,针对afl的变异选择策略进行优化,本发明提出了一种针对挖掘安全漏洞的混合模糊测试优化方法,具体适用于提高测试用例的合法性和覆盖率,检测软件漏洞,通过提前使用样本集训练路径,进行路径预测,解决检测效率提高问题,针对模糊测试存在很难覆盖复杂调剂分支、符号化执行存在状态爆炸等问题,本发明采用了混合模糊测试框架,针对特定问题,选择不同的测试模块,提高测试用例的覆盖率;测试用例只有在保证合法的前提下,才有可能发现软件漏洞,为了检测测试用例的合法性,设计了合法性校验模块。

2、为了达到上述目的,本发明是通过以下技术方案实现的:

3、本发明是一种针对挖掘安全漏洞的混合模糊测试优化方法,所述混合模糊测试优化方法基于afl的混合模糊测试框架实现,所述afl的混合模糊测试框架包括样本训练模块、混合测试模块和合法性校验模块,所述混合测试模块包括模糊测试模块和符号化执行模块,模糊测试模块包括导入被测程序、分析源程序并进行插桩、根据输入随机值进行赋值、测试用例合法性检测等部分。符号化执行包括符号树遍历、路径约束并求解等部分。

4、具体的所述混合模糊测试优化方法包括以下步骤:

5、步骤1)确定待检测的目标,针对训练后的样本数据集,进行路径抽取和路径预测;

6、步骤2)对步骤1)的路径预测结果进行分析,判断适合模糊测试的路径集合和适合符号化执行的路径集合;

7、步骤3)根据步骤2)路径判断结果,分别执行模糊测试模块和符号制导模块,实时监控并进行路径交换,保存执行的数据,生成测试用例;

8、步骤4)针对步骤3)生成的测试用例,执行测试用例合法性检测模块,,得到合法性测试用例数据;

9、步骤5)将步骤4)获取到合法性测试用例数据与执行混合模糊测试模块的数据进行整合,返回测试结果。

10、本发明的进一步改进在于:所述步骤2)包括以下步骤:

11、步骤21)根据训练后的样本数据集,模拟执行样本训练模块,为了更清晰获取路径信息,制定数据结构存储路径信息,所述数据结构存储路径信息用一个三元组:<pathinfo,fuzz_time,sy_time>,其中pathinfo={l1,l2,l3,...,ln}代表执行的一条完整的路线信息,包含一条路径覆盖的测试目标的编号,fuzz_time指模糊测试模块首次执行该路径的时间,sy_time指符号化执行模块首次执行该路径的花费时间;

12、步骤22)针对基于符号化执行模块的执行数据和基于模糊测试模块的执行数据,进行训练,发现适合符合化执行的路径或模糊测试的路径,方便路径预测;

13、步骤23)根据待检测的测试目标在样本数据集的执行情况,进行路径预测。

14、本发明的进一步改进在于:所述步骤3)包括以下步骤:

15、步骤31)针对步骤2)的路径预测结果,判定执行模糊测试模块或者符号化执行模块;

16、步骤32)如果是执行模糊测试模块,对待检测的测试目标进行插桩,然后执行afl的混合模糊测试框架的变异策略,通过forkserver、路径对比等步骤,记录运行状态,保存执行的数据。

17、所述变异策略主要包括确定性变异策略和随机变异策略,其中所述确定性变异策略主要包括比特翻转、算术运算、特殊值替换和字典值,所述随机变异策略包括havoc模式和splice模式,确定性变异和随机策略的执行顺序有所区别。目前模糊测试的工作流程:首先从用户给出的初始种子集合筛选出合适的种子作为种子队列,然后按照变异策略从种子队列中选择一个种子并分配一定的能量即这个种子可以派生出多少个新的输入。变异算法根据能量大小通过种子生成相应数量的测试用例作为输入,如果是基于生成的算法会根据输入描述生成一定数量的测试用例;检测目标运行生成的每一个输入,模糊测试通过检测目标内部桩代码获取一定信息并反馈给变异算法;同时,模糊测试检测目标是否发生异常,常见的为崩溃或死循环;如果发生异常则收集这个输入放到崩溃集合中,否则判断输入是否提高了覆盖率,或者向着目标路径前进;如果是,那么这个输入被当作新的种子放入种子队列。能量分配指对选择的种子进行变异时,赋予的多少变异机会。在aflfast(afl的改进框架)的策略中,它将一个种子的能量等于通过变异获得新路径概率的倒数。aflfast采用带有截断的指数增长方式快速逼近合适的能量,其中α(i)表示种子i在afl中赋予的初始固定能量,β为常数因子,f(i)表示种子对应路径执行的次数,s(i)为种子被选择的次数,m为能量上限。

18、

19、步骤33)如果是执行符号化执行模块,进行符号树遍历、收集约束路径、约束求解等步骤,记录运行状态,保存执行的数据。

20、首先,进行待检测的测试目标插桩操作以获得待检测的测试目标的静态结构。这一步骤的目的是收集约束路径信息并识别出未覆盖的待检测的测试目标片段。接下来,执行符号执行树遍历算法。该算法能够有效地遍历符号执行树,并收集路径信息用于后续的路径信息分析。这个分析过程为后续的路径相似度预测剪枝提供了基础。最后,在插桩处收集的路径和未覆盖待检测的测试目标信息的基础上,进行路径相似度统计分析。通过这个分析,可以预测具有高相似度的执行路径,并进行剪枝操作。这样,在符号执行过程中可以减少执行路径的数量。通过这种方式,生成的测试用例具有更高的质量和执行效率。

21、本发明的进一步改进在于所述步骤4)包括以下步骤:

22、步骤41)根据待检测的测试目标,确定合法性的测试用例,并使用antlr4语法,编写并扩充语法规则,antlr4是一款基于java开发的开源的语法分析器生成工具,能够根据语法规则文件生成对应的语法分析器,广泛应用于dsl构建,语言词法语法解析等领域。

23、步骤42)根据步骤41的语法规则,对测试用例执行语法解析和语义解析。通过对测试用例的解析规范,判定测试用例的合法性。

24、本发明的进一步改进在于:所述步骤5)包括以下步骤:

25、步骤51)将步骤4)中的合法性校验数据与步骤3保存执行的数据汇总,并对汇总后的数据进行分析;

26、步骤52)判断是否超过预测时限,如果超过时限结束检测,反之根据生成的合法性测试用例,则回到步骤2重复执行步骤2-5。

27、本发明的有益效果是:本发明设计了一种基于afl的混合模糊测试框架,通过提前使用样本集训练路径,进行路径预测,提高检测效率,同时采用混合模糊测试技术,将模糊测试和符号化执行相结合,提高测试用例的覆盖率,采用合法性校验技术,提高测试用例的合法性。

28、具体来说:

29、(1)本发明采用antlr语法解析工具,针对特定的被检测目标,扩充语法规则,保证测试用例的合法性。

30、(2)本发明采用了基于afl模糊测试工具和符号化执行两种方法,解决了单一漏洞检测技术的缺陷,模糊测试虽然有自动化程度高、系统消耗低、误报率低、不依赖于待检测目标等优点,但是存在无法探测到较深路径等缺点,针对某些特定条件,模糊测试需要花费大量时间,而符号化执行却很容易就发现缺陷,但是符号化执行存在状态爆炸等问题。

31、(3)本发明设计了路径预测这一环节,使用样本训练集,针对符号化执行和模糊化执行的情况,判断针对被检测程序,适合漏洞检测的方法,在程序执行过程,实时检测执行信息,遇到无法覆盖的路径,静态分析源程序,进行检测方法的交换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1