开源组件安全性检测方法及装置与流程
未命名
08-15
阅读:104
评论:0
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.图1是本发明实施例开源组件安全性检测方法的流程图;
36.图2是本发明实施例安全检测模型的训练流程图;
37.图3是本发明实施例软件供应链开源组件安全引入系统模块图;
38.图4是本发明实施例开源组件安全判别支持向量机模型示意图;
39.图5是本发明实施例模型训练流程图;
40.图6是本发明实施例开源组件判别流程图;
41.图7是本发明实施例开源组件安全性检测装置的结构框图;
42.图8是本发明实施例计算机设备示意图。
具体实施方式
43.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
44.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
45.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
46.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
47.需要说明的是,本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
48.需要说明的是,本发明开源组件安全性检测方法和装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明开源组件安全性检测方法和装置的应用领域不做限定。
49.本发明提出一种智能化自动检测软件供应链中开源组件安全引入的技术方案,本发明利用支持向量机按监督学习的方式构造超平面模型,对于软件供应链开发环节的开源组件引入是否安全进行二元分类判别,自动化快速完成开源组件安全判别及引入。
50.本发明以软件开发机构与企业为主体,整合安全厂商、漏洞数据库、组件开源社区、组件供发商和组件代码本身反映组件是否安全的相关数据,通过完成数据预处理,训练支持向量机模型,划分最佳超平面对引入的开源组件进行安全判别,实现软件开发机构企业开发中软件供应链的开源组件安全引入。
51.对于开源组件在软件开发过程中引入时是否其自身存在安全隐患的这个问题,可以看成是一个有监督学习的分类任务,是一个二分类问题,该组件安全无隐患,或该组件存在安全隐患有被攻击的风险。主要的任务是利用现有的各大开发企业及其同业现有已经完成判别的组件名单和业内公开的组件安全情报数据作为样本数据来进行训练,并预测该新引入的开源组件是否安全无风险的情况。
52.开源组件在引入前可根据其多方特征划分出其安全梯度,根据安全梯度的高低反映该组件的安全风险大小,各方特征包含:
53.a)组件作用域:组件在引入后提供的功能多少与涉及的依赖项多少。组件在引入后所提供的功能越少,则在该组件存在漏洞被利用后所造成的影响范围越小;组件在运行时涉及的依赖项越少,则在该组件存在漏洞被利用后所形成的感染链越短,则组件的安全梯度越高。
54.b)漏洞报告频率:根据各大安全厂商与漏洞数据库统计的该组件历史被收录的漏洞数据,该组件被统计的次数越多,频率越高则说明安全梯度越低。
55.c)组件开发商对于安全问题的态度:组件开发商拥有组件开源社区并且组件开发商对于社区反馈的安全问题及时跟进,并且进行修复,反馈结果,对于组件安全问题的积极态度越好则安全梯度越高。
56.d)组件开发文档详细度:组件开发商对于组件的开发文档描述的详细全面程度。包含是否有组件开发文档,文档对于组件的使用,组件的功能以及组件发生错误时的处理方式是否具体详细。拥有组件开发文档,并且组件开发文档越全面详细则安全梯度越高。
57.组件作用域、漏洞报告频率、组件开发商对于安全问题的态度和组件开发文档的详细度反映出来的数据特征差异,依据数据特征的差异划分出安全梯度高低,基于多特征安全梯度决定的开源组件是否安全引入则可以看成一个二分类问题。
58.本发明基于支持向量机的软件供应链组件安全引入系统中包含100数据调取模块、101代码审计模块、102数据爬虫模块、103数据预处理模块、104模型训练模块、105模型验证评价模块、106数据存储模块、107安全判定模块、108安全响应模块九大模块,本发明系统模块结构图如图3所示。其中各模块的功能如下:
59.101代码审计模块:负责对同业及本企业所有已判别记录在库的开源组件安全与
不安全版本代码载入,及业内公开的组件安全情报中对应版本组件代码的下载,和开发中待引入组件代码的导入。本模块对组件代码进行审计,分析组件作用域,归纳统计该组件引入后的依赖项以及所提供的功能。最后获取该组件的名称、组件开发商和版本号交付给数据调取模块和数据爬虫模块,帮助调取和爬取相应的数据。
60.100数据调取模块:该模块负责与各大安全厂商、漏洞数据库建立安全连接,双方基于证书验证建立安全传输通道,通过抗量子密码算法加密方式完成数据在双方之间的调用传输。从各大安全厂商和漏洞数据库中调取的数据为安全厂商和数据漏洞库报告的该组件的漏洞现有统计数据,包含该组件所报告的漏洞频率与该组件各危险等级漏洞分布画像。
61.102数据爬虫模块:负责爬取各组件开发商的开源社区中对于组件提出的安全问题以及开发商对于问题答复与解决方案。爬取组件开发商的该组件开发文档。对于爬取到的文字文档信息进行语义分析处理,切分出对该组件描述具有相关性的内容。
62.103数据预处理模块:对传入的数据进行约简,提取数据特征,并且依据设定的规则为数据赋予安全梯度,以安全梯度数值大小形成多维的数据记录。每个开源组件、对应开发厂商及其版本号组合对应唯一一条数据记录,数据记录包含记录唯一序列号、开源组件名称、开源组件开发商(供应商)、组件版本号、依据制定的规则划分的组件作用域安全梯度、漏洞报告频率安全梯度、组件开发商对于安全问题态度安全梯度、组件开发文档详细度安全梯度、开源组件已知是否属于安全类型。
63.104模型训练模块:将经过数据预处理模块的处理的数据记录导入用于模型训练,随机抽取80%数据用于进行有监督学习训练支持向量机模型,20%数据用于对训练的支持向量机模型进行验证评价,输出一个能够对于开发中引入的开源组件二分类判别是否安全的支持向量机模型。
64.105模型验证评价模块:将104模型训练模块训练好的支持向量机模型输入,同时随机选取剩余的20%数据通过混淆矩阵进行评价验证。
65.106数据存储模块:模型使用剩余数据完成验证评价后,输出到106数据存储模块中。至此模型的训练过程结束。
66.107安全判定模块:负责接收103数据预处理模块中通过预处理后的待判别的新引入组件的数据记录。安全判定模块从数据存储模块中取出训练好的支持向量机模型,将数据记录输入模型进行判别。完成判别后将新的判别记录添加到训练样本,回送到104模型训练模块中继续训练,更新支持向量机模型存储到106数据存储模块。
67.108安全响应模块:根据107安全判定模块的判定结果进行响应,如引入的是安全组件则正常允许组件引入,并记录组件引入日志。如引入的是不安全组件,则进行告警,阻止组件引入,并将该组件、对应开发商及其版本号更新到本企业组件黑名单。
68.图1是本发明实施例开源组件安全性检测方法的流程图,如图1所示,在本发明一个实施例中,本发明的开源组件安全性检测方法包括步骤s101至步骤s103。
69.步骤s101,获取目标开源组件的特征信息,其中,所述特征信息包括:组件作用域信息、漏洞报告频率信息、组件开发商对于安全问题的态度信息以及组件开发文档详细度信息中的至少一种。
70.在本发明一个实施例中,本发明可以通过上述100数据调取模块和102数据爬虫模
块得到目标开源组件的特征信息。
71.步骤s102,根据所述特征信息生成所述目标开源组件的特征安全梯度,其中,所述特征安全梯度包括:组件作用域安全梯度、漏洞报告频率安全梯度、组件开发商对于安全问题的态度安全梯度以及组件开发文档详细度安全梯度中的至少一种。
72.在本发明一个实施例中,本发明可以通过上述103数据预处理模块对目标开源组件的特征信息进行处理,得到目标开源组件的特征安全梯度。
73.步骤s103,将所述特征安全梯度输入到预设的安全检测模型中,得到所述安全检测模型输出的所述目标开源组件的安全检测结果,其中,所述安全检测模型为采用训练数据对预设的机器学习模型进行训练得出的,所述训练数据为标注出安全检测结果的用于模型训练的特征安全梯度。
74.在本发明一个实施例中,所述机器学习模型可以采用现有技术任意一种分类模型。优选的,所述机器学习模型可以采用支持向量机模型。
75.图2是本发明实施例安全检测模型的训练流程图,如图2所示,在本发明一个实施例中,本发明的安全检测模型的训练流程包括步骤s201至步骤s203。
76.步骤s201,根据所述训练数据对所述机器学习模型进行训练。
77.步骤s202,在训练完成后,根据预设的验证样本采用混淆矩阵对训练后的模型进行验证。
78.步骤s203,若验证通过,则将训练后的模型确定为所述安全检测模型,若验证不通过,则调整所述机器学习模型的参数重新进行模型训练。
79.本发明在训练模型时,首先,依据开源的安全组件和不安全组件在组件作用域,漏洞报告频率,组件开发商对于安全问题的态度,组件开发文档详细度划分安全梯度上的差异,依照103数据预处理模块预处理后形成的训练数据记录集合t=(x1,y1),(x2,y2),...,(xn,yn)建立一个n维数据欧氏空间。在n维欧氏空间之中,安全组件与不安全组件线性可分。其中:
80.xi∈rn,yi∈{+1,-1},i=1,2,...n
81.xi为第i个特征向量,yi为类标记,当它等于+1时为正例,该样本组件表示安全组件;为-1时为负例,该样本组件表示不安全组件。
82.其次,寻找最佳超平面。如图4所示,在n维欧氏空间内,实心圆点样本表示安全组件样本,空心圆点样本表示不安全组件样本,将其分隔开实线为超平面,用wx+b=0表示,两条虚线之间的距离称为最大边界距离,用表示。其中在虚线上的一部分样本点(红色实心和空心圆点)被作为支持向量,以此建立支持向量机模型。判别引入的开源组件是否安全的支持向量机模型即在n维欧氏空间的安全组件和不安全组件样本中划分出一个最佳超平面。它要求:一、两类组件样本被划分到超平面两侧。二、两侧的样本点到超平面的几何间隔最大,即可简化为支持向量到超平面的几何间距最大问题。
83.定义超平面关于样本点(xi,yi)的几何间隔为:
[0084][0085]
超平面关于所有样本点的几何间隔的最小值为:
[0086]
γ=mini=1,2...,nγi[0087]
这个距离就是支持向量到超平面的距离。
[0088]
(1)根据以上定义,svm模型的“求解最大分割超平面问题”可以表示为以下约束最优化问题(s.t.表示限制条件):
[0089][0090]
(2)将约束条件两边同时除以γ得到:
[0091][0092]
(3)因为||w||、γ都是标量,所以为了表达式简洁,令得到:
[0093]
yi(w
·
xi+b)≥1,i=1,2,...,n
[0094]
(4)又因为最大化γ,等价于最大化也就等价于最小化最终svm模型的求解最大分割超平面问题又可以表示为以下约束最优化问题:
[0095][0096]
在训练完成后,本发明通过验证数据通过混淆矩阵对训练出的模型进行评价验证。在构建混淆矩阵前,记:
[0097]
预测值为安全组件的为1,预测值为不安全组件的为0,真实值为安全组件的为1,真实值为不安全组件的为0。
[0098]
构建的简化标准二分类混淆矩阵如表1所示,混淆矩阵中真实值在前,预测值在后。全部样本之和为11+10+01+00:
[0099]
表1简化标准二分类混淆矩阵
[0100][0101]
基于混淆矩阵,本发明通过准确率(accuracy)、精确度(precision)、召回率(recall)、f1 measure、特异度(specificity)和假正率(fpr)六个指标来评价训练的模型的效果。
[0102]
1)准确率:准确率accuracy就是所有预测正确的所有样本除以总样本,越接近1越好。
[0103][0104]
2)精确度:精确度precision代表所有预测正确的组件样本中,被预测正确为安全组件组件样本所占的比例。
[0105][0106]
3)召回率:召回率recall代表所有真实为安全组件中,被预测正确为安全组件的样本所占的比例。
[0107][0108]
f1 measure:兼顾精确度和召回率,是两者的调和平均数作为考量的两者平衡的综合性指标。
[0109][0110]
特异度:特异度(specificity)代表所有真实为不安全组件的样本中,被预测正确为不安全组件的样本所占比例。
[0111][0112]
假正率:假正率(fpr)代表所有真实为不安全组件的样本中,被错误预测为安全组件的样本所占比例。
[0113][0114]
在以上六个模型评价指标中,11和00为正确预测样本,01和10为错误预测的样本,以11和00为分子的指标越接近1代表模型预测效果越好。以此本发明指定:准确率(accuracy)≥0.80,精确度(precision)≥0.80,召回率(recall)≥0.80,特异度(specificity)≥0.80,f1 measure≥0.80,假正率(fpr)≤0.2,即模型评价验证通过,将模型输出。
[0115]
在本发明一个实施例中,上述步骤s101中的获取目标开源组件的特征信息,具体包括:
[0116]
基于所述目标开源组件的审计信息归纳统计所述目标开源组件引入后的依赖项以及所提供的功能,得到所述组件作用域信息。
[0117]
在本发明一个实施例中,上述步骤s101中的获取目标开源组件的特征信息,具体包括:
[0118]
获取所述目标开源组件的漏洞统计数据,根据所述漏洞统计数据确定所述漏洞报告频率信息。
[0119]
在本发明一个实施例中,上述步骤s101中的获取目标开源组件的特征信息,具体包括:
[0120]
通过数据爬虫模块爬取针对所述目标开源组件提出的安全问题以及所述目标开
源组件的开发商对于所述安全问题的答复与解决方案,得到所述组件开发商对于安全问题的态度信息。
[0121]
在本发明一个实施例中,上述步骤s101中的获取目标开源组件的特征信息,具体包括:
[0122]
通过数据爬虫模块从所述目标开源组件的开发商爬取所述目标开源组件的开发文档,根据所述开发文档确定所述开发文档详细度信息。
[0123]
在本发明一个实施例中,上述步骤s102的根据所述特征信息生成所述目标开源组件的特征安全梯度,具体包括:
[0124]
获取每种所述特征信息各自对应的安全梯度确定规则;
[0125]
根据所述安全梯度确定规则确定每种所述特征信息各自对应的特征安全梯度。
[0126]
图5是本发明实施例模型训练流程图,如图5所示,在一个具体实施例中,本发明的模型训练流程包括以下步骤:
[0127]
步骤200:模型训练开始前对开源组件进行信息收集,数据来源来自于数据调取,爬虫收集,代码审计三方面,内容包含组件作用域、漏洞报告频率、组件开发商对于安全问题的态度、组件开发文档。
[0128]
步骤201:对于收集的信息数据进行预处理,依据定制规则划分出各相关特征指标的安全梯度,并以组件名、对应开发商及其版本号指向唯一一条数据记录,可以在模型训练的n维欧氏空间中完成对一个样本点的刻画。
[0129]
步骤202:建立n维欧氏空间,将数据记录输入并完成在n维欧氏空间中样本点的刻画,寻找出最佳超平面划分安全组件与不安全组件两类样本点。
[0130]
步骤203:使用收集剩余20%的数据对训练的模型进行评价,根据利用混淆矩阵六项指标对训练的模型进行评价,若评价通过则将模型进行存储,以备取用;若验证不通过的则重新调整参数重新训练模型。
[0131]
步骤204:存储训练完成通过评价后输出的支持向量机模型,以供判别时模型取用进行组件引入安全判别。
[0132]
图6是本发明实施例开源组件判别流程图,如图6所示,在本发明一个具体实施例中,对开源组件的安全性进行判别的流程具体包括以下步骤:
[0133]
步骤300:对需要引入的该组件进行信息收集,同样数据来源来自于数据调取,爬虫收集,代码审计三方面,内容包含组件作用域、漏洞报告频率、组件开发商对于安全问题的态度、组件开发文档。
[0134]
步骤301:对该组件收集到的信息划分各指标安全梯度,进行数字特征提取,形成一条数据记录,能在n维欧氏空间中刻画一个样本点。
[0135]
步骤302:从训练好的模型中取出模型对该样本数据进行二元判别的数据划分,判别是否属于安全组件。
[0136]
步骤303:对需要引入的组件进行判别,安全判别通过则执行步骤305,安全判别不通过的,则执行步骤304。
[0137]
步骤304:判别为不安全组件时实施告警,并且阻止组件引入。
[0138]
步骤305:判别为安全组件时正常引入该组件使用。
[0139]
步骤306:判别的结果安全组件与不安全组件均需要做记录处理,安全组件做好组
件引入的日志记录,并定期监控。不安全组件则需要将该组件、对应开发商及其对应版本号更新到本企业组件使用黑名单。
[0140]
步骤307:判别的结果将添加为新增的训练样本加入训练,不断持续优化迭代训练的支持向量机模型。
[0141]
由以上实施例可以看出,本发明相较于现有技术至少具有以下优点:
[0142]
1.本发明是一种基于支持向量机的软件供应链开源组件安全引入技术和方法,使用自动化快速灵活判别组件是否安全、在开发中是否选择引入的方案。不依赖与人工判断和规则判断的繁琐性与滞后性。
[0143]
2.本发明提出通过收集多方信息来对组件多项数据指标进行安全梯度划分,数据信息综合多角度,包含组件代码本身、组件开发商、安全厂商和漏洞数据库。通过多维角度的数据对组件安全评估划分梯度,提升判别的准确度。
[0144]
3.本发明使用支持向量机划分最佳超平面训练模型对组件引入是否安全作一分为二处理,同时对于新增引入组件的判别结果继续作为新增加的样本输入训练模型,实时对模型进行更新,贴合开源组件的更新变化,更加精准地优化迭代支持向量机模型进行组件安全引入判别。
[0145]
4.本发明通过多种方式获取数据,包含对安全厂商和漏洞数据库以安全通信的方式进行实时数据调用,对组件开发文档和组件开源社区内容情况实时爬取,对引入的组件代码实时审计。确保数据来源的实时性,紧跟开源组件市场的安全态势,确保训练的模型判别准确率。
[0146]
下面将对本发明以上实施例中出现的一些术语进行解释说明:
[0147]
支持向量机(support vector machine,svm):支持向量机是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。
[0148]
软件供应链:软件从软件供应商到用户使用的整个过程中,从设计软件、编写代码到生成软件的开发环节,再到分发软件和用户下载的交付环节,最终到用户使用环节的三大环节组成的链状结构。
[0149]
监督学习:是一个机器学习中的方法,可以由训练资料中学到或建立一个模式(函数/learning model),并依此模式推测新的实例。
[0150]
决策边界:也称决策面,在具有两个类的统计分类问题中,决策边界或决策表面是超曲面,其将基础向量空间划分为两个集合,对应两个分类。如果决策面是超平面,那么这个分类问题是线性的,分类是线性可分的。
[0151]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0152]
基于同一发明构思,本发明实施例还提供了一种开源组件安全性检测装置,可以用于实现上述实施例所描述的开源组件安全性检测方法,如下面的实施例所述。由于开源组件安全性检测装置解决问题的原理与开源组件安全性检测方法相似,因此开源组件安全性检测装置的实施例可以参见开源组件安全性检测方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下
实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0153]
图7是本发明实施例开源组件安全性检测装置的结构框图,如图7所示,在本发明一个实施例中,本发明的开源组件安全性检测装置包括:
[0154]
特征信息获取单元1,用于获取目标开源组件的特征信息,其中,所述特征信息包括:组件作用域信息、漏洞报告频率信息、组件开发商对于安全问题的态度信息以及组件开发文档详细度信息中的至少一种;
[0155]
特征安全梯度确定单元2,用于根据所述特征信息生成所述目标开源组件的特征安全梯度,其中,所述特征安全梯度包括:组件作用域安全梯度、漏洞报告频率安全梯度、组件开发商对于安全问题的态度安全梯度以及组件开发文档详细度安全梯度中的至少一种;
[0156]
安全检测单元3,用于将所述特征安全梯度输入到预设的安全检测模型中,得到所述安全检测模型输出的所述目标开源组件的安全检测结果,其中,所述安全检测模型为采用训练数据对预设的机器学习模型进行训练得出的,所述训练数据为标注出安全检测结果的用于模型训练的特征安全梯度。
[0157]
在本发明一个实施例中,本发明的开源组件安全性检测装置,还包括:
[0158]
训练单元,用于根据所述训练数据对所述机器学习模型进行训练;
[0159]
验证单元,用于在训练完成后,根据预设的验证样本采用混淆矩阵对训练后的模型进行验证;
[0160]
模型确定单元,用于若验证通过,则将训练后的模型确定为所述安全检测模型,若验证不通过,则调整所述机器学习模型的参数重新进行模型训练。
[0161]
在本发明一个实施例中,所述特征信息获取单元1,具体包括:
[0162]
组件作用域信息获取模块,用于基于所述目标开源组件的审计信息归纳统计所述目标开源组件引入后的依赖项以及所提供的功能,得到所述组件作用域信息。
[0163]
在本发明一个实施例中,所述特征信息获取单元1,具体包括:
[0164]
漏洞报告频率信息获取模块,用于获取所述目标开源组件的漏洞统计数据,根据所述漏洞统计数据确定所述漏洞报告频率信息。
[0165]
在本发明一个实施例中,所述特征信息获取单元1,具体包括:
[0166]
组件开发商对于安全问题的态度信息获取模块,用于通过数据爬虫模块爬取针对所述目标开源组件提出的安全问题以及所述目标开源组件的开发商对于所述安全问题的答复与解决方案,得到所述组件开发商对于安全问题的态度信息。
[0167]
在本发明一个实施例中,所述特征信息获取单元1,具体包括:
[0168]
开发文档详细度信息获取模块,用于通过数据爬虫模块从所述目标开源组件的开发商爬取所述目标开源组件的开发文档,根据所述开发文档确定所述开发文档详细度信息。
[0169]
在本发明一个实施例中,所述特征安全梯度确定单元2,具体包括:
[0170]
安全梯度确定规则获取模块,用于获取每种所述特征信息各自对应的安全梯度确定规则;
[0171]
规则匹配模块,用于根据所述安全梯度确定规则确定每种所述特征信息各自对应的特征安全梯度。
[0172]
为了实现上述目的,根据本技术的另一方面,还提供了一种计算机设备。如图8所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。
[0173]
处理器可以为中央处理器(central processing unit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
[0174]
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。
[0175]
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0176]
所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。
[0177]
上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。
[0178]
为了实现上述目的,根据本技术的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述开源组件安全性检测方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
[0179]
为了实现上述目的,根据本技术的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述开源组件安全性检测方法的步骤。
[0180]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们
中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0181]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种开源组件安全性检测方法,其特征在于,包括:获取目标开源组件的特征信息,其中,所述特征信息包括:组件作用域信息、漏洞报告频率信息、组件开发商对于安全问题的态度信息以及组件开发文档详细度信息中的至少一种;根据所述特征信息生成所述目标开源组件的特征安全梯度,其中,所述特征安全梯度包括:组件作用域安全梯度、漏洞报告频率安全梯度、组件开发商对于安全问题的态度安全梯度以及组件开发文档详细度安全梯度中的至少一种;将所述特征安全梯度输入到预设的安全检测模型中,得到所述安全检测模型输出的所述目标开源组件的安全检测结果,其中,所述安全检测模型为采用训练数据对预设的机器学习模型进行训练得出的,所述训练数据为标注出安全检测结果的用于模型训练的特征安全梯度。2.根据权利要求1所述的开源组件安全性检测方法,其特征在于,还包括:根据所述训练数据对所述机器学习模型进行训练;在训练完成后,根据预设的验证样本采用混淆矩阵对训练后的模型进行验证;若验证通过,则将训练后的模型确定为所述安全检测模型,若验证不通过,则调整所述机器学习模型的参数重新进行模型训练。3.根据权利要求1所述的开源组件安全性检测方法,其特征在于,所述获取目标开源组件的特征信息,具体包括:基于所述目标开源组件的审计信息归纳统计所述目标开源组件引入后的依赖项以及所提供的功能,得到所述组件作用域信息。4.根据权利要求1所述的开源组件安全性检测方法,其特征在于,所述获取目标开源组件的特征信息,具体包括:获取所述目标开源组件的漏洞统计数据,根据所述漏洞统计数据确定所述漏洞报告频率信息。5.根据权利要求1所述的开源组件安全性检测方法,其特征在于,所述获取目标开源组件的特征信息,具体包括:通过数据爬虫模块爬取针对所述目标开源组件提出的安全问题以及所述目标开源组件的开发商对于所述安全问题的答复与解决方案,得到所述组件开发商对于安全问题的态度信息。6.根据权利要求1所述的开源组件安全性检测方法,其特征在于,所述获取目标开源组件的特征信息,具体包括:通过数据爬虫模块从所述目标开源组件的开发商爬取所述目标开源组件的开发文档,根据所述开发文档确定所述开发文档详细度信息。7.根据权利要求1所述的开源组件安全性检测方法,其特征在于,所述根据所述特征信息生成所述目标开源组件的特征安全梯度,具体包括:获取每种所述特征信息各自对应的安全梯度确定规则;根据所述安全梯度确定规则确定每种所述特征信息各自对应的特征安全梯度。8.根据权利要求1或2所述的开源组件安全性检测方法,其特征在于,所述机器学习模型包括:支持向量机模型。
9.一种开源组件安全性检测装置,其特征在于,包括:特征信息获取单元,用于获取目标开源组件的特征信息,其中,所述特征信息包括:组件作用域信息、漏洞报告频率信息、组件开发商对于安全问题的态度信息以及组件开发文档详细度信息中的至少一种;特征安全梯度确定单元,用于根据所述特征信息生成所述目标开源组件的特征安全梯度,其中,所述特征安全梯度包括:组件作用域安全梯度、漏洞报告频率安全梯度、组件开发商对于安全问题的态度安全梯度以及组件开发文档详细度安全梯度中的至少一种;安全检测单元,用于将所述特征安全梯度输入到预设的安全检测模型中,得到所述安全检测模型输出的所述目标开源组件的安全检测结果,其中,所述安全检测模型为采用训练数据对预设的机器学习模型进行训练得出的,所述训练数据为标注出安全检测结果的用于模型训练的特征安全梯度。10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任意一项所述方法的步骤。11.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至8任意一项所述方法的步骤。12.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至8任意一项所述方法的步骤。
技术总结
本发明实施例公开了一种开源组件安全性检测方法及装置,可用于金融领域或其他技术领域,该方法包括:获取目标开源组件的特征信息;根据所述特征信息生成所述目标开源组件的特征安全梯度;将所述特征安全梯度输入到预设的安全检测模型中,得到所述安全检测模型输出的所述目标开源组件的安全检测结果,其中,所述安全检测模型为采用训练数据对预设的机器学习模型进行训练得出的,所述训练数据为标注出安全检测结果的用于模型训练的特征安全梯度。本发明实现了准确、高效的确定开源组件的安全性的有益效果。性的有益效果。性的有益效果。
技术研发人员:谭宗麟 曾炜 丁育祯 朱深才
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.05.26
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
