即使在设计、实现、测试过程中加入了安全因素,最终的软件产品仍可能存在漏洞。当漏洞被发现后,迅速确认、响应、修复漏洞是非常重要的。大型的软件公司都会有自己的安全响应队伍专职处理安全事件,在发现漏洞后的第一时间采取措施,以保护客户的利益不被侵害。
在计算机应急响应方面,国内还处于比较落后的状态。据我所知,目前为止只有腾讯公司设立了独立的安全响应部门,专职负责产品的漏洞修复、补丁发布等安全工作。大多数软件公司还是把QA的主要精力放在产品的功能测试上,而不是安全方面。
此外,国内官方的应急响应站点大多只是转载微软的补丁列表和安全公告,专业的应急响应队伍和漏洞分析队伍很少,相反倒是一些民间的黑客组织在这方面显得更加专业。
一般来说,根据漏洞发布的不同方式,安全响应工作的流程也不一样。
在安全技术界有一个“潜规则”,就是当漏洞被发现后应该直接报告软件厂商,并在官方补丁发布前暂时对外保密。由安全专家发现的漏洞、公司内部的开发人员、测试人员等发现的漏洞、用户在使用产品时发现的问题、CERT和CVE等安全机构上报的漏洞等都会遵守这个“潜规则”。这种漏洞上报方式有时被称作“Responsible Post”(负责任的公布)。
这种情况下对漏洞的响应可以大致分为以下4个阶段。
(1)发现漏洞通知厂商:漏洞首先被报告给安全响应中心,经过初步的鉴定,安全响应队伍会向漏洞上报者确认已经收到漏洞报告,此刻正在进行分析。
(2)确认漏洞和风险评估:安全响应队伍会联系漏洞上报者和相关产品的开发部门,以获得更多的技术细节,如POC、产品源代码等,用于重现漏洞。有时甚至会将漏洞上报者、产品开发团队召集在一起进行讨论。当漏洞被成功重现后,会为漏洞定一个威胁等级。
(3)修复漏洞:安全响应队伍和开发队伍协商决定解决方案,并确定响应工作的时间表。开发部门开始修复漏洞。当补丁完成后,需要在所有受影响的产品版本上进行严格的测试。在此期间,安全响应队伍必须和漏洞上报者保持密切的联系,沟通响应工作的进度。以上所有的工作一般在一周内完成。
(4)发布补丁及安全简报:对外公布安全补丁,通知所有用户(大客户)patch漏洞;在网站上发布安全简报,其中会特别感谢上报漏洞和协助修复漏洞的安全研究人员。
大多数漏洞公布都遵守软件厂商的公布流程,即先通知软件厂商、协助修复并完成安全响应、最终由软件厂商发布补丁,并在安全简报中公布漏洞同时感谢漏洞上报者。但不负责任的0day曝光也会时常遇到,这时的安全响应将会变成应急响应。
之所以说0day曝光是一种不负责任的做法,是因为这样的公布方式没有给软件厂商足够的响应时间。这种情况是我们最不愿意见到的,但却是黑客最期待见到的。这样的漏洞公布方式会引起全世界的关注,很多媒体会立刻进行转载和报道。由于软件厂商没有充足的时间进行安全响应,攻击者很可能会抢在安全补丁发布之前写出exploit,这时所有的用户都有可能成为攻击目标,甚至威胁到整个Internet。
0day响应的步骤会有所不同,集中体现在对外界的消息发布上。
(1)漏洞被直接公布:安全响应队伍开始分析漏洞;软件公司的对外发言部门和技术支持部门开始回应媒体的质询;安全响应部门在网上公开回应漏洞发布者;这次回应的主要内容是告诉外界漏洞已经开始处理,并建议用户采取临时性措施在补丁发布前保护自己的利益。
(2)确认漏洞和风险评估:所做的事情和正常流程基本一样,包括确认漏洞、重现攻击等。当漏洞被彻底分析清楚时,安全响应中心应该立刻更新先前发布的公告。
(3)修复漏洞:相关开发部门以最快的速度完成补丁。这种响应要求迅速、准确,熬夜奋战一般是在所难免的。
(4)发布补丁及安全简报:向所有用户发布官方补丁,并更新最终的安全公告。在这种情况下,软件厂商绝不会致谢漏洞公布者。
可见,直接公布安全漏洞会使整个Internet处于0day危机之中,大量用户将受到攻击的威胁。事实上,攻击者一般不会主动公布自己掌握的0day漏洞,大多数情况下是使用0day进行攻击时不慎被截获而曝光的。0day漏洞是攻击者眼中最有价值的技术资料,而且一旦被发现往往被视为商业机密。
本文节选自电子工业出版社2008年4月出版的
《0day安全:软件漏洞分析技术》一书。