《第15章数据库系统安全_y概要》由会员分享,可在线阅读,更多相关《第15章数据库系统安全_y概要(54页珍藏版)》请在金锄头文库上搜索。
1、版权所有,盗版必纠,第15章 数据库系统安全,版权所有,盗版必纠,概论,随着计算机技术的飞速发展,数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。各种应用系统的数据库中大量数据的安全问题、敏感数据的防窃取和防篡改问题,越来越引起人们的高度重视。数据库系统作为信息的聚集体,是计算机信息系统的核心部件,其安全性至关重要,关系到企业兴衰、国家安全。因此,如何有效地保证数据库系统的安全,实现数据的保密性、完整性和有效性,已经成为业界人士探索研究的重要课题之一,本章就数据库系统安全做讨论。,版权所有,盗版必纠,目录,第15章 数据库系统安全 15.1 数据库系统安全概述 15.2
2、针对数据库系统的攻击 15.2.1 弱口令攻击 15.2.2 利用漏洞对数据库发起的攻击 15.2.3 SQL Server的单字节溢出攻击 15.2.4 SQL注入攻击 15.3 数据库攻击的防范措施 15.3.1 数据库攻击防范概述 15.3.2 SQL注入攻击的防范,15.1 数据库系统安全概述,1. 数据库安全的意义 研究数据库安全的意义在于: (1) 目前的对数据库的安全问题重视不足。现在对于安全威胁的防范多集中在对于主机和操作系统的防护,例如配置防火墙和防病毒软件,而对数据库安全则关注甚少。 (2) 数据库才是攻击者的主要目标。目前的数据库系统中存储着大量的重要数据,例如军事机密、
3、商业秘密、个人交易账号和口令等等。大多数攻击者的攻击目标正是获取这些秘密数据。,版权所有,盗版必纠,15.1 数据库系统安全概述,2. 数据库系统的安全威胁 根据违反数据库安全性所导致的后果,安全威胁可以分为以下几类: (1) 非授权的信息泄露:未获授权的用户有意或无意得到信息。通过对授权访问的数据进行推导分析获取非授权的信息。 (2) 非授权的数据修改:包括所有通过数据处理和修改而违反信息完整性的行为。但是非授权修改不一定会涉及到非授权的信息泄露,因为对于入侵者而言即使不读出数据库中的数据亦可以进行破坏。 (3) 拒绝服务:包括会影响用户访问数据或使用资源的行为。,15.1 数据库系统安全概
4、述,3. 数据库系统安全层次 (1) 物理层的安全性 数据库所在节点必须在物理上得到可靠的保护。 (2) 用户层的安全性 哪些用户可以使用数据库,使用数据库的哪些数据对象,具有什么样的权限等。 (3) 操作系统层的安全性 数据库所在的主机的操作系统的弱点将可能提供恶意攻击数据库的入口。 (4) 网络层的安全性 Oracle 9i数据库主要是面向网络提供服务,因此,网络软件的安全性和网络数据传输的安全性至关重要。 (5) 数据库系统层的安全性 通过对用户授予特定的访问数据库对象的权利的办法来确保数据库系统层的安全。,版权所有,盗版必纠,15.1 数据库系统安全概述,4. 数据库系统的安全需求 根
5、据上述的数据库安全威胁,提出相应的数据库安全需求: (1) 防止非法数据访问 这是数据库安全最关键的需求之一。数据库管理系统必须根据用户或应用的授权来检查访问请求,以保证仅允许授权的用户访问数据库。数据库的访问控制要比操作系统中的文件访问控制复杂得多。首先,控制的对象有更细的粒度,例如表、记录、属性等;其次,数据库中的数据是语义相关的,所以用户可以不直接访问数据项而间接获取数据内容。,版权所有,盗版必纠,15.1 数据库系统安全概述,(2) 防止推导 推导是指用户通过授权访问的数据,经过推导而得出的机密信息,而按照安全策略该用户根本无权访问机密信息。特别是在统计数据库中,用户容易从统计后的信息
6、中推出某些个体信息。 (3) 保证完整性 保证数据库的完整性,即保证数据库不被非法修改,以及不会因为病毒、系统中的错误等导致存储数据遭破坏。这种保护通过访问控制、备份/恢复等安全机制共同实现。 保证数据的操作完整性,即在并发事务中保证数据库中数据的逻辑一致性。数据库库管理系统中的并发管理器子系统负责实现操作的完整性。 保证数据的逻辑完整性,即在修改数据时保证新值在一定范围内。对数据值的约束通过完整性约束来描述。可以针对数据库来定义完整性约束(定义数据库处于正确状态的条件),也可以针对变换来定义完整性约束(定义修改数据库时需要验证的条件)。,15.1 数据库系统安全概述,(4) 审计和日志 为了
7、保证数据库中的数据安全,一般要求数据库管理系统能够将所有对数据库进行的操作记录下来,以备事后的调查分析,追查入侵者或者发现系统漏洞。审计和日志是非常有效的威慑和事后追查、分析工具。 (5) 标识和认证 标识和认证是数据库的第一道防线,也是授权和审计的前提。 (6) 多级保护 多级保护表示一个安全需求的集合。现实世界中很多应用要求将数据划分不同的秘密等级。同一记录的不同字段可能划分为不同的等级,甚至同一字段的不同值都会是不同的等级。在多级保护体系中,对于不同的数据项赋予不用的保密级别,然后根据数据项的密级给数据项的操作赋予不同的级别。在多级保护体系中,进一步的要求是研究如何赋予多数据项组成的集合
8、一个恰当的密级。数据的完整性和保密性是通过赋予用户权限来实现的,用户只能访问他所拥有的权限所对应级别的数据。,版权所有,盗版必纠,15.1 数据库系统安全概述,(7) 限界 限界的意义在于防止程序之间出现非授权的信息传递。信息传递出现在“授权通道”、“存储通道”和“隐通道”中。授权通道通过授权的操作提供输出信息。存储通道是存储区,一个程序向其中存储数据,而其他程序可以读取。隐通道指的是使用系统中并非设计用来通信的资源在主体间通信的信道。,版权所有,盗版必纠,15.2 针对数据库系统的攻击,数据库系统是在操作系统平台之上的最重要的系统软件,数据库系统的安全可以说是十分重要的。曾经有句话这样说:如
9、果网络遍地是金钱,那么金钱就在数据库服务器中。随着无纸化业务环境的不断扩大,人们在数据库中存储着越来越多的敏感信息:银行账户、医疗记录、政府文件、军事机密等等,数据库系统就成为越来越有价值的攻击目标,因此确保数据库系统的安全也越来越重要。 作为一种大型的系统软件,数据库系统中也存在着各种各样的安全漏洞,其中危害性较大的有缓冲区溢出(堆栈溢出)、堆溢出和SQL注入等。本小节将讲述一些典型的针对数据库系统的攻击。,版权所有,盗版必纠,15.2.1 弱口令攻击,弱口令是指口令强度过低,使非授权用户容易在短时间内通过猜解或者少量的列举即可得到口令。弱口令会使非授权用户获得访问数据库的权限。这会造成机密
10、数据泄露、损坏等严重后果。 出现弱口令的原因多是在数据库安装和建立用户信息的时候,数据库管理员设置了统一且简单的访问口令,授权用户也没有及时修改默认口令。特别是在某些数据库安装的过程中,安装程序会默认建立一个空白口令的特权用户。,版权所有,盗版必纠,15.2.1 弱口令攻击,下面是一个因为存在默认用户名和口令的实例。在2005年的1月W32.Spybot.IVQ蠕虫便是依靠空白口令的root用户感染了数以千计的Windows MySQL服务器。 在MySQL的某些默认配置中,mysql.user表内有4个默认条目:两个条目用于root,两个条目用于匿名账户。在主机build上,有一个用于账户r
11、oot具有root特权的远程条目。 如果在本地主机上,可以用空白口令以root特权进行身份验证,则可以全面控制数据库。 如果在本地主机上,可以用任何用户进行身份验证,则可以用guest权限访问数据库。,版权所有,盗版必纠,15.2.1 弱口令攻击,如果在被称为build的远程主机上,可以用任何用户进行身份验证,则可以以guest权限访问数据库。 在Windows主机上,root账户的存在使得任何本地用户都可以将其自己提升到本地系统级访问权限,因为MySQL默认以SYSTEM运行。而且,如果攻击者简单地将他的主机命名为build,MySQL服务一旦启动,他就具有了对主机的远程系统级的访问权限。
12、针对这一问题最好的保护是采取以下措施: (1) 安装MySQL时禁止网络访问(拔掉网线或者应用全部防火墙规则)。 (2) 在安装之后,应立刻删除mysql.user表内除了本地主机(localhost)root账户之外的所有账户。 (3) 为本地主机的root账户设置复杂的口令。,版权所有,盗版必纠,15.2.2 利用漏洞对数据库发起的攻击,数据库厂商会发现自己产品中的某些安全问题,然后为自己的产品提供某些安全补丁,产品的版本随之不断升级。作为数据库的用户,如果不及时升级自己的数据库,就会面临安全威胁。下面以零长度字符串绕过MySQL身份验证漏洞攻击为例子,讲解利用漏洞对数据库的攻击。,版权所
13、有,盗版必纠,在MySQL5.0以前的版本中,MySQL通过下面语句: check_scramble_323(passwd, thd-scramble, (ulong *)acl_user_tmp-salt) = 0 来判断用户输入的密码是否正确,然而在check_scramble_323()函数内可以看到: bool check_scramble_323(const char *scrambled, const char *message, ulong *hash_pass) while (*scrambled) if(*scrambled+ != (char)(*to+ extra) re
14、turn 1; /密码错误 return 0; ,版权所有,盗版必纠,15.2.2 利用漏洞对数据库发起的攻击,这里,用户可以指定一个其所需长度的字符串。在最后的循环中,循环比较scrambled字符串和MySQL所得到的字符串的每个字符,直到scrambled字符串内没有字符为止。 在这个简单的身份验证中,可以指定长度为0的字符串。因为scrambled字符串长度为0,根本不会进行循环比较,所以验证函数直接返回0,使得用户以0长度字符串通过身份验证。这是一个非常简单的利用数据库漏洞的例子。,版权所有,盗版必纠,15.2.3 SQL Server的单字节溢出攻击,SQL Server 2000
15、会监听UDP:1433端口,而且会对值为0x02的单字节报文进行响应,返回关于SQL Server的信息。 但是当单字节报文的值不是0x02而是其他值时,SQL Server将会异常。 会引起异常的值包括:0x04,导致栈溢出发生;0x08字符,会导致对溢出;0x0A,会引发拒绝服务攻击。,另外,在一些数据库管理系统,如WinMySQLAdmin1.1在my.ini文件中以明文形式保存了MySQL的口令信息。使得非授权的本地用户也可以访问MySQL数据库。,版权所有,盗版必纠,版权所有,盗版必纠,15.2.4 SQL注入攻击,1. SQL注入攻击原理 浏览器/服务器(B/S,Browser/S
16、erver)结构是互联网兴起后的一种网络结构模式,这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。B/S结构由服务端、浏览器和通信协议三大部分组成。如下图所示:,版权所有,盗版必纠,15.2.4 SQL注入攻击,版权所有,盗版必纠,15.2.4 SQL注入攻击,采用这种方式构建的Web服务,经常受到SQL注入的攻击。近几年,针对Web服务数据库的SQL注入攻击非常多。SQL注入可导致数据库系统中的普通用户窃取机密数据、进行权限提升等,而这种攻击方式又不需要太多计算机方面的知识,一般只要能熟练使用SQL语言即可,因此对数据库的安全构成了很大的威胁。 另外,目前还有NBSI等SQL注入工具,更使得对数据库的安全受到巨大威胁。如图15.2所示为合作NBSI SQL注入攻击工具对某网站成功进行了攻击,从图中可以看出数据库中的内容。,版权所有,盗版必纠,15.2.4 SQL注入攻击,版权所有,盗版必纠,15.2.4 SQL注入攻击,许多Web应用程序在编写时没有对用户输入数据的合法性进行检验,导致应