信息安全漏洞全生命周期管理
2012-06-09付俊冯运波杨光华张峰粟栗
付俊,冯运波,杨光华,张峰,粟栗
(1 中国移动通信研究院,北京 100053;中国移动通信集团公司,北京 100032)
1 漏洞
漏洞,在维基百科中又称为计算机安全隐患,指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性、完整性、可用性、访问控制、监测机制等面临威胁。
漏洞难以避免,一个系统自发布之日起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也可能会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。
所以关于漏洞的解决方案没有一劳永逸的方法,需要一套完整的漏洞分析、发现和管理的机制。本文以某省曾出现的网上营业厅重置任意用户密码漏洞为例,阐述了漏洞的生命周期管理体系。
2 漏洞的生命周期
漏洞从产生至消亡,在整个生命周期中,可分为如下几个阶段:漏洞产生,漏洞发现,漏洞公开,漏洞管理和漏洞消亡。几乎任何一个安全漏洞在其生命周期过程中都有被恶意用户利用的风险,但是在不同阶段,其风险类型也并不相同。用图形来表示安全漏洞整个生命周期阶段与风险的关系,如图 1所示。
图 1 漏洞生命周期风险图
以某网上营业厅重置任意用户密码漏洞为例,在编码阶段,没有对用户提交的数据进行有效校验,导致存在严重逻辑错误,攻击者可以重置任意用户网上营业厅登录密码。该漏洞虽然存在于现网,但在未被发现之前,其风险最低;一旦被发现,在公开之前,其漏洞细节和利用方法往往掌握在少数人手中,这些人可能是业界安全人员,也可能是地下黑客组织,其风险很高,但由该漏洞产生的后果或受影响的程度是未知的,称之为黑色风险;如果漏洞出现在用户端,则漏洞会由官方公开,并同时公布修复方法或修复补丁,由用户自行修复,如果漏洞出现在服务端,则漏洞的公开和修复管理是同时进行的,该阶段的风险是可以做到预知和监控的,称为灰色风险;最后是漏洞的消亡,即漏洞生命周期的最后终止阶段。
2.1 漏洞的产生阶段
2.1.1 漏洞产生阶段分析
很多因素可能导致漏洞的产生,主要在设计和编码阶段引入,大致可分为以下两类。
(1)设计缺陷:系统或软件在设计阶段,可能没考虑到安全因素或安全机制设计不健全,则必然会产生安全漏洞。如TCP/IP的漏洞,TCP/IP现在已经广为应用、但是它却是很早以前设计出来的。因此,存在许多不足造成安全漏洞在所难免,例如smurf攻击、IP地址欺骗以及SYNflood等。
(2)编码缺陷:由于编程人员的水平问题,经验或当时安全技术和方法所局限,或者未按安全设计进行编码实现,使得系统存在一些安全隐患。无论是服务器程序、客户端软件还是操作系统,都可能会存在不同程度的缺陷。
2.1.2 漏洞产生阶段防护措施
针对上述漏洞产生的原因分析,制定有效的管理方法,能够在漏洞的产生阶段对漏洞进行有效预防,避免漏洞带来的风险,减少后期修复的成本。
(1)设计缺陷:在设计阶段,充分考虑各种可能出现的安全漏洞与风险,使用各种安全设计方法和工具进行软件安全建模,制定相应的安全机制。
(2)编码缺陷:针对软件在编写过程中的漏洞和问题引入,可采取以下措施合理改善软件源头带来的漏洞:加强技术人员的安全意识,提高安全技术,确保高质量代码的完成同时不留下后门等一系列安全隐患;严格安全设计进行编码,避免在编码阶段漏洞的引入。
2.2 漏洞的发现
2.2.1 漏洞的常见发掘手段
安全漏洞的挖掘与发现机制有很多,主要包括下述方式。
(1) Fuzz测试(黑盒测试):是一种特殊的黑盒测试, 通过输入随机构造的数据,使得软件出错甚至崩溃。Fuzz测试的用例一般是大量的能引起软件产生异常的数据。Fuzz测试记录了大量的异常信息,为漏洞分析提供了原材料。 分析人员从这些信息中筛选出可能存在漏洞的信息, 并通过原测试用例再次进行测试、分析,最终确定漏洞是否存在。
(2) 白盒测试(源码审计):现在有了一系列的工具都能协助发现程序中的安全BUG。这类测试通常由厂商自己完成,通过开发人员的单元测试,发现代码中的安全缺陷并进行修复。
(3) 灰盒测试(IDA反汇编审计):这和上面的源码审计非常类似,对分析对象不是源码,而是可运行的程序或系统,但IDA是一个非常强大的反汇编平台,能够支持基于汇编码进行安全审计。
(4) 动态跟踪分析:记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其它的污点传播跟踪也属于这类。
2.2.2 漏洞发现后的处理方法
对于已发现的安全漏洞,主要依据以下流程进行处理。
(1) 记录漏洞存在点及详细信息。
(2) 对漏洞进行验证,确认为系统真实存在的安全隐患。
(3) 分析漏洞的危害程度。
(4) 尝试进行解决和修复。
(5) 确认漏洞是否已被修复,或该漏洞不会产生任何安全问题。
2.3 漏洞的公开
2.3.1 漏洞的分类
根据漏洞的公开方式可分为以下几种:
(1) 官方公布:这类漏洞通常由于补丁的发布而进行公开,厂商对已发现的安全漏洞进行修补并发布补丁,期望通过补丁的方式避免用户由于该漏洞带来的损失。这类公开方式通常为定期公开,或即时公开,根据不同公司的补丁策略方式有所不同。
(2) 善意公开(白帽子):一些技术人员或普通用户在使用或对产品的尝试过程发现了一些漏洞,并不对所有用户进行公开,而是通过提醒系统的对应厂商的形式进行漏洞的修补,这类漏洞的公开通常是善意的,发现者通常不会利用发现的漏洞对系统进行攻击或破坏。
(3) 恶意利用(黑客):攻击者利用不断的探索和尝试发现系统存在的漏洞,并利用该漏洞进行操作以获取利益或进行恶意破坏等。这类漏洞一旦由恶意攻击者进行公开后,带来的损失比较巨大。
值得一提的是,在计算机领域中,有一类漏洞称为0day漏洞,通常是指还没有补丁的漏洞。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。而0day攻击则是指利用这种漏洞进行的攻击。提供该漏洞细节或者利用程序的人通常是该漏洞的发现者。0day漏洞的利用程序对网络安全具有巨大威胁。
2.3.2 漏洞公开后的采用措施
系统官方应立即对已公开的漏洞进行修复,及时发布漏洞补丁,并在发现漏洞至发布补丁期间采取必要的措施避免给用户带来损失或不良体验。
用户应即时或定期对系统或应用软件进行更新,对发布的补丁及时进行安装与升级,确保自身系统不被攻击者利用。
2.4 漏洞的管理
安全漏洞被披露或公开后,对漏洞进行有效管理,降低漏洞带来的影响。对于服务端出现的漏洞,可先评估漏洞的威胁等级,以及漏洞利用的实施成本,再制定漏洞的修复方案,对于威胁等级较高且实施成本较低的漏洞,需要及时进行修复,对于威胁等级较低且实施成本较高的漏洞,可酌情根据实际情况制定防护措施,如加强访问控制隔离等措施。对于出现在用户端的漏洞,及时发布更新补丁或临时解决方案,避免影响的扩大。
2.4.1 漏洞的分级
为了减少主观臆测对漏洞等级评定的影响,应对不同程度的漏洞进行分级,合理定制解决方案,确保系统安全,可根据以下属性对漏洞进行等级分析:
(1)潜在危险程度(风险从高至低):远程获取系统权限或使系统拒绝服务;本地越权访问;敏感信息泄露。
(2)漏洞利用实施成本(风险从高至低):只有极少人掌握该项漏洞利用技术,或只有在某些特殊情况下才具备该漏洞的利用条件;对漏洞利用人员有一定门槛要求,且需要投入一些资源,如租赁和搭建钓鱼网站服务器;漏洞利用非常简单,存在自动化的利用工具。
(3)影响用户程度(风险从高至低):对所有用户有影响;对关键用户或部分用户有影响;对极少数用户有影响;对用户无影响。
(4)修复成本(人力和时间):修复成本较高,大于重新进行开发的成本;修复成本中等,时间较长;修复成本较低,人力时间消耗较少。
根据以上几项对漏洞进行定级,根据每项进行加权处理,得到每个漏洞的处理优先级,再进行下一步操作。
2.4.2 漏洞的管理修复方式
根据漏洞产生的生命周期,对漏洞进行不同的管理和修复。漏洞管理方式主要分为主动修复及漏洞规避等方式。
(1)主动修复:对于服务端漏洞,可修改代码或系统升级进行主动修复;对于客户端漏洞,可发布更新补丁,由公众进行升级修复,升级方式可直接在官网下载或使用第三方工具进行自动更新;
(2)漏洞规避:对于服务端漏洞,可使用其它方式,如部署安全防护设备或增加访问控制策略的方式进行漏洞规避;对于客户端漏洞,可使用临时解决方案,如个人防火墙、禁用漏洞端口或服务以及注册表修改等方式进行漏洞规避。
2.5 漏洞的消亡
漏洞的消亡通常通过补丁进行修复,在保证不引进新的漏洞前提下完成以往漏洞的修补,达到漏洞消亡的目的。
除对漏洞进行修复以外,还可以对软件进行新版本更新,彻底从根源上去除漏洞的载体,避免后期产生安全问题。
在对漏洞进行处理后,应记录有关漏洞共性信息,确保再次开发或应用时不会重蹈覆辙,对以往漏洞进行研究,避免类似问题再次产生。
3 总结
针对当前安全漏洞生命周期理论化以及系统化方面不足的问题,本文首先系统阐述安全漏洞生命周期的各个阶段及其风险特点,然后从各个阶段如何防控与修复漏洞进行阐述,对系统安全漏洞的危害性进行全面评估。为安全人员快速、有效地制定有针对性的防御策略提供有力的理论依据。
[1] Rozenblit M. Security for Telecommunications Network Management[M].Wiley-IEEE Press, 2000.
[2] Jacobs S. Engineering Information Security: The Application of Systems Engineering Concepts to Achieve Information Assurance[M]. Wiley-IEEE Press, 2000.
[3] Douligeri C, Serpanos D. Network Security:Current Status and Future Directions[M]. Wiley-IEEE Press 2007.