数据库的安全威胁与漏洞分析

传统的信息安全解决方案主要是通过网络传输通道加密、PKI或增强身份认证、防火墙、IPS、堡垒机等技术构成综合的信息安全应对策略,但这些方案在现实中变得弱不禁风,大量信息泄露事件频繁爆发,数据库在近期泄露事件中成为了主角。


 

这与我们在传统的安全建设中忽略了数据库安全问题有关,在传统的信息安全防护体系中数据库处于被保护的核心位置,不易被外部黑客攻击,同时数据库自身已经具备强大安全措施,表面上看足够安全,但这种传统安全防御的思路,存在致命的缺陷。

数据库安全威胁不单纯是数据的问题还和数据库所属的网络环境有密切关系,本文我们分三部分来讨论:一是数据库本身存在重大安全缺陷,二是数据库漏洞分类说明,三是各种数据库的风险说明。

C28596Q12Z94

 

一、数据库自身存在安全缺陷

传统观念认为数据库系统本身已具备完整的安全保障机制,存储在数据库中的数据足够安全,在2005年Oracle的总裁Larry Ellison宣布Oracle数据库是世界上最为安全的数据库系统,但事实上以Oracle为首的数据库系统存在重大安全缺陷,主要体现在存储层、系统层、应用层三个方面。

1、存储文件解析后为明文

数据库的数据是存储在物理文件里,这些数据按照数据库自定义的格式组织在数据库中,但这些数据本质上都是明文存储;主流的大型数据库数据文件的组织结构主动或被动公开化,只要得到这些数据文件,存储的数据其实就是透明的。

这些存储文件包括数据库的数据文件、备份文件、日志文件等;这样只要能够访问或得到数据库存储文件,就可以获得数据库中的信息。比如:在互联网上公开的MyDUL软件就是可以成功解析Oracle数据文件获得明文信息的开源工具。

数据库的明文存储也会因为磁盘、备份磁带的丢失引起泄密,如香港花旗银行在装修期间丢失了服务器引起的客户资料泄密。同时,明文存储使只要能够访问到数据库文件的人员,都可以看到数据库中的存储内容,如网络管理员或者攻入到内网当中的黑客。

2、数据库系统存在安全漏洞

数据库往往被认为具备较为完备的安全机制,从身份认证、访问控制、到通讯加密,但事实上数据库也存在诸多的安全漏洞,当前在国际漏洞库CVE上公布了2000多个数据库漏洞,号称最为安全的Oracle数据库就占了1000多个;这些漏洞大多是国际上的安全专家对数据库安全状况进行研究后发现的,包括提权漏洞(如从普通用户提权到DBA用户)、缓冲区溢出漏洞(通过该漏洞可以使数据库执行非法代码或瘫痪)、系统注入漏洞(通过该漏洞在调用系统函数时执行任意非法SQL代码)。

黑客已经利用这些漏洞,对数据库进行了多次侵入;虽然数据库厂商据此提供了大量补丁包,但这些补丁包所修复的漏洞数量也是有限的,同时大量的应用系统出于系统稳定性和兼容性的原因也无法实现补丁升级;因此这些漏洞依然是黑客入侵数据库的常用通道,同时随着这些安全问题的广泛传播,数据库维护人员和程序人员也使用这些技术手段进行越权工作,对数据库造成了巨大威胁。

3、数据库应用访问控制缺陷

数据库应用的访问控制机制,依然是典型的三元组,也就是主体、客体和操作,其中主体主要是数据库用户或角色,客体是数据库对象,操作是典型的DDL、DML、ACL语句和某些维护操作;但对这些操作的具体内容和影响不再做控制,如是否采用了欺骗性的SQL语句、是否返回了大量数据无法控制。

当前广为流传的SQL注入就是大量地利用这些控制缺陷,在SQL语句中构造永真表达式、执行外部调用、非法登录应用系统进行批量数据导出。
同时某些程序人员也恶意利用这些控制缺陷,在应用程序中埋下后门程序,对有价值的信息进行非法下载。


 

二、数据库漏洞分类繁多

数据库漏洞的存在有多种方式,由于每一个现实的场景由多维组合而成,因此数据库漏洞对应也可以从不同角度归类划分。这种分类将更有利于我们掌握对每种漏洞的防护技术。

1、从漏洞作用范围划分

远程漏洞:攻击者可以利用并直接通过网络发起对数据库攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞危害网络上可辨识的数据库。此类漏洞为黑客利用漏洞的主力。
本地攻击:攻击者必须在本机拥有访问权限的前提下才能发起攻击的漏洞。比较典型有本地权限提升漏洞,这类漏洞在数据库中广泛存在,能让普通用户获得最高管理员权限。

2、从漏洞危害等级划分

漏洞危害等级主要按照CVE的评分来划分,分为三个档次:0-3(LOW);4-6(MEDIUM)、7-10(HIGH)。 洞的危害等级划分是根据一个漏洞对数据库造成什么影响来划分的。对数据库的响的机密性、安全性、可用性影响越大威胁等级越高,反之危险等级越低。

3、从受影响系统划分

现有的操作系统多种多样,并且每种系统对应多个版本。操作系统主要分为以下五类:dos 系统、windows 系统、unix 系统、linux 系统和其他操作系统。由于漏洞注入点地址和操作系统具体版本有着直接的关系,所以需要按照操作系统的具体版本来划分。以oracle为例,由于不同的操作系统对缓冲区溢出的防守机制不同,导致这类漏洞基本不存在跨平台的可能。

4、从漏洞的危害范围划分

漏洞危害是指漏洞被利用后造成的各种危害。本文的危害是指对数据库的直接危害或利用数据库对其他系统造成的危害。这些危害可以分为四类:危害数据库自身,这类漏洞主要是对数据库自身进行攻击;危害数据库所在服务器,这类漏洞通过数据库对服务器进行攻击;危害数据库所在系统的文件系统,这类漏洞通过数据库对服务器上的文件系统做攻击;危害数据库所在网络上的其他平台,这类漏洞通过数据库对网络上的其他数据库和服务进行入侵。

5、从黑客入侵数据库技术划分

SQL注入

本文说所的SQL注入不是web端的,而是针对数据库自身的SQL注入漏洞,两者差异很大。PL/SQL注入的思想非常简单,在正常的sql语句中通过嵌入、注释、转义符等手段加入针对数据库漏洞或数据库设置缺陷,逐步获取数据库中更高权限,最终获取数据库中敏感信息或直接夺取数据库DBA权限,进而可能对数据库所在的网络环境和本地服务器造成危害。

缓冲区溢出

缓冲区溢出:这里所说的缓冲区溢出是指源缓冲区的数据向小于自身位数的缓冲区复制数据时,超越目标缓冲区的位数边界,并且数据库未对存入数据进行边界判断,最终导致目标缓冲区爆满。目标缓冲区内存改变程序控制流、夺取操作系统、禁止访问等多种结果。

其他

弱口令:通常指容易被别人猜测到或被破解工具破解的口令均为弱口令,其中很大一部分是数据库默认口令,其中有一部分是因为缺省密码产生的。

撞库:通过已收集到的在其他服务中注册的用户名和密码,对目标数据库进行访问尝试。由于很多人习惯用相同密码和账号,因此成功登陆到目标数据库的可能性大大提高,达成盗取大量敏感信息的目的。

暴力破解:通过数据字典(密码库)对数据库的用户名进行碰撞,最终碰出可以用于访问数据库的用户和密码组合。

其他的分类有从数据库漏洞成因、结果、位置时序划分,在这里就不详述了。


 

三、各种数据库风险说明

国内数据库市场大部分被国外五大数据库长期占据。事实上,数据库由30年左右的发展基本形成高度垄断,5大商用数据库占据全球90%以上的份额,五大数据库包括:Oracle、DB2、Informix、Sybase、SQL Server,下面本文就市场上最多的三种数据库做详细说明。

从各数据库整体上说防护的总体原则就是实施权限最小化、无用功能要禁用、核心数据要加密、密码安全要重视、及时安装数据库升级包这五点。

1、Oracle数据库的数据库安全建议

外部进程安全防护

Oracle 的监听端口TNS Listener默认情况下没有设置口令,任何可以连接到系统的人都可以管理它。设置口令可以防止对Listener的无授权管理。TCP有效节点可以用来允许某些主机连接到数据库服务器而阻止其他服务器连接。关闭xml数据库,XML Database 提供两个服务:一个是FTP一个是HTTP,这2个端口都存在大量缓冲区溢出漏洞,缓冲区漏洞会导致黑客直接入侵数据库所在操作系统。通过被控制的操作系统,进而入侵操作系统上的数据库和整个操作系统所在网络。

Oracle核心DBMS安全防护

首先就是数据库账户问题,入侵Oracle 最简单且常见的方法是猜测用户名和口令,这就需要安全管理员锁定或终止未使用账户,创建新用户要注意赋予账户的权限和有意义的名称,消除弱口令、更改默认口令、定义并实施良好的口令策略,良好的口令策略应保持口令没30天更换一次 ,短期内不会使用重复的口令。

为了便于管理用户,应为每个用户账号分配一个特定的拥有最小特权的角色,一切遵循最小特权原则,应用程序账号角色,应为每个应用程序分配一个特定的拥有最小特权的角色。

其他的还有限制默认CONNECT角色、关闭远程身份验证、启用用户账户的失败锁定保护、启动SQL92 security 参数、取消任何不必要的权限、启用数据字典保护。

2、SQL Server数据库安全建议

在安装SQL Server时用集成的windows 身份验证而不是用本地的sql server身份验证来设置服务器,可大幅简化安全管理,降低被口令嗅探器攻击的风险。设置口令强度足够的数据库口令,来抵御来自网络的暴力破解。

SQL Server可以安装在多种windows文件类型上。把NTFS用于SQL SERVER系统,会带来2方面好处:首先可以在文件与目录上设置单个访问权限,其次可以利用微软的EFS对整个文件系统做加密。

默认情况下安装SQL Server时,guest 账户将授予除了模型数据库外的所有数据库中的公有角色成员。可以考虑在windows系统中禁止guest账户,并且撤销guest账户对除master和tempdb外所有数据库的访问权限。保留master和tempdb的访问权是SQL Server正常运行的需要。

删除不需要的功能、服务和存储过程。sql server安装过程中会安装许多功能、服务和存储过程。一定要及时打补丁包,很多黑客挖漏洞的手法就是微软出补丁后,对没装补丁的和安装补丁的数据库做逆向反编译,通过对比挖掘漏洞。如果你的数据库因为种种原因无法打数据库补丁,建议您在您的数据库和网络之间串入一个带有虚拟补丁功能的数据库防火墙。

3、MySQL数据库安全建议

由于mysql 多被部署在web端,所以web端本地操作系统的安全对MySQL至关重,和前两种数据库不同,在这需要强调下web端给MySQL带来的风险。

(1)不要使用nobody身份运行mysql。因为如果其他进行也使用了这个账户运行。会出现多进程共享1个账户,其中一个进程被攻击意味着全部都被攻击。例如APACHE和MySQL都用nobody身份运行,则控制apache的人可以控制MySQL。

(2)使用–chroot(非windows下)可以确保攻击者没有能力去读或写操作系统的配置文件。

(3)关闭不必要的服务或守护进程。主机上攻击者能访问的组件越多,攻击者从这些组件发现机会进而入侵主机的可能性就越大。还是最小原则,不用的组件全部关闭。

(4)MySQL缺乏对蛮力攻击的防御能力,而又有固定用户root,建议root使用一组强力密码,并把root用户重名成其他较复杂的名称。

共有 0 条评论

Top