本发明涉及数据处理,尤其涉及一种第三方库重用检测方法、装置、电子设备和存储介质。
背景技术:
1、第三方库是现代软件系统的重要组成部分,第三方库在软件开发过程中经常被重用,因此第三方库中存在的漏洞被引入下游软件中,严重危害了下游软件安全。第三方库重用检测技术旨在从目标软件中检测重用的第三方库的代码,从而关联出库重用引入的漏洞威胁,及时修补下游软件漏洞,保障软件供应链安全。
2、由于c/c++代码使用不同的编译选项或编译成不同架构的二进制文件,会导致显著差异,因此,如何对c/c++二进制文件的第三方库重用进行检测成为亟需解决的问题。目前,第三方库重用检测方法包括b2sfinder的第三方库重用检测方法和使用二进制函数相似性匹配的技术进行第三方库重用检测方法,但是上述两种方式存在特征单一和粒度不匹配问题,导致漏报和误报,降低第三方库重用检测的准确性。
技术实现思路
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、本发明提供的第三方库重用检测方法、装置、电子设备和存储介质,通过对待检测二进制文件和侯选库进行锚点检测,得到多个锚点;对每个锚点进行锚点增强,得到每个锚点的候选重用区域;调整候选重用区域,基于调整结果确定重用分值最高的候选重用区域,并将重用分值最高的候选重用区域作为第三方库的重用区域。本发明将第三方库重用检测任务转化为第三方库重用区域探测任务,在常量特征和函数特征的基础上,进一步进行函数调用图粒度的区域探索,以减少不同编译选项和体系结构的影响,同时探索真正的重用范围,解决传统特征单一和粒度不匹配问题,减少漏报和误报,提高第三方库重用检测的准确性。
1.一种第三方库重用检测方法,其特征在于,包括:
2.根据权利要求1所述的第三方库重用检测方法,其特征在于,所述锚点增强包括锚点对齐和锚点扩展;
3.根据权利要求2所述的第三方库重用检测方法,其特征在于,所述采用锚点对齐算法,对每个所述锚点进行锚点对齐,包括:
4.根据权利要求2所述的第三方库重用检测方法,其特征在于,所述将对齐后的锚点进行锚点扩展,得到每个对齐后的锚点的候选重用区域,包括:
5.根据权利要求1所述的第三方库重用检测方法,其特征在于,所述调整所述候选重用区域,包括:
6.根据权利要求1所述的第三方库重用检测方法,其特征在于,所述基于调整结果确定重用分值最高的所述候选重用区域,包括:
7.根据权利要求6所述的第三方库重用检测方法,其特征在于,确定所述目标候选重用区域的相似度,包括:
8.一种第三方库重用检测装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述第三方库重用检测方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述第三方库重用检测方法。