一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

铁路系统开源软件分层分类定量风险评估方法与流程

2022-05-27 01:44:11 来源:中国专利 TAG:


1.本发明属于铁路信息系统安全技术领域,具体涉及铁路系统开源软件的分层分类定量风险评估方法。


背景技术:

2.开源软件由于具有开放、共享、商用免费、功能灵活等特点,不断融入到各行各业的信息化建设中。随着开源软件的不断发展和完善,铁路信息系统在其开发完善过程中不可避免地需要使用开源软件。现在的铁路系统也演进为高度复杂的系统,其涉及面广,因素多,如何保障铁路系统正常运行,特别是铁路系统的安全运行,已经成为涉及国民经济和人民生命财产安全的关键问题。开源软件是铁路信息系统供应链的重要组成,虽然其源代码可见,但是由于未参加开发过程,质量无法评估。开源软件在带来便利的同时,也给系统带来了一定的安全风险。
3.开源软件是一个新名词,它被定义为描述其源码可以被公众使用的软件,简单来说,开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制地使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至编制成衍生产品再次发布出去。然而对于开源软件,由于涉及到源代码、版权及其再发布问题,衍生出了若干开源协议,通过osi(open sourceinitiative)组织批准的开源协议已达61种。
4.当前已有一些技术实现了对开源软件的风险分析,但是这些技术对开源软件进行风险分析主要是对单一开源软件进行漏洞检测或者许可证检测等,评估指标单一,而开源软件中这种层层关联的依赖性,造成了非常隐蔽和复杂的攻击面,已有的工作无法对在系统中使用该开源软件进行全面的风险评估,同时也没有强调对不同的开源软件进行分类分析。
5.因此,提出铁路系统开源软件的分层分类定量风险评估方法具有十分重要的现实意义。


技术实现要素:

6.本发明的实施例提供了铁路系统开源软件的分层分类定量风险评估方法,以对铁路系统中所使用的开源软件存在的安全风险进行高效、准确的定量评估。
7.为了实现上述目的,本发明采取的技术方案是:
8.第一方面,提供铁路系统开源软件的分层分类定量风险评估方法,包括:扫描信息系统中开源软件源代码库;
9.获取有依赖开源软件的风险评估值out1;
10.获取无依赖开源软件的风险评估值out2;
11.根据协议权重λ和代码权重μ对out1和out2进行加权平均化处理;
12.该加权平均化处理为val=λ*out1 μ*out2;
13.获取开源软件的风险评估值val。
14.进一步地,铁路系统开源软件的分层分类定量风险评估方法,该获取有依赖开源软件的风险评估值out1,包括:
15.扫描依赖文件内容;
16.获取直接依赖的开源组件;
17.对开源组件进行递归依赖分析;
18.构建依赖关系树;
19.获取许可协议;
20.构建许可协议关系树。
21.进一步地,铁路系统开源软件的分层分类定量风险评估方法该许可协议关系树作为许可协议兼容性判别模型的输入,判断协议冲突的情况;
22.输出为许可协议的风险评估值out1。
23.进一步地,铁路系统开源软件的分层分类定量风险评估方法该获取无依赖开源软件的风险评估值out2,包括:
24.将其本身作为根节点构建单节点依赖关系树。
25.进一步地,铁路系统开源软件的分层分类定量风险评估方法,以该依赖关系树作为漏洞风险评估模型的输入;
26.对树中的所有节点对应的开源组件分别进行漏洞风险检测;
27.获取风险指数;
28.对风险指数进行求和处理后得到树所对应的待评估软件的漏洞风险评估值 out2。
29.进一步地,铁路系统开源软件的分层分类定量风险评估方法,包括:
30.该依赖文件为开源软件中记录依赖关系的文件;
31.该依赖关系的文件为java代码中的.pom文件和/或python代码中的 requirement.txt文件;
32.该许可协议关系树为以依赖关系树中每个节点对应的开源组件其所使用的许可协议作为许可协议关系树节点。
33.进一步地,铁路系统开源软件的分层分类定量风险评估方法,包括该协议权重λ为根据待检测开源软件所使用的所述开源许可协议在主流开源软件中使用率;该代码权重μ为根据待检测开源软件受欢迎程度进行计算。
34.进一步地,铁路系统开源软件的分层分类定量风险评估方法,包括,该许可协议兼容性判别模型为根据osi组织批准的61种开源软件协议之间的条款兼容性情况构造的有向图,用于对输入的许可协议关系树进行分析。
35.进一步地,铁路系统开源软件的分层分类定量风险评估方法,包括该漏洞风险评估模型为对树中每个节点对应的开源组件源代码进行漏洞检测,用于对输入的依赖关系树进行分析。
36.第二方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的处理程序,该处理器执行所述程序时实现上述铁路系统开源软件的分层分类定量风险评估方法。
37.本发明的有益效果:
38.由上述发明的实施例提供的技术方案可以看出,本发明基于树结构,采取分层分类的方式,实现了对铁路信息系统中所使用的开源软件进行定量风险评估,弥补了对单一开源软件进行许可证分析或漏洞检测的方法评估不全面、效率低下的不足,更好地识别出由于开源软件中层层关联的依赖性而造成的非常隐蔽和复杂的攻击面,本发明提出的风险评估方法先对待评估开源软件进行分类,根据类别再从许可协议兼容性和漏洞检测两个层面进行定量评估,评估高效全面,结果直观易于分析,层次特征明显。
39.本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
40.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
41.附图1为本发明实施例提供的铁路系统开源软件的分层分类定量风险评估方法流程图。
具体实施方式
42.下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
43.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
44.为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
45.本发明实施例设计了铁路系统开源软件的分层分类定量风险评估方法,基于树结构,采取分层分类的方式对信息系统中所使用的开源软件进行定量风险评估,得到了比传统方法更可靠直观的评估结果。
46.本发明实施例提供的铁路系统开源软件的分层分类定量风险评估方法处理流程如附图所示,包括如下的处理步骤:
47.步骤s1扫描铁路信息系统中使用的各开源软件源代码库,由是否存在依赖文件对开源软件进行分类。
48.步骤s2对有依赖开源软件构建依赖关系树和相应的许可协议关系树。
49.对于有依赖开源软件,根据该软件所选用的编程语言,选取相应的检测工具对依赖文件的内容进行分析,得出该软件直接引用的开源组件,并对依赖的开源组件进行递归分析。如使用java编写的开源软件,使用maven管理项目的依赖可以通过mvn dependency:tree命令导出该软件的所有软件依赖到txt文件中,筛选出所有依赖的开源组件构建出待评估软件的依赖关系树。以待评估开源软件作为根节点,其直接依赖的开源组件作为第一层子节点,其余层根据前一层节点的依赖进行构建。同时,扫描依赖关系树中每个节点对应的开源组件的源代码库中的“license”文件、源代码注释、readme文件文本内容,获取每个开源组件使用的许可协议,依据开源组件在依赖关系树中的位置,构建相应的许可协议关系树。
50.步骤s3对无依赖开源软件构建依赖关系树。
51.由于无依赖开源软件不依赖任何其他的开源组件,则构建的依赖关系树为单节点树。
52.步骤s4由判别模型对s2得到的许可协议关系树进行分析。
53.此阶段使用许可协议兼容性判别模型对待评估软件中依赖的所有开源组件使用的许可协议进行分析,进行第一层风险评估。预设开源软件协议条款兼容性指示图,通过对osi批准的61中开源协议的条款内容兼容性情况进行梳理得出指示图,指示图为有向图,在指示图中,若箭头从协议a指向协议b代表协议a和b兼容,即使用它们的两个开源组件可以组合使用,且最终取决于协议b。若两个协议间没有单向箭头,则代表两个协议不兼容,相应的两个开源组件不可组合使用。强限制协议可向下兼容弱限制协议,最终许可协议应取决于强限制协议,限制条件完全对立的两个协议则无法兼容。判别模型基于指示图,对许可协议树进行分析,检测出许可协议存在兼容冲突的开源组件个数以及不兼容条款情况,最终输出结果为待检测软件中许可协议的风险评估值。
54.步骤s5由漏洞风险评估模型对s2、s3得到的依赖关系树进行分析。
55.此阶段使用漏洞风险评估模型对待评估软件的源代码进行漏洞检测与风险评估,由于我们的工作主要是铁路系统开源软件的分层分类定量风险评估方法的设计,漏洞检测过程不是我们关注的重点,因此这里对于漏洞检测方法不作过多描述。采用现有的基于聚类的漏洞检测方法,当获得漏洞检测结果后,匹配预设的漏洞数据库,数据库基于现有的权威漏洞库进行设计,对漏洞的描述主要包括漏洞编号、漏洞类型、漏洞概述、cwe类型、cvss分数。根据匹配结果,取cvss分数乘以权重q得到该开源组件的风险指数,权重值q与该开源组件在依赖关系树中的层次成反比,即最底层叶子节点权重值设为默认值1,其上一层节点权重值设为2,以此类推,q值越大,说明该开源组件与待检测开源软件依赖性越强,最后将每个节点的风险指数值进行求和处理得到该树的风险评估值out2,即待评估开源软件的漏洞风险评估值,同时将所有检测到的漏洞生成检测报告进行存储。风险评估值out2计算公式为:
[0056][0057]
其中out2表示该开源软件的源代码漏洞风险评估值,qi表示树的第i层所占权重,cvss为该节点含有的漏洞的cvss分数。
[0058]
步骤s6对s4、s5的输出结果进行数据处理。
[0059]
计算协议权重λ和代码权重μ,使用下面的公式对s4、s5阶段得到的输出结果out1和out2进行加权平均处理,最终得到在铁路系统中使用该开源软件的风险评估值val,计算公式为:
[0060]
val=λ*out1 μ*out2[0061]
可以看到,风险评估值val综合考虑了许可协议兼容性情况以及源代码中存在的漏洞风险,并结合了开源软件的具体依赖情况,val的数值越大,说明在当前系统中使用该开源软件所面临的风险越大。
[0062]
综上所述,本发明实施例的铁路系统开源软件的分层分类定量风险评估方法基于树结构,采取分层分类的方式,实现了对铁路信息系统中所使用的开源软件进行定量风险评估,弥补了对单一开源软件进行许可证分析或漏洞检测的方法评估不全面、效率低下的不足,更好地识别出由于开源软件中层层关联的依赖性而造成的非常隐蔽和复杂的攻击面,得到了比传统方法更可靠全面的评估结果。
[0063]
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的组件或流程并不一定是实施本发明所必须的。
[0064]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0065]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献