点击蓝字 关注我们
企业漏洞管理
实践分享
PART 1
前言
漏洞管理说简单也简单,说难也难。说简单是因为当前网络上有大量的知识分享可以指导我们开展漏洞管理工作,说难是因为落地很难,主要难点并不在于如何发现漏洞,也不在于漏洞的识别范围。现在的漏洞探测工具不仅能基于网络端口进行探测,也能通过agent收集主机内部的漏洞。其主要难点在于如何对漏洞进行评价?哪些漏洞需要打补丁?哪些漏洞可以不管?以及该如何恰当地处置漏洞?
PART 2
关注风险
关注漏洞管理的朋友应该能感觉到,现在漏洞扫描器的探测范围越来越广,不但包含端口探测结果,还包含主机内部的探测结果和SCA扫描结果。这也就导致了扫描器输出的数据量急剧增加,因此,在这种情况下,漏洞信息也需要进行降噪。我认为,降噪的核心就是转变关注点,从关注漏洞本身的脆弱性,转变为关注漏洞带来的风险。
从国标(GB/T 24364)和国际指导文件(nist 800-30)中我们可以看到,漏洞本身具备脆弱性,但脆弱性并不会直接造成影响,脆弱性只有被威胁利用才能造成影响,漏洞给企业带来的损失是通过风险来衡量的,风险才是企业安全治理的核心。
PART 3
定义风险
在考虑如何定义风险之前,我们要先想明白一个问题,那就是我们定义风险是用来做什么的?在我看来,我们定义风险最大的用处就是通过风险确定漏洞的最小容忍度。哪些漏洞可以不管,哪些漏洞必须打补丁,哪些漏洞可以采取缓解措施用来替代补丁。
其实,国标GB/T20984中已经给我们提供了风险评估的指南,但问题在于,其评估流程和评估方法过于重载,无法很好地适用于企业内部的漏洞管理工作,所以我们需要参考该标准制定适合自己的风险评估标准,在制定时需要重点考虑便利性和通用性。
我们参考了nist800-30中的风险框架模型和国标GB/T20984中的矩阵法,设计了适用于企业内部的风险评估矩阵,以便能够快速判断漏洞对应的风险。
首先,我们来定义风险计算所需的三个因子即威胁、事件发生可能性和脆弱性(暂时未考虑资产重要性因子)。我们将漏洞等级作为脆弱性因子,利用成熟度作为事件发生可能性的因子,暴露位置作为威胁因子,根据这三个维度使用矩阵法计算出风险等级。
漏洞等级这里我们直接沿用CVSS,因为CVSS是当前最为流行且权威的度量和评级标准,现有的漏洞扫描工具基本上都能够支持,能够保证风险计算的通用性,在这里我就不多赘述了。
利用成熟度这里我们需要给漏洞打标签,通过标签区分漏洞被利用的难易度。
主动利用:指的是现阶段就可以被利用并且造成影响的漏洞,例如下图中展示的redis未授权访问;
存在poc标签:指的是当前存在利用工具,但无法被证实能够直接产生影响的漏洞,例如下图展示的这两个漏洞;
无标记:指的是现阶段没有任何证据证明该漏洞能被利用并产生影响。
Ps:关于利用成熟度标签的来源,我推荐使用阿里云漏洞库和NIST漏洞库,因为可以通过编写脚本自动化获取漏洞对应的成熟度标记。
暴露位置,就是漏洞可以从哪里被利用,目前我设计了3类暴露位置,互联网、内部网络和操作系统内部。
最终依据漏洞级别、利用性标签和暴露位置,我们可以形成一个风险识别矩阵,来定义漏洞的风险级别。示例如下:
PART 4
处置漏洞
定义了风险之后,我们需要定义能够实施的处置措施。这里,我将处置措施分为了四类(参考ISO27002):
漏洞修复:通过补丁修复漏洞,以消除其对系统的影响
漏洞缓解:采取措施减轻漏洞的影响,例如:
1、限制对受影响系统的访问权限(采取更加严格的访问控制措施);
2、隔离受影响的系统或组件,以减少漏洞造成的损害(删除或停用对应jar包等);
3、采取入侵监测与防护措施(部署主机防护程序、采用WAF进行防护等)。
漏洞消减:删除存在漏洞的组件,完全消除漏洞造成的损害。
漏洞接受:接受漏洞所带来的安全风险,并采取措施对安全事件进行监控和管理,以降低其对系统的影响。
最终我们需要将风险级别与处置措施进行对应,并规定修复SLA,示例如下:
PART 5
结语
这篇文章分享的核心内容就是需要根据风险来定义处置策略,但安全并不是业务的绊脚石,双方有着共同的目标,即业务在健康的环境下安全运行。漏洞管理做的再好也不能面面俱到。遇到业务和安全存在冲突的时候需要具体问题具体分析,一起探索一个双方都能接受的方式实现共同目标。
END
往期精彩合集
● A Day in the Life of a Cyber Threat Analyst 网络威胁分析员的一天
● PE文件格式
● 车联网安全思考
长
按
关
注
联想GIC全球安全实验室(中国)
原文始发于微信公众号(联想全球安全实验室):企业漏洞管理实践分享