本发明涉及计算机,特别涉及一种漏洞挖掘方法、装置、设备及介质。
背景技术:
1、操作系统漏洞是指应用软件或操作系统软件在逻辑设计上的缺陷或在编写时产生的错误,若某些较严重的漏洞被攻击者发现,就有可能被其利用,使得攻击者在未授权的情况下访问或破坏服务器系统,通过植入木马病毒等方式来攻击或控制整个服务器,从而窃取服务器中的重要资料和信息,甚至破坏系统。先于攻击者发现并及时修补漏洞可有效减少来自网络的威胁,因此主动发掘并分析系统安全漏洞,对网络攻防战具有重要的意义。其中,漏洞挖掘技术是指对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的潜在漏洞。
2、现有操作系统挖掘漏洞常用的方法是基于遍历的构造算法,通过遍历源码文件的方法,检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针等,发现程序中存在的安全缺陷。然而遍历算法在处理大规模文本数据时具有以下缺点:(1)存在重复漏洞挖掘的情况,无法快速确定发现的漏洞是已知漏洞还是未知漏洞;(2)遍历算法进行漏洞挖掘是盲目的,很难在有限的时间内快速定位漏洞的位置,这严重影响了漏洞挖掘的效率;(3)漏洞挖掘方法主要依靠人工挖掘或者漏洞检测工具来实现,然而,由于工具的灵活性和文件大小的限制,其可扩展性较低,无法大规模应用于操作系统源码检测;(4)较高的时间复杂度和空间复杂度,并且稀疏矩阵消耗了大量的内存空间,且受到了可扩展性限制,无法达到硬件提供的全部性能,最终导致效率较差。
3、综上,如何提高漏洞挖掘效率是目前有待解决的问题。
技术实现思路
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、存储器,用于保存计算机程序;
38、处理器,用于执行所述计算机程序,以实现前述公开的漏洞挖掘方法的步骤。
39、第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的漏洞挖掘方法的步骤。
40、可见,本技术通过获取操作系统中的源代码文件;利用基于反向索引的预设函数词典从所有所述源代码文件检索对应的目标函数,以基于所述反向索引在所述目标函数与所述源代码文件之间建立对应关系;其中,所述预设函数词典基于非重复的函数名称构建;获取基于预设的漏洞关键词生成的模式串,并基于精确字符集算法将所述模式串与所述目标函数对应的待检测代码片段进行匹配得到匹配结果,以根据所述匹配结果确定所述目标函数中是否存在漏洞;若存在漏洞,则从所述待检测代码片段中定位漏洞代码片段,并基于所述对应关系确定出所有包括所述目标函数的源代码文件。由此可见,本技术在获取到操作系统中的源代码文件后,需要基于反向索引的预设函数词典遍历所有源代码文件,以检索与预设函数词典对应的目标函数,其中,预设函数词典具体是基于非重复的函数名称构建。接着再基于反向索引在目标函数与源代码文件之间建立对应关系,从而实现在目标函数存在漏洞的情况下,基于对应关系定位到所有包括该目标函数的源代码文件,达到快速识别重复函数,并解决对某一目标函数漏洞重复挖掘的问题。进一步的,本技术还需获取基于预设的漏洞关键词生成的模式串,并基于精确字符集算法将模式串与目标函数对应的待检测代码片段进行匹配,以根据匹配结果确定目标函数中是否存在漏洞。上述过程通过采取精确字符集算法能够在每次匹配失败时,对模式串移动较远的距离,从而减少对待检测代码片段的检测时间,提高匹配效率,且能够快速从待检测代码片段中定位出漏洞代码片段。
1.一种漏洞挖掘方法,其特征在于,包括:
2.根据权利要求1所述的漏洞挖掘方法,其特征在于,所述利用基于反向索引的预设函数词典从所有所述源代码文件检索对应的目标函数之前,还包括:
3.根据权利要求1所述的漏洞挖掘方法,其特征在于,所述从所述待检测代码片段中定位漏洞代码片段之后,还包括:
4.根据权利要求1至3任一项所述的漏洞挖掘方法,其特征在于,所述基于精确字符集算法将所述模式串与所述目标函数对应的待检测代码片段进行匹配得到匹配结果,包括:
5.根据权利要求4所述的漏洞挖掘方法,其特征在于,所述确定与所述目标函数对应的待检测代码片段,包括:
6.根据权利要求4所述的漏洞挖掘方法,其特征在于,所述基于所述模式串并按照精确字符集算法中的坏字符规则计算与所述第一字符对应的第一移动偏移量,包括:
7.根据权利要求4所述的漏洞挖掘方法,其特征在于,所述基于所述模式串并按照所述精确字符集算法中的好后缀规则计算与所述第一字符对应的第二移动偏移量,包括:
8.一种漏洞挖掘装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的漏洞挖掘方法的步骤。