先来看一组数字。根据Meta Group的报道,2002年全年共发现和公布了4192个漏洞。同时,实际统计表明,平均一个系统管理员全年共花费1920个工时,将4个补丁打到120台服务器上,即在一个服务器上打一个补丁的平均时间大约为4小时,其中包括备份安装测试等环节。假设该名系统管理员具有良好的技能训练,可以在20分钟内阅读研究完一个漏洞及其补丁解决方案,那么,4192个漏洞总共需要172个人天。再假设其中只有10%的漏洞适用于自己的网络环境,这样413个漏洞,每个相应的补丁部署在10台服务器上,共需要2065个人天(即同样配置的服务器数量为10个左右)。我们可以看到,这两个人天数字加在一起,差不多是10个全职安全管理员一年的工作量,这里还没有考虑对厂家发表的补丁进行测试和验证的过程,也没有考虑打补丁失败造成的二次资源消耗。可以看到,补丁和漏洞管理已经成为一个很大的资源漏斗,占用大量的系统管理员资源。
上面的数字说明打补丁对于任何一个企业来说,代价是非常昂贵的。这种成本包含有收集、了解、测试、部署、备份恢复以及风险等成本。但是,不打补丁的“成本”是数据失密、丢失、窜改、拒绝服务、系统恢复以及其它无形损失等。如果用一个简单的数学模型来表达以上有关打补丁的成本分析,即打补丁的最佳时机的话,就是下面的成本不等式:部署成本+补丁失败概率×失败成本 <= 攻击入侵概率 × 攻击入侵成本。
通常认为,对于发现的漏洞和补丁应该尽快安装部署。但是,按照美国USENIX组织发表的一个针对CVE漏洞和补丁的研究数字表明,大概有18%左右的补丁会稍后进行重新发布,即出现了所谓的补丁的补丁,即意味着,在第一时间安装上的补丁,有18%的可能会带来新的缺陷或安全漏洞。随着时间的推移,补丁本身的安全性和稳定性会上升,由此造成的损失风险相应降低。
如图2所示,我们必须在早打带来的补丁失败风险与晚打带来的入侵攻击风险之间进行平衡,选择较好的时机。从对实际CVE漏洞和补丁的研究来看,新发表的补丁大概需要2周到4周左右的时间稳定下来,换句话说,在补丁发表后两周,考虑尽快部署可能是较为稳妥的时间。如果不满足这样的时间延迟,则需要自己建立更强大快速的安全实验室,专门来研究测试补丁。将大规模部署补丁的时间延迟提早到1周以内。
从前面的不等式我们看出,降低部署成本、减小补丁失败成本,可以提高补丁管理决定的安全防御强度。降低部署成本的有效办法就是“自动化”,建立覆盖全网的自动化补丁知识库和管理系统,集中收集、建立、分发补丁包。这样的自动化系统可以带来下面所列的明显收益:将整个补丁分发过程的时间窗口减小到极低;将每服务器/每补丁数小时的工时成本降到很低,即分发安装费用降到接近零,只剩下制作软件分发包、检查测试补丁安装结果的“工时”成本;保证全网在补丁配置管理方面的一致性。另外,减小补丁失败成本的办法是对补丁进行有效测试,具体做法可以是购买专业厂家的服务,也可以建立自己的安全实验室。这样的投资对于分布式的大企业来说,具有非常高的投资回报率。
企业的安全策略:漏洞或者缺陷是对安全的威胁,安全策略应该覆盖针对漏洞和补丁的相应策略,补丁和漏洞管理流程则应该与上述策略相适应。
资产管理:如果已经具备了资产管理体系和流程,补丁和漏洞应该与具体的资产和相关业务优先级对应起来,正确设计不同关键性资产的特定流程。
补丁管理是当前IT系统管理中越来越繁杂的内容。补丁全部不打,安全风险太大;什么补丁都打,一方面成本很高,另外补丁本身带来的风险也不可忽略。本文建议:通过漏洞的影响度、流行度、简易度乘积(IPS)与资产联系起来判断该漏洞的安全风险,设定阈值。一般情况下,留出2周左右的测试时间,尤其是对于电信、银行等关键性应用场合。部署自动化的补丁管理工具可以大幅减小漏洞收集和补丁部署成本,从而在相同投入情况下,提高补丁管理带来的安全强度。补丁管理必须建立相应的流程,该流程应充分参考借鉴ITIL的最佳实践,融入到整体的IT基础设施管理体系中去。