数据库安全综述摘要:数据库技术是目前应用最广泛的一门计算机技术,其安全性越来越重要。该文讲述了数据库安全含义,数据库存在的安全威胁,常用攻击方法,安全控制策略以及分析了历年发生的几大典型数据泄密事件。关键字:数据库安全,数据库攻击,安全控制,数据库加密。随着信息化建设的发展,各种信息系统不断出现,其中数据库扮演者重要角色,其担负着存储和管理数据信息的任务。这些数据一旦泄露或被破坏,将会对国家或单位造成巨大损失。目前,很多的信息系统采用的都是Oracle或者SQLServer数据库系统,为了保证数据的安全性、准确性以及一致性,这些数据库系统采用一些技术手段,比如:访问控制、实体和引用完整性控制、值域约束、并发控制和恢复等技术。但是,对于Oracle或者SQLServer数据库系统来说,仍然存在很多安全隐患,面临着许多攻击。因此,如何保证与加强数据库的安全性以及保密性,已成为当前迫切需要解决的热门课题。一、数据库安全含义于数据库安全的定义,国内外有不同的定义。国外以C.P.Pfleeger“SecurityinComputing–DatabaseSecurity.PTR,1997”中对数据库安全的定义最具有代表性,被国外许多教材、论文和培训所广泛应用。他从以下方面对数据库安全进行了描述:(1)物理数据库的完整性:数据库中的数据不被各种自然的或物理的问题而破坏,如电力问题或设备故障等。(2)逻辑数据库的完整性:对数据库结构的保护,如对其中一个字段的修改不应该破坏其他字段。(3)元素安全性:存储在数据库中的每个元素都是正确的。(4)可审计性:可以追踪存取和修改数据库元素的用户。(5)访问控制:确保只有授权的用户才能访问数据库,这样不同的用户被限制在不同的访问方式。(6)身份验证:不管是审计追踪或者是对某一数据库的访问都要经过严格的身份验证。(7)可用性:对授权的用户应该随时可进行应有的数据库访问。本文采用我国GB17859-1999《计算机信息系统安全保护等级划分准则》中的《中华人民共和国公共安全行业标准GA/T389-2002》“计算机信息系统安全等级保护数据库管理系统技术要求”对数据库安全的定义:数据库安全就是保证数据库信息的保密性、完整性、一致性和可用性。保密性指的是保护数据库中的数据不被泄露和未授权的获取;完整性指的是保护数据库中的数据不被破坏和删除;一致性指的是确保数据库中的数据满足实体完整性、参照完整性和用户定义完整性要求;可用性指的是确保数据库中的数据不因人为的和自然的原因对授权用户不可用。当数据库被使用时,应确保合法用户得到数据的正确性,同时要保护数据免受威胁,确保数据的完整性。数据库不仅储存数据,还要为使用者提供信息。应该确保合法用户应当在一定规则的控制和约束下使用数据库,同时应当防止入侵者或非授权者非法访问数据库。数据库的安全主要应由数据库管理系统(DataBaseManagementSystem,DBMS)来维护,但是操作系统、网络和应用程序与数据库安全的关系也是十分紧密的,因为用户要通过它们来访问数据库,况且和数据库安全密切相关的用户认证等其他技术也是通过它们来实现的。二、数据库安全威胁2.1滥用过高权限当用户(或应用程序)被授予超出了其工作职能所需的数据库访问权限时,这些权限可能会被恶意滥用。例如,一个大学管理员在工作中只需要能够更改学生的联系信息,不过他可能会利用过高的数据库更新权限来更改分数。2.2滥用合法权用户还可能将合法的数据库权限用于未经授权的目的。假设一个恶意的医务人员拥有可以通过自定义Web应用程序查看单个患者病历的权限。通常情况下,该Web应用程序的结构限制用户只能查看单个患者的病史,即无法同时查看多个患者的病历并且不允许复制电子副本。但是,恶意的医务人员可以通过使用其他客户端(如MS:Excel)连接到数据库,来规避这些限制。通过使用MS:Excel以及合法的登录凭据,该医务人员就可以检索和保存所有患者的病历。这种私自复制患者病历数据库的副本的做法不可能符合任何医疗组织的患者数据保护策略。要考虑两点风险。第一点是恶意的医务人员会将患者病历用于金钱交易。第二点可能更为常见,即员工由于疏忽将检索到的大量信息存储在自己的客户端计算机上,用于合法工作目的。一旦数据存在于终端计算机上,就可能成为特洛伊木马程序以及笔记本电脑盗窃等的攻击目标。2.3权限提升攻击者可以利用数据库平台软件的漏洞将普通用户的权限转换为管理员权限。漏洞可以在存储过程、内置函数、协议实现甚至是SQL语句中找到。例如,一个金融机构的软件开发人员可以利用有漏洞的函数来获得数据库管理权限。使用管理权限,恶意的开发人员可以禁用审计机制、开设伪造的帐户以及转帐等。2.4平台漏洞底层操作系统(Windows2000、UNIX等)中的漏洞和安装在数据库服务器上的其他服务中的漏洞可能导致未经授权的访问、数据破坏或拒绝服务。例如,“冲击波病毒”就是利用了Windows2000的漏洞为拒绝服务攻击创造条件。2.5SQL注入在SQL注入攻击中,入侵者通常将未经授权的数据库语句插入(或“注入”)到有漏洞的SQL数据信道中。通常情况下,攻击所针对的数据信道包括存储过程和Web应用程序输入参数。然后,这些注入的语句被传递到数据库中并在数据库中执行。使用SQL注入,攻击者可以不受限制地访问整个数据库。防止SQL注入将以下三个技术结合使用可以有效地抵御SQL注入:入侵防御系统(IPS)、查询级别访问控制(请参阅“滥用过高权限”)和事件相关。IPS可以识别有漏洞的存储过程或SQL注入字符串。但是,单独使用IPS并不可靠,因为SQL注入字符串很容易发生误报。如果只依赖IPS,安全管理人员会发现大量“可能的”SQL注入警报,被搞得焦头烂额。2.6审计记录不足自动记录所有敏感的和/或异常的数据库事务应该是所有数据库部署基础的一部分。如果数据库审计策略不足,则组织将在很多级别上面临严重风险。2.7拒绝服务拒绝服务(DOS)是一个宽泛的攻击类别,在此攻击中正常用户对网络应用程序或数据的访问被拒绝。可以通过多种技巧为拒绝服务(DOS)攻击创造条件,其中很多都与上文提到的漏洞有关。例如,可以利用数据库平台漏洞来制造拒绝服务攻击,从而使服务器崩溃。其他常见的拒绝服务攻击技巧包括数据破坏、网络泛洪和服务器资源过载(内存、CPU等)。资源过载在数据库环境中尤为普遍。2.8数据库通信协议漏洞在所有数据库供应商的数据库通信协议中,发现了越来越多的安全漏洞。在两个最新的IBMDB2FixPack中,七个安全修复程序中有四个是针对协议漏洞1。同样地,最新的Oracle季度补丁程序所修复的23个数据库漏洞中有11个与协议有关。针对这些漏洞的欺骗性活动包括未经授权的数据访问、数据破坏以及拒绝服务。例如,SQLSlammer2蠕虫就是利用了MicrosoftSQLServer协议中的漏洞实施拒绝服务攻击。更糟糕的是,由于自身数据库审计机制不审计协议操作,所以在自身审计记录中不存在这些欺骗性活动的记录。2.9身份验证不足薄弱的身份验证方案可以使攻击者窃取或以其他方法获得登录凭据,从而获取合法的数据库用户的身份。攻击者可以采取很多策略来获取凭据。1)暴力:攻击者不断地输入用户名/密码组合,直到找到可以登录的一组。暴力过程可能是靠猜测,也可能是系统地枚举可能的用户名/密码组合。通常,攻击者会使用自动化程序来加快暴力过程的速度。2)人际关系:攻击者利用人天生容易相信别人的倾向来获取他人的信任,从而获得其登录凭据。例如,攻击者可能在电话中伪装成一名IT经理,以“系统维护”为由要求提供登录凭据。3)直接窃取凭据:攻击者可能通过抄写即时贴上的内容或复制密码文件来窃取登录凭据。2.10备份数据暴露经常情况下,备份数据库存储介质对于攻击者是毫无防护措施的。因此,在若干起著名的安全破坏活动中,都是数据库备份磁带和硬盘被盗。防止备份数据暴露所有数据库备份都应加密。实际上,某些供应商已经建议在未来的DBMS产品中不应支持创建未加密的备份。建议经常对联机的生产数据库信息进行加密,但是由于性能问题和密钥管理不善问题,这一加密方法通常是不现实的,并且一般被公认为是上文介绍的细化的权限控制的不理想的替代方法。三、常用攻击方法3.1宿主网络攻击方法对宿主网络进行攻击,主要威胁数据的保密性和可用性,主要攻击方法:1)网络嗅探。对于一些网络数据库来说,其在网络上进行数据传输都采用明文方式,而TCP/IP协议自身又没有加密机制,因此很容易被攻击者对网络上传输的信息进行嗅探,以获得有价值的信息。2)拒绝服务攻击。由于TCP/IP协议的脆弱性,攻击者很容易对数据库服务器进行DoS攻击,使其系统瘫痪或者无法响应正常的服务请求。常见的DoS攻击包括:SYNFlood攻击、Ping攻击、Smurf攻击、分布式拒绝服务攻击、地址欺骗攻击等3.2宿主操作系统攻击方法一些攻击者在入侵数据库系统之前,首先控制其宿主操作系统,进而实现对数据库系统操作或者获取数据库文件。1)口令破解。攻击者可以采用弱口令扫描或者蛮力破解的方法,获取系统口令,进而取得系统访问权,以实现对数据库系统的访问,或者获取数据库文件。2)漏洞攻击。由于目前所使用的操作系统存在很多漏洞,这些漏洞很有可能被攻击者利用,对操作系统进行攻击,进而对数据库系统进行攻击。3)木马。木马的功能各种各样,植入方式令人防不胜防。而攻击者可以通过木马植入以实现对操作系统和数据库系统的控制,获取数据文件,达到对数据库攻击的目的。3.3数据库系统攻击方法由于数据库系统自身存在一定的安全隐患,因此存在一些可直接对其进行攻击的技术与方法。1)口令入侵。早期的Oracle,SQLServer数据库都有默认的用户名和密码,如Oracle有一个默认的用户名Scott,以及默认的口令tiger;微软的SQLServersa账户。这些默认的登录对于黑客来说尤其方便,借此他们可以轻松地进入数据库。现在,主要的数据库厂商在其新版本的产品中对其进行了弥补,它们不再让用户保持默认的和空的用户名及口令。但即使是唯一的、非默认的数据库口令也是不安全的,通过暴力破解就可以轻易地找到弱口令。2)特权提升。特权提升通常与管理员错误的配置有关如一个用户被误授予超过其实际需要的访问权限。另外,拥有一定访问权限的用户可以轻松地从一个应用程序跳转到数据库,即使他并没有这个数据库的相关访问权限。黑客只需要得到少量特权的用户口令,就可以进入了数据库系统,然后访问读取数据库内的任何表,包括信用卡信息、个人信息。3)缓冲区溢出攻击。数据库系统同样会存在一些缓冲区溢出漏洞,比如MicrosoftSQLServer2000Resolution服务存在堆缓冲溢出攻击、MicrosoftSQLServer2000Bulk插入过程缓冲区溢出漏洞、MicrosoftSQLServer存在远程缓冲溢出、OracleNetServicesLink查询请求缓冲区溢出漏洞等。这些缓冲区溢出漏洞会被攻击者利用,通过构造恶意参数,以执行恶意代码。比如,2002Internet上出现的SQLSlammer蠕虫就是利用MicrosoftSQLServer2000Resolution服务存在堆缓冲溢出漏洞进行传播的。4)SQL注入攻击SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。SQL注入是从正常的端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情