本发明提出了一种开源组件漏洞检测方法及系统,属于漏洞检测。
背景技术:
1、开源组件漏洞检测是一种针对应用程序或系统中使用的开源软件组件(如库、框架等)进行漏洞扫描和分析的过程。这旨在及时发现并纠正开源组件中的安全漏洞,以减少潜在的安全风险。现有技术中的开源组件漏洞检测存在漏检率较大的问题。
技术实现思路
1、本发明提供了一种开源组件漏洞检测方法及系统,用以解决现有技术中的开源组件漏洞检测存在漏检率较大的问题:
2、一种开源组件漏洞检测方法,所述开源组件漏洞检测方法包括:
3、提取待检测的开源组件及其对应的版本信息;
4、将已知的漏洞数据库与所述开源组件进行组件的代码数据信息比对,获取已知的漏洞信息;
5、利用代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得潜在的漏洞信息;
6、根据所述已知的漏洞信息和潜在的漏洞信息的数据信息设置定期检测时间间隔,并按照所述定期检测时间间隔对待检测的开源组件进行定期安全检测。
7、进一步地,将已知的漏洞数据库与所述开源组件进行组件的代码数据信息比对,获取已知的漏洞信息,包括:
8、根据所述待检测的开源组件及其对应的版本信息从所述漏洞数据库中调取与所述开源组件及其版本信息对应的漏洞数据信息;
9、将所述开源组件的代码数据信息与从已知的漏洞数据库调取的漏洞数据信息进行比对,获取已知的漏洞信息,其具体步骤包括,
10、步骤a1:首先利用公式(1)根据所述开源组件的代码数据信息的数据长度对所述已知的漏洞数据库调取的漏洞数据信息进行部分剔除;
11、w(a)=f{len(d16)<len(l_a16)}(1)
12、其中w(a)表示所述已知的漏洞数据库调取的第a个漏洞数据信息的剔除控制值;l_a16表示所述已知的漏洞数据库调取的第a个漏洞数据信息的16进制形式;d16表示所述开源组件的代码数据信息的16进制形式;len()表示求取括号内数据的数据总位数;f{}表示判断函数,若括号内对算式成立则函数值为1,若括号内的函数值不成立则函数值为0;
13、若w(a)=1,则将所述已知的漏洞数据库调取的第a个漏洞数据信息进行剔除;
14、若w(a)=0,则将所述已知的漏洞数据库调取的第a个漏洞数据信息进行保留;
15、将全部保留漏洞数据信息重新记作l_b16,表示剩余的第b个漏洞数据信息的16进制形式;
16、步骤a2:利用公式(2)根据所述开源组件的代码数据信息与剩余的漏洞数据信息进行比对,获取所述开源组件的代码数据已知的漏洞信息;
17、
18、其中y(b)表示剩余的第b个漏洞数据信息是所述开源组件的代码数据已知的漏洞信息的判定值;d16[i→i+len(l_b16)-1]-l_b16表示数据d16中第i位至第i+len(l_b16)-1位上的16进制形式数据;n表示数据d16中的数据总位数;
19、若y(b)=1,则剩余的第b个漏洞数据信息是所述开源组件的代码数据已知的漏洞信息;
20、若y(b)=0,则剩余的第b个漏洞数据信息不是所述开源组件的代码数据已知的漏洞信息;
21、步骤a3:利用公式(3)得到所述开源组件的代码数据已知的漏洞信息的总个数
22、
23、其中k表示所述开源组件的代码数据已知的漏洞信息的总个数;m表示所述已知的漏洞数据库调取的漏洞数据信息总个数。
24、进一步地,利用代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得潜在的漏洞信息,包括:
25、利用动态代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得第一潜在漏洞信息;
26、利用静态代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得第二潜在漏洞信息;
27、对所述第一潜在漏洞信息和第二潜在漏洞信息进行整合,形成潜在的漏洞信息;
28、将所述已知的漏洞信息和潜在的漏洞信息反馈至所述待检测的开源组件对应的用户终端进行显示。
29、进一步地,根据所述已知的漏洞信息和潜在的漏洞信息的数据信息设置定期检测时间间隔,并按照所述定期检测时间间隔对待检测的开源组件进行定期安全检测,包括:
30、提取所述已知的漏洞信息的漏洞数量;
31、提取所述潜在的漏洞信息的漏洞数量;
32、利用所述已知的漏洞信息的漏洞数量和潜在的漏洞信息的漏洞数量设置定期检测时间间隔;其中,所述定期检测时间间隔通过如下公式获取:
33、t=[1+ln[1+(m01-n01)/m01]+ln[1+(m02-n02)/m02]]×t0
34、其中,t表示定期检测时间间隔;t0表示预设的初始时间间隔;m01表示预设的第一次数阈值;m02表示预设的第二次数阈值;n01表示已知的漏洞信息的漏洞数量;n02表示潜在的漏洞信息的漏洞数量;
35、按照所述定期检测时间间隔对待检测的开源组件进行定期安全检测。
36、一种开源组件漏洞检测系统,所述开源组件漏洞检测系统包括:
37、组件信息提取模块,用于提取待检测的开源组件及其对应的版本信息;
38、已知漏洞信息获取模块,用于将已知的漏洞数据库与所述开源组件进行组件的代码数据信息比对,获取已知的漏洞信息;
39、潜在漏洞信息获取模块,用于利用代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得潜在的漏洞信息;
40、定期安全检测执行操作模块,用于根据所述已知的漏洞信息和潜在的漏洞信息的数据信息设置定期检测时间间隔,并按照所述定期检测时间间隔对待检测的开源组件进行定期安全检测。
41、进一步地,所述已知漏洞信息获取模块包括:
42、漏洞数据信息调取模块,用于根据所述待检测的开源组件及其对应的版本信息从所述漏洞数据库中调取与所述开源组件及其版本信息对应的漏洞数据信息;
43、比对执行模块,用于将所述开源组件的代码数据信息与从已知的漏洞数据库调取的漏洞数据信息进行比对,获取已知的漏洞信息,其具体步骤包括,
44、步骤a1:首先利用公式(1)根据所述开源组件的代码数据信息的数据长度对所述已知的漏洞数据库调取的漏洞数据信息进行部分剔除;
45、w(a)=f{len(d16)<len(l_a16)}(1)
46、其中w(a)表示所述已知的漏洞数据库调取的第a个漏洞数据信息的剔除控制值;l_a16表示所述已知的漏洞数据库调取的第a个漏洞数据信息的16进制形式;d16表示所述开源组件的代码数据信息的16进制形式;len()表示求取括号内数据的数据总位数;f{}表示判断函数,若括号内对算式成立则函数值为1,若括号内的函数值不成立则函数值为0;
47、若w(a)=1,则将所述已知的漏洞数据库调取的第a个漏洞数据信息进行剔除;
48、若w(a)=0,则将所述已知的漏洞数据库调取的第a个漏洞数据信息进行保留;
49、将全部保留漏洞数据信息重新记作l_b16,表示剩余的第b个漏洞数据信息的16进制形式;
50、步骤a2:利用公式(2)根据所述开源组件的代码数据信息与剩余的漏洞数据信息进行比对,获取所述开源组件的代码数据已知的漏洞信息;
51、
52、其中y(b)表示剩余的第b个漏洞数据信息是所述开源组件的代码数据已知的漏洞信息的判定值;d16[i→i+len(l_b16)-1]-l_b16表示数据d16中第i位至第i+len(l_b16)-1位上的16进制形式数据;n表示数据d16中的数据总位数;
53、若y(b)=1,则剩余的第b个漏洞数据信息是所述开源组件的代码数据已知的漏洞信息;
54、若y(b)=0,则剩余的第b个漏洞数据信息不是所述开源组件的代码数据已知的漏洞信息;
55、步骤a3:利用公式(3)得到所述开源组件的代码数据已知的漏洞信息的总个数
56、
57、其中k表示所述开源组件的代码数据已知的漏洞信息的总个数;m表示所述已知的漏洞数据库调取的漏洞数据信息总个数。
58、进一步地,所述潜在漏洞信息获取模块包括:
59、第一潜在漏洞信息获取模块,用于利用动态代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得第一潜在漏洞信息;
60、第二潜在漏洞信息获取模块,用于利用静态代码分析工具对所述开源组件的代码数据信息进行潜在漏洞信息分析,获得第二潜在漏洞信息;
61、漏洞信息整合模块,用于对所述第一潜在漏洞信息和第二潜在漏洞信息进行整合,形成潜在的漏洞信息;
62、信息显示模块,用于将所述已知的漏洞信息和潜在的漏洞信息反馈至所述待检测的开源组件对应的用户终端进行显示。
63、进一步地,所述定期安全检测执行操作模块包括:
64、第一漏洞数量提取模块,用于提取所述已知的漏洞信息的漏洞数量;
65、第二漏洞数量提取模块,用于提取所述潜在的漏洞信息的漏洞数量;
66、时间间隔设置模块,用于利用所述已知的漏洞信息的漏洞数量和潜在的漏洞信息的漏洞数量设置定期检测时间间隔;其中,所述定期检测时间间隔通过如下公式获取:
67、t=[1+ln[1+(m01-n01)/m01]+ln[1+(m02-n02)/m02]]×t0
68、其中,t表示定期检测时间间隔;t0表示预设的初始时间间隔;m01表示预设的第一次数阈值;m02表示预设的第二次数阈值;n01表示已知的漏洞信息的漏洞数量;n02表示潜在的漏洞信息的漏洞数量;
69、安全检测执行模块,用于按照所述定期检测时间间隔对待检测的开源组件进行定期安全检测。
70、本发明有益效果:
71、本发明提出的一种开源组件漏洞检测方法和系统通过比对已知漏洞数据库和潜在漏洞信息的分析,系统能够进行全面的漏洞检测,涵盖已知和潜在的安全风险。定期安全检测有助于及时获取最新的漏洞信息,确保系统对已知和潜在漏洞的感知是最新的。通过代码分析工具对开源组件进行潜在漏洞信息分析,提高了对可能存在的未知漏洞的识别能力,增强了系统的安全性。定期的安全检测有助于建立安全的开发和部署流程,降低漏洞被利用的风险,提高系统整体的安全水平。