一种基于组件依赖图的软件安全漏洞预测方法技术

技术编号:17467771 阅读:39 留言:0更新日期:2018-03-15 05:12
本发明专利技术提出一种基于组件依赖图的软件安全漏洞预测方法,从不同的角度提出了一种软件代码的度量指标来建立漏洞预测模型。包括以下步骤:步骤一、建立所预测软件的组件依赖图:步骤二、计算步骤一所述组件依赖图中每个节点的网络属性值;步骤三、从公开的软件漏洞库中搜集针对所预测软件的所有软件漏洞,建立该软件的历史漏洞库;步骤四、步骤二中计算得到的每个节点的网络属性值作为机器学习算法的输入,将步骤三中漏洞的数量作为机器学习算法的输出,对机器学习算法进行训练和测试,根据机器学习算法的性能评价指标确定性能最优的预测模型;步骤五、将第四步中获得的性能最优的预测模型应用于该软件项目的新的软件组件的漏洞预测。

【技术实现步骤摘要】
一种基于组件依赖图的软件安全漏洞预测方法
本专利技术涉及一种基于组件依赖图的软件安全漏洞预测方法,属于软件质量保障

技术介绍
目前,很多文献资料对软件安全漏洞的预测进行研究,建立漏洞预测模型(VulnerabilityPredictionModel,VPM)。漏洞预测模型采用机器学习算法,从软件代码中提取代码的度量指标作为特征,从大量已知具有漏洞的代码中获取指标数据对模型进行训练,训练之后的模型可对新的代码中的漏洞进行预测。预测的结果给出模块具有漏洞的可能性,或者模块存在漏洞的数量。VPM的研究思路和方法主要借鉴了软件缺陷预测模型(DefectPredictionModel,DPM)的研究思路和方法,其软件代码的度量指标主要包括三个方面:代码复杂性、耦合性以及内聚性指标。研究资料认为高的复杂性、高的耦合性以及低内聚性能够造成软件开发人员对软件的理解、开发、测试以及维护的困难,因此能够引起软件系统中存在安全漏洞。软件复杂性、耦合性以及内聚性指标最早被用于软件缺陷的预测中,由于软件安全漏洞被认为是软件缺陷的子集,因此有人将这些指标用于软件安全漏洞的预测。Y.Shin等分析了9个传统的复杂性指标与安全漏洞的关系并建立预测模型,以JSE为实验对象,结果显示模型具有很高的漏警率。后来他们对复杂性指标进行扩展,增加了设计阶段的复杂性指标和运行阶段的复杂性指标,实验结果显示模型的漏警率有所降低。随后他们以复杂性、代码搅动度(Codechurn)和缺陷历史度量(faulthistory)以及以复杂性、代码搅动度和开发者行为(developeractivity)度量分别建立预测模型,实现对象为MozillaFirefox和Linuxkernel,测试结果表明,模型均具有高于80%的召回率,但是模型的虚警率也高于20%。T.Zimmermann等利用代码搅动度、代码依赖性以及团队的组织构架度量等指标建立预测模型,针对windowsvista的一个二进制文件进行实验,结果表明模型具有高的精度(precision),但是召回率也很低。V.H.Nguyen等建立组件依赖图,利用代码的复杂性指标和组件之间的依赖性指标建立预测模型,实验对象为JSE,结果表明模型具有较好的准确率(Accuracy)和虚警率,但是模型的召回率也较低。I.Chowdhury等使用传统的面向对象框架的复杂性、耦合性以及内聚性指标建立预测模型,以Firefox为实验对象,收集了到实验日期为止的所有52个Firefox的全部公开漏洞进行实验。他们得出结论认为传统的面向对象框架的复杂性、内聚性以及耦合性指标能够有效用于漏洞预测,而且认为是由这三类指标共同影响了漏洞的倾向性,而不是由单类指标。S.Neuhaus等通过关联规则挖掘发现一个文件中import/functioncalls的对象与该文件的漏洞倾向性有关联,他们使用import/functioncalls作为特征建立分类器,以Firefox为实验对象,结果显示召回率为45%,精度为70%。R.Scandariato等将一个源代码文件视为文本,将文本中的一个word视为特征量,使用文本挖掘方法建立分类器。在他们后续的研究中,对基于文本挖掘的方法与基于安全度量指标的方法针对同一个漏洞数据库进行了对比,发现基于文本挖掘的方法具有更高的召回率。M.Jimenez等同时对基于文本挖掘、基于安全度量指标以及基于import/functioncalls的三种方法进行了对比,发现基于安全度量指标的方法的效果最差。对已有的漏洞预测模型研究成果进行总结,发现漏洞预测模型的研究方法和思路主要借鉴了缺陷预测模型的建立方法和思路。针对采用软件度量指标,基于机器学习算法建立的漏洞可能性和数量预测模型,主要从三个方面开展了研究工作:一是从不同的角度提出新的、效果更好的度量指标;二是尝试采用性能更优的机器学习算法;三是提高漏洞数据库的质量。从已公开的文献来看,漏洞预测模型的性能提升还有较大的空间。
技术实现思路
本专利技术提出一种基于组件依赖图的软件安全漏洞预测方法,从不同的角度提出了一种软件代码的度量指标来建立漏洞预测模型。本专利技术通过以下技术方案实现:一种基于组件依赖图的软件安全漏洞预测方法,包括以下步骤:步骤一、建立所预测软件的组件依赖图:所述组件是一个三元组C<DC,MC,RC>,其中,DC是共享变量或数据成员的集合,MC是函数或方法的集合,RC是组件中成员之间关系的集合;软件系统网络图定义为GSN(Vd,Vm,Ec,Er,Ed,W),其中,Vd:是数据项节点的集合;Vm:是可执行代码节点的集合;是函数调用边的集合;是函数返回边的集合;是数据边的集合,包括数据读和数据写;W:表示边的权值集合;设P(m)表示函数m的参数个数,B(m)表示函数m的返回点个数,e<m1,m2>表示节点m1指向节点m2的边,如果e<m1,m2>∈Er,则W(e<m1,m2>)=B(m1);如果当m2∈Vd,则W(e<m1,m2>)=1;当m2∈Vm,则W(e<m1,m2>)=P(m2);将同属于一个组件的所有节点合并成一个节点,连接同一个组件的所有相同方向的边合并成一条边,边的权值求和;步骤二、计算步骤一所述组件依赖图中每个节点的网络属性值,该网络属性值即是建立预测模型的度量元指标;步骤三、从公开的软件漏洞库中搜集针对所预测软件的所有软件漏洞,建立该软件的历史漏洞库,并标明每个软件组件具有漏洞的数量;步骤四、步骤二中计算得到的每个节点的网络属性值作为机器学习算法的输入,将步骤三中漏洞的数量作为机器学习算法的输出,对机器学习算法进行训练和测试,根据机器学习算法的性能评价指标确定性能最优的预测模型;步骤五、将第四步中获得的性能最优的预测模型应用于该软件项目的新的软件组件的漏洞预测。本专利技术的有益效果:本专利技术中采用一种加权的软件网络图,相对于现有的没有采用加权的网络图的方法,能够清楚的描述不同节点之间的连接强度,而现有的没有加权的方法则认为所有节点之间的连接强度相同,这显然不符合实际情况,因此采用加权的方法比现有的方法更加准确和精确;另一方面,本专利技术的预测模型中同时采用了组件的复杂性、组件内的内聚性以及组件之间的耦合性指标,而现有的以组件作为预测的对象的方法中,仅采用了其中的一种指标。实际上,组件的复杂性、内聚性以及耦合性共同影响了一个组件具有漏洞的数量和可能性,因此,同时使用三种指标更加合理。附图说明图1为本专利技术一种基于组件依赖图的软件安全漏洞预测方法流程图;图2为本专利技术具体实施例中Firefox的网络图;图3为本专利技术图2对应的组件依赖图。具体实施方式下面以针对开源软件项目Firefox的漏洞预测为例,详细给出漏洞预测过程。步骤一、建立所预测软件的组件依赖图一个软件系统可以看成是一组组件及其关系的集合。组件之间发生联系实际是组件中的成员之间在发生联系,因此组件之间的关系是由组件中成员之间的关系决定。从静态的观点看,组件的成员包括可执行代码和数据项。可执行代码与数据项之间的关系包括数据本文档来自技高网
...
一种基于组件依赖图的软件安全漏洞预测方法

【技术保护点】
一种基于组件依赖图的软件安全漏洞预测方法,其特征在于,包括以下步骤:步骤一、建立所预测软件的组件依赖图:所述组件是一个三元组C<DC,MC,RC>,其中,DC是共享变量或数据成员的集合,MC是函数或方法的集合,RC是组件中成员之间关系的集合;软件系统网络图定义为GSN(V

【技术特征摘要】
1.一种基于组件依赖图的软件安全漏洞预测方法,其特征在于,包括以下步骤:步骤一、建立所预测软件的组件依赖图:所述组件是一个三元组C&lt;DC,MC,RC&gt;,其中,DC是共享变量或数据成员的集合,MC是函数或方法的集合,RC是组件中成员之间关系的集合;软件系统网络图定义为GSN(Vd,Vm,Ec,Er,Ed,W),其中,Vd:是数据项节点的集合;Vm:是可执行代码节点的集合;是函数调用边的集合;是函数返回边的集合;是数据边的集合,包括数据读和数据写;W:表示边的权值集合;设P(m)表示函数m的参数个数,B(m)表示函数m的返回点个数,e&lt;m1,m2&gt;表示节点m1指向节点m2的边,如果e&lt;m1,m2&gt;∈Er,则W(e&lt;m1,m2&gt;)=B(m1);如果当m2∈Vd,则W(e&lt;m1,m2&gt;)=1;当m2∈Vm,则W(e&lt;m1,m2&gt;)=P(m2);将同属于一个组件的所有节点合并成一个节点,连接同一个组件的所有相同方向的边合并成一条边,边的权值求和;步骤二、计算步骤一所述组件依赖图中每个节点的网络属性值,该网络属性值即是建立预测模型的度量元指标;步骤三、从公开的软件漏洞库中搜集针对所预测软件的所有软件漏洞,建立该软件的历史漏洞库,并标明每...

【专利技术属性】
技术研发人员:危胜军林婷单纯胡昌振何涛
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1