一种基于相似性的软件漏洞分析方法及相关设备与流程

摘要: 本发明属于嵌入式软件测试,具体涉及了一种基于相似性的软件漏洞分析方法及相关设备。背景技术:1、随着软件规模越来越大,软件功能复杂性越来越高,软件研制过程面临多模...
一种基于相似性的软件漏洞分析方法及相关设备与流程

本发明属于嵌入式软件测试,具体涉及了一种基于相似性的软件漏洞分析方法及相关设备。

背景技术:

1、随着软件规模越来越大,软件功能复杂性越来越高,软件研制过程面临多模块协同工作,多人员协同开发,导致软件极易出现安全漏洞。软件漏洞分析技术能够较早的介入软件研制过程,分析软件中存在的安全缺陷,及时进行漏洞修复,提高软件质量和安全性。然而目前软件漏洞分析存在以下问题:传统的软件漏洞静态分析方法可以贯穿整个软件生命周期,辅助开发人员及早发现软件代码中存在的问题,但静态分析依赖对漏洞已有的先验知识,且分析结果存在较高的误报和漏报,同时,大规模的软件抽象和信息提取也是当前面临的一个难点;模糊测试等动态漏洞挖掘方法基于软件实际运行情况分析,精度较高,但需要收集软件运行过程数据,配置软件运行环境,漏洞分析复杂度高,对漏洞分析人员要求高,不易实施,漏洞动态分析存在路径爆炸等问题,严重影响软件漏洞分析效率和准确度。

技术实现思路

1、本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于相似性的软件漏洞分析方法及相关设备,用于解决现有技术对庞大软件工程进行整体漏洞分析时面临的工作量过大及深度分析受限的技术问题。

2、本发明的目的是由以下技术方案实现的:

3、第一方面,本发明提供了一种基于相似性的软件漏洞分析方法,包括:

4、获取基准代码片段集和漏洞规则集,并对待分析软件进行信息过滤处理,生成待分析中间文件,所述基准代码片段集中的基准代码片段基于预设的代码资源池和待分析软件得到;

5、将所述待分析中间文件与所述基准代码片段集进行相似性分析,从所述待分析中间文件中提取出目标代码片段,并将所述目标代码片段标记为与所述基准代码片段集匹配的相似代码片段;

6、根据所述漏洞规则集对所述基准代码片段集执行漏洞检测,生成基准漏洞分析结果;

7、提取所述相似代码片段在所述待分析软件中的执行环境特征数据,并将所述基准漏洞分析结果映射至所述相似代码片段,结合所述执行环境特征数据在所述待分析软件中进行漏洞确认,得到最终的目标漏洞。

8、作为本发明的进一步改进,所述获取基准代码片段集,包括:

9、从预设的代码资源池中提取历史复用代码片段,作为第一基准代码片段;

10、提取所述待分析软件中的典型定制代码片段,作为第二基准代码片段;

11、将所述第一基准代码片段与所述第二基准代码片段进行融合,构建所述基准代码片段集。

12、作为本发明的进一步改进,所述提取所述待分析软件中的典型定制代码片段,作为第二基准代码片段,包括:

13、遍历所述待分析软件,识别针对同类型硬件的配置代码、具备相同子功能但实现参数不同的底层代码、以及调用频率超过预设阈值的公共函数;

14、将识别出的所述配置代码、所述底层代码以及所述公共函数抽取为独立的代码片段,作为所述第二基准代码片段。

15、作为本发明的进一步改进,所述将所述待分析中间文件与所述基准代码片段集进行相似性分析,从所述待分析中间文件中提取出目标代码片段,包括:

16、针对所述第一基准代码片段,采用代码行内容对比方式扫描所述待分析中间文件,若所述待分析中间文件中某一代码片段与所述第一基准代码片段的内容一致性比例达到或超过相似度阈值,则将所述代码片段提取为目标代码片段;

17、针对所述第二基准代码片段,通过代码语义比对与功能结构分析,从所述待分析中间文件中提取出具有相同数据打包机制或滤波算法的代码块作为目标代码片段。

18、作为本发明的进一步改进,所述根据所述漏洞规则集对所述基准代码片段集执行漏洞检测,生成基准漏洞分析结果,包括:

19、基于所述漏洞规则集,利用代码扫描工具对所述基准代码片段集进行全覆盖的静态已知漏洞扫描,生成初筛分析结果;

20、根据所述初筛分析结果筛选出存在设定风险漏洞的目标基准代码片段;

21、采用模糊测试方法及日志监控方法对所述目标基准代码片段进行动态挖掘,并结合所述静态扫描结果与动态挖掘结果合并生成所述基准漏洞分析结果。

22、作为本发明的进一步改进,所述提取所述相似代码片段在所述待分析软件中的执行环境特征数据,并将所述基准漏洞分析结果映射至所述相似代码片段,包括:

23、提取所述相似代码片段在所述待分析软件中的实际运行场景参数及调用链路,作为所述执行环境特征数据;

24、将所述基准漏洞分析结果中的漏洞触发条件与所述运行场景参数及调用链路进行匹配,若所述调用链路满足所述漏洞触发条件,则确认所述相似代码片段中存在目标漏洞。

25、作为本发明的进一步改进,所述对待分析软件进行信息过滤处理,生成待分析中间文件,包括:

26、判定所述待分析软件的文件格式,若为压缩文件则执行解压缩处理;

27、遍历解压后的软件目录,删除非代码类文件,并剔除代码文件中的注释信息,输出所述待分析中间文件。

28、第二方面,本发明提供了一种基于相似性的软件漏洞分析系统,包括:

29、预处理模块,用于获取基准代码片段集和漏洞规则集,并对待分析软件进行信息过滤处理,生成待分析中间文件;

30、相似性匹配模块,与所述预处理模块通信连接,用于接收所述待分析中间文件及基准代码片段集,将所述待分析中间文件与所述基准代码片段集进行相似性分析,从所述待分析中间文件中提取出目标代码片段,并将所述目标代码片段标记为相似代码片段;

31、基准分析模块,与所述预处理模块通信连接,用于接收所述基准代码片段集和所述漏洞规则集,根据所述漏洞规则集对所述基准代码片段集执行漏洞检测,生成基准漏洞分析结果;

32、漏洞确认模块,分别与所述相似性匹配模块和所述基准分析模块通信连接,用于接收所述相似代码片段与所述基准漏洞分析结果,提取所述相似代码片段在所述待分析软件中的执行环境特征数据,并将所述基准漏洞分析结果映射至所述相似代码片段,结合所述执行环境特征数据进行漏洞确认,得到最终的目标漏洞。

33、第三方面,本发明提供了一种计算机设备,包括:处理器和计算机可读存储介质;

34、处理器,适于执行计算机程序;

35、计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如上述的基于相似性的软件漏洞分析方法。

36、第四方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如上述的基于相似性的软件漏洞分析方法。

37、本发明的有益效果在于:本发明提供了一种基于相似性的软件漏洞分析方法,通过获取基于预设代码资源池和待分析软件得到的基准代码片段集和漏洞规则集,并对待分析软件进行信息过滤处理生成待分析中间文件,有效滤除了非功能性代码与无关文件,降低了后续处理的数据冗余度;将待分析中间文件与所述基准代码片段集进行相似性分析,以从待分析中间文件中提取出目标代码片段,并将目标代码片段标记为与基准代码片段集匹配的相似代码片段,实现了待分析目标代码的范围收敛,避免对全量代码执行无差异扫描造成的算力浪费;根据漏洞规则集对基准代码片段集执行漏洞检测生成基准漏洞分析结果,将大规模软件的漏洞挖掘转化为针对高内聚基准代码片段的定向检测,显著降低了漏洞分析的计算复杂度;提取相似代码片段在所述待分析软件中的执行环境特征数据,并将基准漏洞分析结果映射至相似代码片段,结合执行环境特征数据在待分析软件中进行漏洞确认,得到最终的目标漏洞,排除了脱离实际运行状态导致漏洞误报的技术缺陷,保障了漏洞确认结果的准确性。因此,本发明在降低计算资源消耗的同时提高漏洞检测精度。