张震 张洪刚
(中国移动通信集团广东有限公司深圳分公司 深圳 518048)
自2009年各运营商重组之后,业务竞争不断加剧,各运营商对业务安全和稳定运营的要求不断提高。但是由于运营商的网络规模庞大,系统和业务类型复杂,系统中存在一些具备较高风险等级的安全漏洞在所难免,为安全生产埋下了未知的安全隐患[1]。以下为两个现实案例。
案例1:2009年深圳移动在例行业务系统安全漏洞扫描中发现“手机投注系统”的Windows操作系统中存在一个高危漏洞,如表1所示。
MS08-067漏洞可以伪造的RPC请求,能允许远程执行代码,导致完全入侵用户系统,以System权限执行任意指令并获取数据,并获取对该系统的控制权,造成系统失窃及系统崩溃等严重问题,所幸该漏洞被及时发现并实施补丁加固,并未造成损害。
表1 “手机投注系统”Windows操作系统存在漏洞
案例2:运营商计费出错案例:2010年2月,北京联通公司某用户突然欠费682元停机,后经调查是联通计费系统存在漏洞,导致计费错误,该用户后通过法律途径讨回经济损失。
从上述案例可以看出,无论是支撑系统还是业务系统,漏洞一旦被威胁(内外部人员、恶意程序)所利用,将产生严重的安全事故,所造成的损失(品牌损失、经济损失等)不可估量,及时发现漏洞并修复漏洞对于运营商的基础安全运维显得至关重要。
理解漏洞的内涵是发现漏洞并加固漏洞的前提。自计算机系统诞生起,人们对漏洞研究就开始了。Denning在《Cryptograph and Data Security》一文中从访问控制的角度给出了漏洞的定义。他认为,系统中主体对客体的访问是通过访问控制矩阵实现的,这个访问控制矩阵就是安全策略的具体实现,当操作系统的操作和安全策略之间相冲突时,就产生了安全漏洞。从一般意义上理解,漏洞是系统内在的脆弱性,或者称为弱点,其可以被外来威胁所利用,并对主体带来损失,图1显示了威胁、漏洞和风险[2]三者的关系。
图1 威胁利用漏洞导致风险
从业务系统漏洞的发展趋势来看,应用层面的漏洞的爆发数量将大幅度领先于操作系统层面的漏洞,主要原因如下:
(1)以微软为代表的操作系统及软件厂商遵照ISO27000系统安全标准[3](包括SSE-CMM工程成熟度要求)实施OS软件开发,其系统开发过程不断完善,系统漏洞大规模爆发的可能性不断减小;
(2)随着B/S架构应用软件开发方式的普及,据统计,基于Web应用系统的漏洞在已发现的漏洞中占据了80% 以上的比例,如图2所示。
图2 网络、操作系统、应用漏洞数量Source: SANS.ORG
业务系统漏洞的现状从以下两个方面考虑:漏洞分布现状和漏洞处理现状。
2.3.1 业务系统漏洞的分布现状
运营商的业务系统的漏洞分布状况和整个安全领域的漏洞分布状况是一致的,即网络、操作系统层面的漏洞占据比例逐渐降低,而应用层面的漏洞所占的比例将逐渐加大。
2.3.2 业务系统漏洞的处理现状
然而就目前运营商对漏洞的重视程度而言,运营商把绝大部分的精力投放在系统和通用软件层面的漏洞发现和加固,比如Windows、Solaris等操作系统,以及Oracle数据库、Office办公软件等系统软件级别的漏洞。对于运营商的系统管理员和安全管理员而言,虽然对业务系统很了解,但是受限于自身安全技能,很难对业务系统的漏洞进行挖掘和处理。
为了更有效地实施漏洞挖掘和漏洞加固,有必要针对运营商的业务系统的特点建立漏洞分级体系,该体系涵盖了当前运营商的业务系统主流漏洞的类型并具备可扩展性。建立该体系的目的在于指导漏洞安全管理工作更有针对性地实施,并推动漏洞安全管理由系统软件层向业务应用层转变。本文从电信运营商的业务系统实际情况出发,建立漏洞三级分级体系。
运营商部署大量基于Windows、Solaris、UNIX等OS服务器/终端来承载业务,长久以来,这些设备的操作系统层的漏洞一直是运营商所关注的重点[4],而针对操作系统权限[5]的“争夺”是重点的重点:
(1)远程管理权限漏洞:攻击者无须一个账号登录到本地直接获得远程系统的管理员权限,通常通过攻击以root身份执行的有缺陷的系统守护进程来完成。漏洞的绝大部分来源于缓冲区溢出,少部分来自守护进程本身的逻辑缺陷。
(2)本地管理员权限漏洞:攻击者在已有一个本地账号能够登录到系统的情况下,通过攻击本地某些有缺陷的SUID程序,竞争条件等手段,得到系统的管理员权限。
(3)普通用户访问权限漏洞:攻击者利用服务器的漏洞,取得系统的普通用户存取权限。
(4)信息泄密漏洞:攻击者可以收集到对于进一步攻击系统有用的信息。这类漏洞的产生主要是因为系统程序有缺陷,一般是对错误的不正确处理。
(5)远程及本地拒绝服务:使系统或相关的应用程序崩溃或失去响应能力。
操作系统层的软件漏洞分级体系如图3所示。
图3 操作系统层漏洞分级
由于应用层软件的多样性和普遍性,使得应用层面的漏洞层出不穷。
(1)第三方应用程序软件漏洞:大量的第三方应用程序,如数据库软件领域的Oracle和MYSQL,文档编辑阅读领域的Adobe等,是安全漏洞的高发区。在2009年由CVE发布的数十个“0-day”安全漏洞,包含了Oracle Secure Backup Observiced.exe服务栈溢出漏洞,Adobe Reader Remote Code Execution 漏洞等。
(2)基于Web2.0的应用漏洞:在Web2.0的框架下,Java Applet、ActiveX、Cookie、AJAX等技术被大量应用,当用户使用浏览器察看、编辑网络内容时,采用了这些技术的应用程序会自动下载并在客户端运行,如果这些程序被恶意使用,便可窃取、改变或者删除客户的信息。
应用层的软件漏洞分级体系如图4所示。
业务层漏洞相对于操作系统的漏洞和通用应用层漏洞更为复杂和隐蔽,且在补丁加固过程中更为谨慎。如何挖掘业务层漏洞是今后运营商漏洞安全管理工作的重点和难点。
3.3.1 业务逻辑上的漏洞
业务逻辑在业务的规划、设计阶段已经制定完毕,在实现阶段直接体现在业务应用的代码中。如果存在业务逻辑上的漏洞,攻击者可以发动绕过认证或者计费等的攻击。
3.3.2 业务协议自身的漏洞
业务协议如GSM协议、WAP协议、SIP协议等,这些标准化的通信协议或多或少存在与生俱来的漏洞,可以被攻击者利用,如使用虚假主叫号码发送短信等。
3.3.3 业务流程上的漏洞
业务流程上的漏洞,比如采用类似于基于IP地址认证的比较简单的鉴权手段,在流程上为了保证效率而忽视了业务的安全性。
业务层的软件漏洞分级体系如图5所示。
图4 应用层漏洞分级
图5 业务层漏洞分级
在“全业务”运营时代,运营商对于网络的稳定和业务的可持续性提出了越来越高的要求,业务系统的漏洞是安全部门和外来威胁博弈的关键。本文从运营商安全管理的角度,建立了运营商的业务系统的漏洞分级体系,该体系涵盖了从操作系统层、通用应用层和业务层的漏洞分级,并具备可扩展性。从漏洞发展的趋势来看,应用层和业务层漏洞的数量将远超过操作系统层数量,且前者的危害性、破坏性更大。本文所提出的漏洞分级体系有助于运营商对业务系统的漏洞进行分级,分类,区别处理,在操作系统漏洞的挖掘和加固基础上,不断重视应用漏洞,尤其是业务漏洞的挖掘和安全加固。
[1] Harrs S著,张辉译. CISSP Certification ALL-in-One. 北京:清华大学出版社
[2] Jaquith A, 李冬冬译. Security Metrics: Replacing Fear, Uncertainty,and Doubt. 北京:电子工业出版社
[3] 孙强,陈伟,王东红. 信息安全管理-全球最佳实务与实施指南,北京:清华大学出版社,2004
[4] GB17859. 计算机信息系统安全保护等级划分准则. 1999
[5] NIST SP 800-55 Security Metrics Guide for Information Technology Systems, NIST, 2003