【IT168技术文档】
1、概述
对于大多数存储、检索和处理大量数据的系统来说,数据库是其关键的组成部分。实际上,在所有的商业、金融业、银行、客户关系、系统监控等应用系统中我们都能看到数据库的踪影。
由于数据库中存储了大量有价值的信息,如个人或财务资料,因此它们常常成为攻击者的目标,同时也特别引起了小偷的注意。数据库系统往往十分复杂,它是由核心数据库和其他应用程序组合成的;其中一些是由数据库厂商提供的,另外一部分是由其它厂商编写的(如Web应用程序)。这些组件中任何一个小缺陷都可能危及数据库中的数据,最常见的攻击可分为:
a、数据库的用户名和口令采用了默认配置;
b、已知TCP/UDP端口监听程序的缓冲区溢出;
c、通过数据库自带工具或用户创建的Web前端程序进行的SQL注入;
d、特权帐号采用了弱密码。
市面上有多种数据库系统可供选择。最常见的包括Microsoft SQL Server(商业产品,运行于Windows)、Oracle(商业产品,运行于多种平台)、IBM DB2和IBM Informix(商业产品,运行于多种平台)、Sybase(商业产品,运行于多种平台)、MySQL和PostgreSQL(开源项目,可运行于多种平台)。
所有现代关系型数据库系统都是通过端口进行寻址,这意味着任何人都可以通过查询工具随时直接连接到数据库上,并且绕过操作系统内置的安全机制。通常,使用的默认连接是:Microsoft SQL通过TCP1433端口和UDP1434端口,Oracle通过TCP1521端口,IBM DB2通过523和500000以上的端口,IBM Informix通过TCP9088和9099端口,MySQL通过3306端口,PostgreSQL通过TCP5432端口。
在互联网上可以找到多数据库漏洞被利用的实例。由于数据库对外提供了网络连接,所以数据库很可能遭受蠕虫的攻击。其中发生在2003年的SQL Slammer蠕虫攻击最为著名。2005年出现了首个Oracle蠕虫攻击—航行者(Voyager)。虽然这种蠕虫不会影响到数据库的运行,但是确实证明了在不加保护的Oracle数据库中这种情况是可能发生的。
SQL Slammer:http://www.caida.org/analysis/security/sapphire/
Voyager:http://www.red-database-security.com/advisory/oracle_worm_voyager.html
对于数据库安全而言,除了上文中提到的具体漏洞外,管理员还应考虑:
a、与标准的一致性,例如支付卡行业数据安全标准(Payment Card Industry Data Security Standard),该标准可能要求对诸如信用卡帐号信息进行加密;
b、转移大量数据到移动设备上的风险:去年,由于膝上电脑失窃而丢失个人数据的报道就有无数次。
2、操作系统的影响
大部分数据库系统可运行于多种平台,不管是商业还是开源数据库,因此,安全问题涵盖了所有支持的平台。
3、CVE列表
以下是自2005年10月以来发布的CVE列表。早期的漏洞可以在SANS先前发布的版本中找到。其实很多问题并不来源于数据库本身,而是相关的应用程序,例如通过Web接口进行的SQL注入攻击,这些并不包括下面的列表中。
Oracle
CVE-2005-3641、 CVE-2006-0256、 CVE-2006-0257、 CVE-2006-0258、 CVE-2006-0259、 CVE-2006-0260、 CVE-2006-0261、 CVE-2006-0262、 CVE-2006-0263、 CVE-2006-0265、 CVE-2006-0266、 CVE-2006-0267、 CVE-2006-0268、 CVE-2006-0269、 CVE-2006-0270、 CVE-2006-0271、 CVE-2006-0272、 CVE-2006-0282、 CVE-2006-0283、 CVE-2006-0285、 CVE-2006-0286、 CVE-2006-0287、 CVE-2006-0290、 CVE-2006-0291、 CVE-2006-0435、 CVE-2006-0547、 CVE-2006-0548、 CVE-2006-0549、 CVE-2006-0551、 CVE-2006-0552、 CVE-2006-0586、 CVE-2006-1868、 CVE-2006-1871、 CVE-2006-1872、 CVE-2006-1873、 CVE-2006-1874、 CVE-2006-3698。
注意: 该列表关注的是Oracle数据库核心程序,但其工具集的部分应用程序也存在漏洞。Oracle一年要发布四次关键补丁升级(CPU),涉及的安全问题涵盖了数据库核心程序和相关应用程序,一般来说应该对这些关键补丁进行升级。由于Oracle在该CVE列表报告中发布信息的方式不同,导致了一个安全问题可能存在于多条CVE列表中。
MySQL
CVE-2006-2753。
PostgreSQL
CVE-2006-2313、 CVE-2006-2314。
IBM DB2
CVE-2005-3643、 CVE-2005-4737。
IBM Informix
CVE-2005-3642、 CVE-2006-3854、 CVE-2006-3860、 CVE-2006-3862。
Microsoft SQL Server
在该CVE列表报告中没有发布。
Sybase
在该CVE列表报告中没有发布。
4、如何确定你是否处于风险当中
仅仅对简单和手工维护的已安装应用程序列表进行检查是不够的!因为数据库作为其他应用程序的组件常常是分布式的,管理员通常都意识不到数据库的存在。这就可能出现数据库补丁没有持续更新,或者处于易受攻击的默认配置当中的情况。这在SQL Slammer蠕虫攻击微软数据访问组件(MDAC)时得以生动的体现,该组件应用在许多应用程序中。
可以通过执行漏洞扫描来确定数据库管理系统(DBMS)软件是否是可用的,以及是否存在漏洞。你可以从数据库厂商获到通用脆弱性扫描器或工具,如MySQL网络扫描器(MySQL Network Scanner)、Microsoft SQL服务器工具。另外,微软基线安全分析工具(Microsoft Baseline Security Analyzer)也可以用为评估Microsoft SQL Server。
5、如何防止数据库系统漏洞
(1) 应确保所有数据库管理系统打了最新的补丁,未更新或过期的版本很可能存在漏洞。应检查厂商站点的补丁信息。到目前为止,厂商公布的漏洞和警告信息如下:
a) Oracle Security Alerts (http://www.oracle.com/technology/deploy/security/alerts.htm )
b) MySQL (http://lists.mysql.com/)
c) PostgreSQL (http://www.postgresql.org/support/security)
d) Microsoft SQL (http://www.microsoft.com/technet/security/bulletin/notify.mspx)
e) IBM DB2 (http://www-306.ibm.com/software/data/db2/udb/support/)
f) IBM Informix (http://www-1.ibm.com/support/docview.wss?rs=0&uid=swg24009130)
(2) 确保数据库管理系统和应用程序的安全:
a) 系统接入网络前,应删除/更改数据库特权和系统账号的默认密码。默认账号列表在互联网上可能找到;
b) 使用最小权限;
c) 尽量使用存储过程;
d) 删除/禁止不必要的存储过程;
e) 限止域长度;
f) 参见下面的章节对数据库管理系统进行加固。
(3) 使用防火墙或其他网络安全设备来限止对数据库服务相关端口的网络访问。
(4) 不要信任用户输入!确保连接到数据库的应用程序在服务器端过滤任何用户的输入,以避免SQL注入攻击(参http://www.sans.org/rr/whitepapers/securecode/23.php)
6、参考文档
通用和多平台数据库资源
SANS数据库安全阅览室:http://www.sans.org/rr/catindex.php?cat_id=3
DoD数据库安全技术实施指南:http://iase.disa.mil/stigs/stig/database-stig-v7r2.pdf
http://www.databasesecurity.com/
Oracle
SANS关于Oracle的安全检查列表:http://www.sans.org/score/oraclechecklist.php
https://store.sans.org/store_item.php?item=80
http://www.oracle.com/technology/deploy/security/pdf/twp_security_checklist_db_database.pdf
CIS 基准工具: http://www.cisecurity.org/bench_oracle.html
http://www.petefinnigan.com/orasec.htm
http://otn.oracle.com/deploy/security/index.html
http://www.red-database-security.com
MySQL
SecurityFocus安全MySQL指南:http://www.securityfocus.com/infocus/1726
http://dev.mysql.com/doc/mysql/en/Security.html
PostgreSQL安全指南
http://www.postgresql.org/support/security
http://www.postgresql.org/docs/techdocs.53
Microsoft SQL Security
http://www.microsoft.com/sql/techinfo/administration/2000/security/default.mspx
http://www.sqlsecurity.com/
CIS SQL Server基准工具:http://www.cisecurity.org/bench_sqlserver.html
IBM DB2
http://www.net-security.org/dl/articles/Securing_IBM_DB2.pdf
IBM Informix
http://www.databasesecurity.com/informix.htm
http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.admin.doc/admin197.htm
Sybase
Sybase安全指南:http://www.niiconsulting.com/innovation/Sybase.pdf