基于Sigmoid函数的软件漏洞风险评价算法

2018-11-15 09:00
信息安全研究 2018年11期
关键词:折线图高风险漏洞

王 帆 洪 流 顾 欣

(工业和信息化部电子第五研究所 广州 510610)

2018年4月20日,在北京召开了全国网络安全和信息化工作会议,在会议上,习总书记指出:“信息化为中华民族带来了千载难逢的机遇”,“没有网络安全就没有国家安全,就没有经济社会稳定运行,广大人民群众利益也难以得到保障”[1].软件,作为信息系统的重要组成部分,作为信息化发展的重要基石,软件是否安全,直接决定了各类信息系统是否安全.信息系统安全了,信息产业才能健康稳定发展.因此,软件安全,对我国信息化产业的安全健康发展有十分重要的意义[2].

在考察软件产品安全性时,需要根据软件漏洞扫描、挖掘和渗透测试的结果,计算得到软件产品的总体风险值,以对软件产品的整体漏洞风险情况进行把控[3].但在现有安全测试及渗透测试中,通常仅考虑风险值最高的漏洞,以该漏洞的风险等级作为整个软件产品的风险等级,而不考虑漏洞数量对软件产品漏洞风险的影响;另一方面,现有的风险评估方法中,计算模型过于复杂,评价参考因素过多,评价周期过长,不利于在有限时间内了解软件产品的安全风险[4]情况.因此,本文综合考虑效率和风险分析等方面因素,提出基于Sigmoid函数[5]的软件安全风险评价算法,将软件产品中的单个漏洞风险与漏洞数量有机结合,以此来反映其整体漏洞风险情况.

图1 Sigmoid函数曲线图

1 Sigmoid函数简介

Sigmoid函数是一个在生物学中常见的S型的函数,也称为S型生长曲线.在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间.

Sigmoid函数由下列公式定义:

Sigmoid函数曲线由图1所示:

由Sigmoid函数曲线可以看出,在x从0趋近于无穷大的过程中,函数S(x)的取值从0.5无限趋近于1,因此,当漏洞数量不断增大时,可以使用该函数的修改函数来表现软件产品风险值无限接近于当前风险等级风险值上限的情况.

2 漏洞风险评价算法

2.1 漏洞风险评价公式编制原则与思路

在对Sigmoid函数曲线进行修改并编制漏洞风险评价公式时,需要按照以下3个原则进行考量:

1) 漏洞风险评价公式应遵循信息安全中的木桶原理,风险值应不低于软件产品中漏洞风险值最高的数值[6],当产品中存在漏洞等级为高的漏洞时,产品漏洞风险等级为高,当产品不存在高风险漏洞,仅存在中低风险漏洞时,则产品的漏洞风险等级为中;

2) 漏洞风险评价公式应考虑到同等级漏洞数量对整个产品漏洞风险的影响,满足同等级漏洞越多,产品漏洞风险越高的判定原则[7];

3) 曲线的图形、曲率应尽可能贴近真实风险情况,鉴于漏洞的数量只能为整数,所以风险值变化趋势图应由曲线变为由数个点构成的折线.

按照CVE中对漏洞风险值与风险等级的对应关系,当漏洞风险值评分为0~4(不包括4)时,漏洞等级为低;当漏洞风险值评分为4~7(不包括7)时,漏洞等级为中;当漏洞风险值评分为7~10时,漏洞等级为高[8].因此,在以上3个原则和CVE对漏洞等级的评价方法基础上,确定软件产品的漏洞风险等级为:当产品中存在高风险漏洞时,产品的漏洞风险等级为高;当产品中不存在高风险漏洞,仅存在中低风险漏洞时,产品的风险等级为中;当产品中仅存在低风险漏洞时,产品的风险等级为低.在不同的风险区间中,随着漏洞数量不断增大,产品的风险值也在各自的区间内不断递增,直到逼近其所属的风险等级上限.

2.2 漏洞风险评价公式

Sigmoid函数是在x从0趋近于无穷大的过程中,函数S(x)的取值从0.5无限趋近于1,其x值的范围不符合实际漏洞风险情况,在实际漏洞风险分析中,当x=0时,既系统不存在漏洞时,风险值应当为0,因此需要将函数曲线进行移动,将x=0时的S(x)值变为0,因此公式改变为

此时S1(x)的取值范围为0无限趋近于0.5,将公式值乘以2以取整,便于漏洞的计算,此时公式改变为

此时S2(x)的取值范围为0无限趋近于1,根据漏洞风险值取值不低于存在的风险最高漏洞的风险值,不超过当前区间范围的原则,需要将S2(x)的取值范围进行扩充,引入m值,m代表当前系统中存在的漏洞中最高的风险值,因此,对于存在高风险漏洞的系统,其漏洞风险值f(x)的取值范围应为从m无限趋近于10,对于不存在高风险漏洞但存在中风险漏洞的系统,其漏洞风险值f(x)的取值范围应为从m无限趋近于7,对于仅存在低风险漏洞的系统,其漏洞风险值f(x)的取值范围应为从m无限趋近于4.

因此,将漏洞风险评价公式按照风险等级高、中、低3个区域分别制定各自区域的公式,其中高风险级别风险值计算公式为

其中,x为高风险漏洞数量,m为高风险漏洞中最高的风险值,7≤m≤10.高风险级别的产品漏洞风险折线图如图2所示(以m=8为例):

图2 m=8的软件漏洞风险折线图

中风险级别风险值计算公式为

其中,x为中风险漏洞数量,m为中风险漏洞中最高的风险值,4≤m<7.中风险级别的产品漏洞风险折线图如图3所示(以m=4为例):

图3 m=4的软件漏洞风险折线图

低风险级别风险值计算公式为

其中,x为低风险漏洞数量,m为低风险漏洞中最高的风险值,0≤m<4.低风险级别的产品漏洞风险折线图如图4所示(以m=2为例):

图4 m=2的软件漏洞风险折线图

根据3个风险等级的计算公式,可以将扫描出的CVE漏洞的数量及漏洞中的最高风险值带入公式进行计算,就可以得出相应模块的漏洞风险值,便于对软件产品各模块代码的安全性进行比较,从而评判出各模块代码的安全状况.便于开发人员整体把控软件产品的安全性,快速定位安全性最差的代码模块,提高软件产品的整体安全状况.

3 结果比较

本文以之前进行过安全测试的某系统为例,在使用市面上某款漏洞扫描软件进行扫描时,得到的扫描结论如图5所示.从中可以看出,风险分数为1 024时,安全状态为极度危险,但无法判断该系统在极度危险中的危险程度.

图5 漏洞扫描结果图

查看系统中漏洞风险值最高的漏洞情况,如图6所示:

图6 最高风险值漏洞情况

从图6可以看出风险值最高的漏洞,其风险值为9,属于高风险区间,因此使用7≤m≤10时的公式进行风险计算.此时根据漏洞扫描的结果,x取值为21,计算风险值如下:

最终计算得到结果:f(x)=9.999 9,约等于最高风险值10.从实际状况也可以看出,该系统由于存在21个高风险漏洞,且漏洞的风险值很高,因此也处于极度危险的情况,风险计算出的得分与实际情况相符,且该风险值能够便于管理员更好地了解风险严重程度.

4 总 结

随着信息化发展的不断加深,信息安全的重要性也越来越得到社会各界的重视,软件作为信息化产业的重要环节,软件产品的信息安全也具有十分重要的意义.根据上述章节中的软件漏洞风险计算公式,得到在软件开发过程中各模块代码的风险情况,便于提高软件的代码质量,增强软件安全性.在下一步研究工作中,将对漏洞风险分析公式进行进一步细化,增加同威胁级别的漏洞相关性考量,使公式能够更加准确地体现和反映代码的漏洞风险,更好地为国家信息化安全稳定发展服务.

猜你喜欢
折线图高风险漏洞
漏洞
上海市高风险移动放射源在线监控系统设计及应用
高风险富水隧道施工技术经济分析
数据增加折线图自动延长
让折线图显示在一个单元格中
再多也不乱 制作按需显示的折线图
高风险测试对英语学习的反拨效应研究
美化Excel折线图表
三明:“两票制”堵住加价漏洞
漏洞在哪儿