从漏洞看补丁管理策略
 
软件的缺陷或漏洞随时都可能造成系统崩溃或者入侵,所以,一旦发现漏洞,人们通常的第一反应是——赶快打补丁。但是,几乎每天都有新的软件缺陷、漏洞被发现,伴随着无数相应的补丁或者临时解决办法,安装如此多的漏洞和补丁是需要占用大量资源的。另外,仓促推出的补丁有时未必安全,相反,或许还会引入稳定性、性能等方面的隐患。怎么办?看来,漏洞管理不是仅仅打补丁就够了,这里面隐藏着许多学问。权威人士告诉你:打补丁前要作衡量,建议通过漏洞的影响度、流行度、简易度乘积(IPS)与企业资产联系起来,以判断该漏洞的安全风险,设定阈值,最终达到科学地打补丁的目的。
补丁和漏洞管理 形成资源漏斗

先来看一组数字。根据Meta Group的报道,2002年全年共发现和公布了4192个漏洞。同时,实际统计表明,平均一个系统管理员全年共花费1920个工时,将4个补丁打到120台服务器上,即在一个服务器上打一个补丁的平均时间大约为4小时,其中包括备份安装测试等环节。假设该名系统管理员具有良好的技能训练,可以在20分钟内阅读研究完一个漏洞及其补丁解决方案,那么,4192个漏洞总共需要172个人天。再假设其中只有10%的漏洞适用于自己的网络环境,这样413个漏洞,每个相应的补丁部署在10台服务器上,共需要2065个人天(即同样配置的服务器数量为10个左右)。我们可以看到,这两个人天数字加在一起,差不多是10个全职安全管理员一年的工作量,这里还没有考虑对厂家发表的补丁进行测试和验证的过程,也没有考虑打补丁失败造成的二次资源消耗。可以看到,补丁和漏洞管理已经成为一个很大的资源漏斗,占用大量的系统管理员资源。
任何一名企业管理者对这些系统和安全隐患不能视而不见,但是,这样巨大的资源消耗也承受不起,必须找到更有效的解决途径,以填补这个巨大的“漏斗”,这些解决途径可以包括以下措施:引入知识共享或者外部知识库(专业服务),减少漏洞和补丁学习过程消耗;建立有效的补丁管理流程和备份回卷计划;引入自动化的补丁和漏洞管理工具,加速布部过程
补丁的风险成本

上面的数字说明打补丁对于任何一个企业来说,代价是非常昂贵的。这种成本包含有收集、了解、测试、部署、备份恢复以及风险等成本。但是,不打补丁的“成本”是数据失密、丢失、窜改、拒绝服务、系统恢复以及其它无形损失等。如果用一个简单的数学模型来表达以上有关打补丁的成本分析,即打补丁的最佳时机的话,就是下面的成本不等式:部署成本+补丁失败概率×失败成本 <= 攻击入侵概率 × 攻击入侵成本。
通常我们使用三个数字来描述一个漏洞的安全风险特性:I(影响度,即攻击入侵成本)、P(流行度,即多大范围内传播了该漏洞)、S(简易度,即利用该漏洞的难易)。后两者的乘积(P×S)大约可以反映该漏洞导致攻击入侵的概率。不等式的右边I×P×S代表的是该漏洞对应的不打补丁成本,本质上反映的是补丁管理决定的防御强度(是否可以承受),参照图1的示意图。在曲线的最高点,按照100%安全的要求,即使是IPS乘积为0的补丁(即风险极小)也必须完全部署。这时的代价极高,通常不符合安全风险管理的投资回报原则。
从上面的不等式,我们可以看出,左面的部署成本和补丁失败成本决定了“合算”的IPS强度。如果我们将部署成本降下来,通过测试将补丁失败的几率降下来,则可以在保证投资回报的前提下,将补丁引起的损失和成本降到最低,就可以提高IPS决定的防御强度。
寻找打补丁最佳时机

通常认为,对于发现的漏洞和补丁应该尽快安装部署。但是,按照美国USENIX组织发表的一个针对CVE漏洞和补丁的研究数字表明,大概有18%左右的补丁会稍后进行重新发布,即出现了所谓的补丁的补丁,即意味着,在第一时间安装上的补丁,有18%的可能会带来新的缺陷或安全漏洞。随着时间的推移,补丁本身的安全性和稳定性会上升,由此造成的损失风险相应降低。

如图2所示,我们必须在早打带来的补丁失败风险与晚打带来的入侵攻击风险之间进行平衡,选择较好的时机。从对实际CVE漏洞和补丁的研究来看,新发表的补丁大概需要2周到4周左右的时间稳定下来,换句话说,在补丁发表后两周,考虑尽快部署可能是较为稳妥的时间。如果不满足这样的时间延迟,则需要自己建立更强大快速的安全实验室,专门来研究测试补丁。将大规模部署补丁的时间延迟提早到1周以内。
自动化打补丁 降低部署成本

从前面的不等式我们看出,降低部署成本、减小补丁失败成本,可以提高补丁管理决定的安全防御强度。降低部署成本的有效办法就是“自动化”,建立覆盖全网的自动化补丁知识库和管理系统,集中收集、建立、分发补丁包。这样的自动化系统可以带来下面所列的明显收益:将整个补丁分发过程的时间窗口减小到极低;将每服务器/每补丁数小时的工时成本降到很低,即分发安装费用降到接近零,只剩下制作软件分发包、检查测试补丁安装结果的“工时”成本;保证全网在补丁配置管理方面的一致性。另外,减小补丁失败成本的办法是对补丁进行有效测试,具体做法可以是购买专业厂家的服务,也可以建立自己的安全实验室。这样的投资对于分布式的大企业来说,具有非常高的投资回报率。
补丁本身的特点注定补丁管理不可能有很好的预见性,但是作为管理者,在流程和手段上,却不能不预见到补丁管理的特性和意义,及其实施中的具体问题。所有的补丁分发与管理工具只是帮助加速或者自动化相应的策略和过程,提高效率和质量而已,但是不可能改变逻辑。如果补丁管理流程本身是混乱的,那么自动化的后果也肯定是混乱的。
补丁管理相关策略和流程的设计需要充分考虑以下相关的重要流程环节,包括:

企业的安全策略:漏洞或者缺陷是对安全的威胁,安全策略应该覆盖针对漏洞和补丁的相应策略,补丁和漏洞管理流程则应该与上述策略相适应。
变更和发布管理:补丁的制作、测试、批准和部署应该纳入标准的变更和发布流程。如果当前尚没有完整的变更和发布流程,则在补丁管理流程中应该明确定义补丁的优先级或者分类、制作、测试、批准和部署以及验证等相关职位、职责和时间。
配置管理:按照ITIL的最佳实践,完整一致的中心配置管理数据库(CMDB)是保持高水平IT服务管理的保障。定义补丁和漏洞相关的配置管理条目,并通过流程保证及时正确地更新。

资产管理:如果已经具备了资产管理体系和流程,补丁和漏洞应该与具体的资产和相关业务优先级对应起来,正确设计不同关键性资产的特定流程。
备份恢复和业务连续性管理:补丁部署的前后都会与企业的备份恢复以及业务连续性管理有关,需要充分参考、在必要时修改更新备份恢复和业务连续性计划。
紧急响应:所有的补丁管理流程必须设计相应的紧急响应流程。从前面的数字,我们知道,即使是官方正式发表的补丁,也有相当的概率会出现自身新的缺陷或漏洞,与企业系统的应用关联在一起,补丁的漏洞是绝对不可忽略的。流程中必须保证这样的恢复和紧急响应环节。
管理层应该综合考虑相关的各个方面,充分借鉴在IT服务管理或者ITIL方面的实践经验,或者借助于外部的专业服务,设计与整体IT基础设施管理系统相匹配的补丁管理策略和操作流程。同时,在应用前面的自动化补丁管理系统之前,应该充分调查研究具体的IT环境和整个补丁生命周期的各种问题,设计较为周密的补丁管理策略和流程,至少应该明确定义补丁管理的使用范围、补丁优先级、补丁分发包的制作和测试、批准与分发安装、安装后测试、备份恢复计划等。

补丁管理是当前IT系统管理中越来越繁杂的内容。补丁全部不打,安全风险太大;什么补丁都打,一方面成本很高,另外补丁本身带来的风险也不可忽略。本文建议:通过漏洞的影响度、流行度、简易度乘积(IPS)与资产联系起来判断该漏洞的安全风险,设定阈值。一般情况下,留出2周左右的测试时间,尤其是对于电信、银行等关键性应用场合。部署自动化的补丁管理工具可以大幅减小漏洞收集和补丁部署成本,从而在相同投入情况下,提高补丁管理带来的安全强度。补丁管理必须建立相应的流程,该流程应充分参考借鉴ITIL的最佳实践,融入到整体的IT基础设施管理体系中去。
从漏洞看补丁管理策略_漏洞
图1 从风险管理角度看补丁管理
从漏洞看补丁管理策略_休闲_02
图2 寻找打补丁的最佳时机