1.一种基于属性提取的软件漏洞挖掘系统,其特征在于:包括发现模块、分析模块及推理模块;其中,发现模块:用于对软件代码进行反汇编,并对得到的汇编代码进行代码切片,再根据代码片段的属性,通过机器学习分类器对代码片段进行分类,从软件的冗余代码中提取出关键代码,对关键代码汇集成发送给分析模块作为分析模块的目标对象;
分析模块:用于接收发现模块发送来的待测关键代码,并将待测软件在虚拟机环境中执行,并采用虚拟机故障注入引擎与待测关键代码的进程进行测试交互,对测试交互全程进行分析监测和控制,并观察和记录待测软件在不同测试情况下的信息状态与执行反应,并将记录结果传输给推理模块;
推理模块:用于接收根据测试对象在不同分析情况下的状态记录结果,结合挖掘经验知识库,对测试对象不同情况的结果进行推理,实现挖掘该软件发生漏洞的预测,完成被测软件发生漏洞触发的推理过程。
2.一种基于属性提取的软件漏洞挖掘方法,其特征在于:包括以下步骤:
201.、提取待测软件关键代码的步骤;
202、对待测软件在虚拟机环境中执行,并采用虚拟机故障注入引擎与关键代码进行测试交互,记录测试结果;
203、将测试结果结合挖掘经验知识库进行推理。
3.根据权利要求2所述的基于属性提取的软件漏洞挖掘方法,其特征在于:所述步骤
201中提取待测软件关键代码的步骤具体为:
S21、获取待测应用软件的冗余代码;
S22、对软件冗余代码进行反汇编,得到汇编代码;
S23、汇编代码切片,形成n个代码片段;
S24、通过分类器对代码片段进行分类,挖掘软件中关键代码;
S25、汇集关键代码类为目标代码,提供给下一层漏洞分析与漏洞挖掘。
4.根据权利要求3所述的基于属性提取的软件漏洞挖掘方法,其特征在于:步骤S24中对代码片段进行分类的步骤包括:
S241、根据代码片段上下文联系属性形成代码片段属性向量,即代码片段i有m个属性,其属性向量Xi.为xi1,xi2,xi3,...,xim;
S242、分类器基于贝叶斯条件概率对代码片段进行分类,分类结果类别分别为关键代码类c1和非关键代码类c2,通过贝叶斯决策理论 其中k∈{1,2},i∈{1,2,3...,n},完成代码片段分类。
S243、汇集所有关键代码,形成关键代码类。
5.根据权利要求2所述的基于属性提取的软件漏洞挖掘方法,其特征在于:步骤202中具体步骤为,S11:测试对象注入到虚拟环境中运行,获得被测对象所有状态信息和执行路径,利用虚拟机故障注入引擎与待测进程交互,实现测试全程的监测和控制;
S12:提取软件可能发生漏洞部分,;
S13:对测试对象执行针对性错误注入;
S14:虚拟机监测测试对象执行信息;
S15:对测试对象所有行为信息进行记录;
S16:测试对象进程快照恢复,重新回到S13,执行新的错误注入,监测其他潜在漏洞。
6.根据权利要求2所述的基于属性提取的软件漏洞挖掘方法,其特征在于:步骤203中进行推理的步骤为:S31:根据软件行为记录,结合S32漏洞挖掘经验知识指导,计算软件缺陷征兆值,推理该测试用例漏洞触发概率,即软件漏洞发生概率,对软件漏洞完成挖掘;
S32:软件漏洞挖掘经验知识库指导漏洞挖掘推理过程,同时软件漏洞挖掘过程不断更新挖掘实验知识库。