漏洞一旦被威胁成功利用就可能对资产造成损害,它存在于信息系统、软件、 硬件、协议、人员等各个方面。
漏洞管理也称脆弱性管理(Vulnerability Management),是指安全组织为了减少漏洞被黑客利用的机会,降低资产损害的可能性,对安全漏洞进行识别、验证、评估、处置等一系列措施的管理过程。
漏洞管理流程
在企业日常安全运营工作中,当发现安全漏洞时,安全人员会验证漏洞是否对业务有影响,并通过行业通用漏洞评估标准对漏洞进行评估及优先级划分,制定漏洞修复方案,并通知管理员进行修复,最后验证漏洞是否修复。
漏洞管理主要通过以下步骤来实现:
第一步,漏洞识别,通过对企业所有的资产进行识别及评估,发现可能存在的缺陷,比如通过漏洞扫描工具对信息资产进行安全扫描。
第二步,漏洞验证,验证在漏洞识别步骤发现的漏洞是否存在,比如验证漏洞在测试环境中是否存在。几乎所有的安全设备或系统都会存在误报率(False Positive Rate,FPR)和漏报率(False Negative Rate,FNR),所以重要的系统及漏洞应该进行人工验证。其中,误报率是指检测结果有漏洞,但实际上没有漏洞。而漏报率是指检测结果没有漏洞,但实际上有漏洞。
第三步,漏洞评估,这是对验证后的漏洞进行严重性评估的过程。常见的评估方法有 CVSS评分法,将漏洞分为低危、中危、高危和严重这 4 个等级。通过开展漏洞评估,对漏洞进行等级划分,确认漏洞的处理顺序。理想状态下,对于高危漏洞,管理员优先执行特定漏洞处理任务。
第四步,漏洞报告,这是将评估后的漏洞以及可能导致的风险、影响,通过各种不同的形式 报告给不同的受众。如高危漏洞影响应该报告给相应高级管理层,漏洞细节及解决方案应该报告 给相应业务及技术人员,以促进漏洞快速处理。
第五步,漏洞修复跟进,用于进行漏洞任务的跟踪工作,这样就可以更好地组织任务,掌握任务进度,从而提高工作效率。
当安全人员在进行日常安全扫描的时候发现了一个安全漏洞,通过资产管理平台查询到了漏洞所属业务或服务器的管理员,利用工单系统建立了一个工单,将任务分配给了相应的管理员。管理员收到工单后发现只有开发人员可以修复,他将工单转给了开发人员,开发人员修复漏洞并完 成了任务,安全人员验证完成后关闭工单,这是一个简单的漏洞处理过程。在这个过程中,安全人员会从工单系统上看到任务的进度,这样就可以更好地对漏洞周期进行管理,从而降低安全运营成本。
第六步,漏洞处置、结果验证及策略更新,通常是安全部门针对相应的安全漏洞提供相应的解决方案,针对漏洞处置结果的验证以及进行后续安全防护策略更新。
常见的处置方法主要包含以下几种。
-
修复:对于未安装系统补丁而导致的漏洞,安装补丁就是修复。
-
缓解:指通过采取一些基本不在受影响系统直接管辖范围之内的其他动作来降低风险,如网络安全域之间的防火墙用来缓解两个网域之间的病毒蔓延。
-
接受:就是选择既不修复也不缓解,承认并接受漏洞存在。
如果在某个环境的漏洞修复成本比风险可能造成的损失还要大,那么不选择处理,即选择接受,但采取接受处置则需要经过高层主管领导的许可和书面授权。
漏洞评估方法
目前业界广泛引用的安全漏洞主要来源有美国国家漏洞库(National Vulnerability Database,NVD)的通用漏洞利用库(Common Vulnerabilities Exposures,CVE),漏洞总数为225772个、通用缺陷枚举库(Common Weakness Enumeration,CWE),漏洞列表总数为937个以及国家互联网应急中心(CNCERT)发起的国家信息安全漏洞共享平台(China National Vulnerability Database,CNVD),漏洞总数为187773条。(漏洞数目统计截止到2024年3月)
漏洞基本格式如表所示:
漏洞名称 |
CNVD编号 |
CVE编号 |
CWE编号 |
Apache Log4j2 远程代码执行漏洞 |
CNVD-2021-95919 |
CVE-2021-44228 |
CWE-20 |
漏洞评估的方法主要有NVD的CVSS通用漏洞评估方法、CWE的CWSS常见漏洞评分系统以及国家标准漏洞划分指南等。
-
CVSS漏洞评估方法
通用漏洞评估方法(Common Vulnerability Scoring System,CVSS),是由NIAC发布、FITST维护的开放式行业标准,CVSS为NVD美国国家漏洞库,同时也为安全从业人员根据系统漏洞的特点与影响提供了一个开放式的评估方法。
CVSS3.1计算的分值是通过基础评分、时间评分以及环境评分三种维度计算得出。
通过三种维度的计算,最终得出漏洞得分以及对应的危险度,如表所示。
漏洞分值 |
危险度等级 |
0-3.9 |
低危 |
4.0-6.9 |
中危 |
7.0-8.9 |
高危 |
9.0-10.0 |
严重 |
下面是三种维度的具体介绍:
基础评分维度是指的是该漏洞本身可能造成的影响的评价分值,这是漏洞评估的静态分值,表中对应相关的参数与赋值。
维度项 |
维度子类 |
赋值描述 |
分值范围 |
可利用性 |
攻击途径AV |
网络N/相邻网络A/本地L/物理P |
0.85/0.62/0.55/0.2 |
攻击复杂度AC |
低L/高H |
0.77/0.44 |
|
所需特权PR |
无N |
0.85 |
|
所需特权PR 用户交互UI |
低L |
0.62(未改)、0.68(改变作用域) |
|
高H |
0.27(未改)、0.5(改变作用域) |
||
无N/必填R |
0.85/0.62 |
||
影响度 |
机密性影响C |
无N/低L/高H |
0/0.22/0.56 |
完整性影响I |
无N/低L/高H |
0/0.22/0.56 |
|
可用性影响A |
无N/低L/高H |
0/0.22/0.56 |
计算方法:
可利用性分值 = 8.22 * AV * AC * PR * UI
影响度分值计算与作用域是否改变有关,影响度参数根据作用域变化而变化,相应计算方法如下:
ISCbase(影响度参数)= 1 - [(1-C)*(1-I)*(1-A)]
当作用域不变,影响度分值 = 6.42 * ISCbase;当作用域变化,影响度分值 = 7.52 *(ISCbase − 0.029)− 3.25 *(ISCbase - 0.02) ^ 15
最终基础评分的计算方法为:
当影响度分值小于等于0,那么基础分值为0。
当影响度分值大于0且可利用度分值小于10时,作用域是不变,基础分值 = Roundup(影响度分值 + 可利用度分值);作用域变化,基础分值 = Roundup [1.08 * (影响度分值 + 可利用度分值)] 。
当影响度分值与可利用度分值大于10时,基础分值为10。
注:Roundup函数保留小数点后一位,当小数点后第二位大于零则向前进一。
以Apache Log4j2 远程代码执行漏洞(CVE-2021-44228) 为例CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S: C/C:H/I:H/A:H为例,通过上文的计算方法进行计算:
可利用度得分=8.22×0.85×0.77×0.85×0.85≈3.887
影响度参数=1−[(1−0.56)×(1−0.56)×(1−0.56)]=1−[0.44×0.44×0.44]≈1−0.085≈0.915
由于作用域改变,影响度得分=7.52×(0.915−0.029)−3.25×(0.915-0.02)15≈6.049
基础分值=Roundup[1.08×(1.08 + 9.936) ]= Roundup [1.08×11.016]≈11.8
计算结果:基础评分为 10,判定为严重漏洞,应该立即进行修复。
时间维度评分,在基础维度之上结合受时间影响的三个动态分值,进而评估该漏洞的动态分值,这里列举出三个与时间紧密关联的参数及赋值如表所示。
维度子类 |
赋值描述 |
分值范围 |
利用度E |
未定义X/未证明U/有POCP/有EXPF/自动化H |
1.0/0.91/0.94/0.97/1.0 |
补丁水平RL |
未定义X/官方补丁O/临时补丁T/临时解决方案W/不可用U |
1.0/0.95/0.96/0.97/1.0 |
报告可信度RC |
未定义X/未知U/有理由R/已确认C |
1.0/0.92/0.96/1.0 |
计算方法:
时间维度 = Roundup(基础分值 * 利用度 * 补丁水平 * 报告可信度)
以Apache Log4j2 远程代码执行漏洞(CVE-2021-44228) CVSS:3.1/AV:N/AC:L/PR:N/UI: N/S:C/C:H/I:H/A:H/E:H/RL:X/RC:C为例,此处示例已加上时间维度,根据计算方法计算得出:
时间维度= Roundup(10×1.0×1.0×1.0) = Roundup (10) = 10
计算结果:加上时间维度评分为 10,判定为严重漏洞,应该立即进行修复。
环境维度评分,评估漏洞会给业务造成多大影响取决于企业本身的实际环境,因此在这个维度中包括了关于企业自身环境评价,可以对影响得分值进行修定,这是根据用户实际环境需求结合上面两个维度的分值,最终确认的漏洞分值,如表所示。
维度项 |
维度子类 |
赋值描述 |
分值范围 |
可利用性 |
攻击途径MAV |
网络N/相邻网络A/本地L/物理P |
0.85/0.62/0.55/0.2 |
攻击复杂度MAC |
低L/高H |
0.77/0.44 |
|
所需特权MPR |
无N |
0.85 |
|
低L |
0.62(未改)、0.68(改变作用域) |
||
高H |
0.27(未改)、0.5(改变作用域) |
||
用户交互MUI |
无N/必填R |
0.85/0.62 |
|
影响度 |
机密性影响MC |
无N/低L/高H |
0/0.7/1.0 |
完整性影响MI |
无N/低L/高H |
0/0.7/1.0 |
|
可用性影响MA |
无N/低L/高H |
0/0.7/1.0 |
|
影响得分 |
机密性请求CR |
低L/中M/高H |
0.5/1.0/1.5 |
完整性请求CI |
低L/中M/高H |
0.5/1.0/1.5 |
|
可用性请求CA |
低L/中M/高H |
0.5/1.0/1.5 |
计算方法:
环境可利用性分值 = 8.22 * MAV * MAC * MPR * MUI
环境影响度分值计算方法参考环境影响度参数:
环境影响度参数计算ISCbase = Min(1- [(1 - MC * CR) * (1 - MI * IR) * (1-MA * AR)],0.915)
当作用域不变化:影响度分值 = 6.42 * ISCbase
当作用域变化:影响度分值 = 7.52 *( ISCbase − 0.029)− 3.25 *(ISCbase - 0.02)^15
最终环境评分的方法为:
当环境影响度分值小于等于0,那么环境分值为0;
当环境影响度分值大于0有两种算法:不含修正值,环境评价分值 = Roundup(Roundup (Min [(M.影响度分值 + M.可利用度分值),10])* 利用度 * 补丁水平 * 报告可信度)。如果含修正值,环境评价分值 = Roundup(Roundup (Min [1.08 * (M.影响度分值 + M.可利用度分值) ,10]) * 利用度 * 补丁水平 * 报告可信度)。Min函数是比较前后两值,此处取小者。
以 Apache Log4j2 远程代码执行漏洞 (CVE-2021-44228) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H/E:H/RL:X/RC:C/CR:M/IR:M/AR:M/MAV:N/MAC:L/MPR:N/MUI:N/MC:H/MI:H/MA:H,为例,根据上面的计算方法得出:
环境可利用性分值= 8.22×0.85×0.77×0.85×0.85≈3.887
环境影响度参数= Min(1−[(1−1.0×1.0)×(1−1.0×1.0)×(1−1.0×1.0) ], 0.915) = 0.915
由于作用域改变,
环境影响度分值=7.52×(0.915−0.029)−3.25×(0.915−0.02)15≈6.049
最终环境评分=Roundup (Roundup ( Min[1.08×(6.049+3.887), 10])×1.0×1.0×1.0) = 10
最终结果:漏洞得分为 10,所对应的危险级为严重,应该立即进行修复。
朋友们还可以通过 CVSS v3.1自动化工具进行计算,以 Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)为例,计算结果如图所示。
CVSS自动化计算结果图示
-
CWSS常见漏洞评分系统
常见弱点评分系统(Common Weakness Scoring System,CWSS)是由MITRE进行维护,为CWE(Common Weakness Enumeration,通用缺陷枚举)提供漏洞评估的方法,目前最新的版本为CWSS 1.0.1。
CWSS计算分值是通过三个度量指标分别由基本发现度量、攻击面度量以及环境度量结果计算得出。
基本发现度量(Base Finding),捕捉弱点的固有风险、对发现准确性的信心和控制的强度,相应评分参考如表所示。
指标子类 |
赋值描述 |
分值范围 |
技术影响(TI) |
关键C/高H/中M/低L/无N /默认D/未知UK /不适用NA/量化Q |
1/0.9/0.6/0.3/0 /0.6/0.5 /1/自定义 |
获得特权(AP) |
管理员A/部分特权用户P /普通用户RU/客人L/无N /默认D/未知UK /不适用NA/量化Q |
1/0.9 /0.7/0.6/0.1 /0.7/0.5 /1/自定义 |
获得特权层(AL) |
应用程序A/系统S/网络N /基础设施E/默认D /未知UK/不适用NA/量化Q |
1/0.9/0.7 /1/0.9 /0.5/1/自定义 |
内部控制有效性(IC) |
应用程序A/系统S/网络N /基础设施E/默认D /未知UK/不适用NA/量化Q |
1/0.9/0.7 /1/0.9 /0.5/1/自定义 |
找到信心(FC) |
无N/有限L/适度M/间接I /最佳B/完成C/默认D /未知UK/不适用NA/量化Q |
1/0.9/0.7/0.5 /0.3/0/0.6 /0.5/1/自定义 |
计算方法:
基本发现分值 = [ (10 * TI + 5*(AP + AL) + 5 * FC) * f(TI) * IC] * 4.0
如果 TI = 0,f(TI) = 0,否则 f(TI) = 1
攻击面度量(Attack Surface),攻击者必须克服的障碍,以利用弱点,相应评分参考表如示.
指标子类 |
赋值描述 |
分值范围 |
必备特权(RP) |
确信为真T/局部为真LT /确信为假F/默认D /未知UK/不适用NA/量化Q |
1/0.8 /0/1 /0.8/0.5/1 |
必填特权层(RL) |
无N/有限L/普通用户RU /部分特权用户P/管理员A /默认D/未知UK /不适用NA/量化Q |
1/0.9/0.7 /0.6/0.1 /0.7/0.5 /1/自定义 |
访问向量(AV) |
应用程序A/系统S/网络N /基础设施E/默认D /未知UK/不适用NA/量化Q |
1/0.9/0.7 /1/0.9 /0.5/1/自定义 |
认证强度(AS) |
强壮S/适度M/弱W/无N /默认D/未知UK /不适用NA/量化Q |
0.7/0.8/0.9/1 /0.85/0.5 /1/自定义 |
互动水平(IN) |
自动化A/有限T/适度M /机会O/高H/无互动NI/默认D /未知NK/不适用NA/量化Q |
1/0.9/0.8 /0.3/0.1/0/0.55 /0.5/1/自定义 |
部署范围(SC) |
所有A/适度M/罕见R /可能触及P/默认D /未知UK/不适合NA/量化Q |
1/0.9/0.5 /0.1/0.7 /0.5/1/自定义 |
计算方法:
攻击面分值 = [ 20 * ( RP + RL + AV ) + 20 * SC + 15 * IN + 5 * AS ] / 100.0
这会产生一个介于0到100之间的值范围,然后除以100。
环境度量(Environmental),特定环境或操作环境特有的弱点特征,相应评分参考表如示。
指标子类 |
赋值描述 |
分值范围 |
商业影响(BI) |
关键C/高H/中M/低L /无N/默认D/未知UK /不适用NA/量化Q |
1/0.9/0.6/0.3/0/0.6 /0.5/1/自定义 |
发现的可能性(DI) |
高H/中M/低L /默认D/未知UK /不适用NA/量化Q |
1/0.6/0.2/0.6 /0.5/1/自定义 |
剥削的可能性(EX) |
高H/中M/低L/无N /默认D/未知UK /不适用NA/量化Q |
1/0.6/0.2/0/0.6 /0.5/1/自定义 |
外部控制有效性(EC) |
无N/有限L/适度M /间接I/最佳B/完成C /默认D/未知UK /不适用NA/量化Q |
1/0.9/0.7/0.5/0.3 /0.1/0.6/0.5 /1/自定义 |
流行率(P) |
广泛W/高H/常见C /有限L/默认D /未知UK /不适用NA/量化Q |
1/0.9/0.8/0.7/0.85 /0.5/1/自定义 |
计算方法:
环境分值=[(10 * BI + 3 * DI + 4 * DI + 3 * P)* f(BI)* EC ] / 20.0
如果 BI = 0,f(BI) = 0;否则f(BI) = 1
CWSS常见弱点评分系统最终分值
计算方法:最终分值 = 基础发现分值 * 攻击面分值 * 环境分值
CWSS评分结果是在0到100之间。基础发现分值为0到100之间的值,攻击面分值和环境分值均为0到1之间的值。
以Apache Log4j2 远程代码执行漏洞为例,使用 CWSS 方法进行漏洞评估:
TI:C,1.0/AP:A,1.0/AL:A,1.0/IC:A,1.0/FC:N,1.0;
RP:T,1.0/RL:N,1.0/AV:A,1.0/AS:N,1.0/IN:A,1.0/SC:A,1.0;
BI:C,1.0/DI:H,1.0/EX:H,1.0/EC:N,1.0/P:NA,1.0。
为了可读性,矢量已被分成多行,每行代表一个度量组。
根据上文中的计算方法,计算过程如下。
第一步,计算基本发现分值。
{[10×TI + 5×(AP + AL)+5×FC]×f(TI)×IC}×4.0
f(TI) = 1
基础发现值={[10×1.0 + 5×(1.0 + 1.0) + 5×1.0]×1×1.0}×4.0
= [(1.0 + 10.0 + 5.0)×1.0 ]×4.0= 100
第二步,计算攻击面分值。
[20×(RP + RL + AV) + 20×SC + 15×IN + 5×AS ] / 100.0
= [20×(1.0+ 1.0 + 1.0) + 20×1.0 + 15×1.0 + 5×1.0 ] / 100.0
第三步,计算环境分值。
[(10×BI + 3×DI + 4×EX + 3×P)×f(BI)×EC ] / 20.0
f(BI) = 1
环境分值= [(10×1.0 + 3×1.0 + 4×1.0 + 3×1.0)×1×1.0] / 20.0
最后,得出最终分值。
100×1.0×1.0 = 100(高危)
最终分值为 100,所对应的危险级为高危,应立即进行修复。
-
国家标准漏洞划分指南
根据《GB/T 30279-2020 信息安全技术 网络安全漏洞等级划分指南》,这是由中华人民共和国国家质量监督检验检疫总局和中国国家标准化指导委员会发布,是现行的国家标准,其中漏洞评估和等级划分的计算方法的内容为安全从业人员进行漏洞评估提供了方法。
网络安全漏洞分级根据漏洞分级的场景不同,分为技术分级和综合分级两种分级方式,其中技术分级反映漏洞的危害程度,而综合分级反映在特定环境下漏洞危害程度。
网络安全漏洞分级过程包括分级指标和分级方法两方面内容,分级指标反映漏洞特征的属性,包括利用性指标类、影响程度指标类以及环境因素指标类三类指标。分级方法主要阐述漏洞分级的具体实现步骤和实现方法,包括漏洞指标类分级方法、漏洞技术分级方法和漏洞综合分级方法。
技术分级和综合分级两种分级方式的分级等级均为超危、高危、中危、低危四类。
国家标准漏洞分级指标,如表所示。
指标类 |
指标子类 |
赋值描述 |
分值范围 |
被利用性 |
访问路径 |
网络/邻接/本地/物理 |
分值1-9(参考此指南附录被利用性分值表) |
触发要求 |
低/高 |
||
权限要求 |
无/低/高 |
||
交互条件 |
不需要/需要 |
||
影响程度 |
保密性 |
严重/一般/无 |
分值1-9(参考此指南附录被影响程度分值表) |
完整性 |
严重/一般/无 |
||
可用性 |
严重/一般/无 |
||
环境因素 |
被利用成本 |
低/中/高 |
分值1-9(参考此指南附录环境因素分值表) |
修复难度 |
高/中/低 |
||
影响范围 |
高/中/低/无 |
通过对被利用性、影响程度和环境因素三个指标进行赋值,再根据赋值的结果对照标准中的分级表进行分级,再根据分级计算出结果,技术分级由利用性和影响程度两个指标得出,而综合分级则需再加上环境因素指标。
根据不同的情况,在标准中根据利用性分级表48种组合,影响程度分级表9种组合,环境因素分为27种组合,最终根据技术分级表21种结果对照得出漏洞技术分级,对照综合分级14种结果得出漏洞综合分级。(参考此指南附录技术分级表及综合分级表)
以Apache Log4j2远程代码执行漏洞(CVND-2021-95919)为例,根据《国标漏洞划分指南》的安全漏洞等级划分步骤:
第一步,通过确定访问路径的赋值为“网络”,触发要求赋值为“低”,权限要求赋值为“无”,确定被利用性指标为9。
第二步,通过分别确定保密性、完整性和可用性的影响赋值,确定影响程度赋值为“严重”,确定影响程度指标为9。
第三步,通过确定被利用成本为“低”,修复难度为“高”,影响范围为“高”,确定环境因素指标为9。
第四步,根据被利用性和影响程度指标赋值,漏洞技术分级的等级为“超危”。
最终,根据被利用性、影响程度和环境因素三大指标赋值,漏洞综合分级的等级为“超危”,最终得到结果如表所示。
漏洞编号 |
被利用性指标 |
影响程度指标 |
环境因素指标 |
技术分级 |
综合分级 |
|||||||
访问路径 |
触发要求 |
权限要求 |
交互条件 |
保密性 |
完整性 |
可用性 |
被利用成本 |
修复难度 |
影响范围 |
超危 |
超危 |
|
网络 |
低 |
无 |
不需要 |
严重 |
严重 |
严重 |
低 |
高 |
高 |
|||
CNVD-2021-95914 |
9 |
9 |
9 |
漏洞管理它不仅是安全运营工作关注的重点,同样是化被动为主动的防御手段,有效及持续的漏洞识别及管理,可以更好的收敛攻击面,降低企业产生风险的可能性,同时提高攻击者入侵的的成本及利用的时间。
原文始发于微信公众号(安全管理杂谈):聊聊漏洞管理那点事儿
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论