维普资讯 http://www.cqvip.com ・l6・ Computer Era No.1 0 2006 SQ L Se rve r数据库安全漏洞及防范方法 张延红1 _。范刚龙 (1.华中科技大学计算机工程系,湖北武汉430074;2.平顶山工学院计算机工程系) 摘要:为了从根本上解决SQL Serve数据库系统中的安全漏洞问题,文章首先对系统漏洞产生的原因进行了分析,即 主要是由于程序员不正确和不安全编程引起的。然后针对SQL Serve数据库系统中常见的由于配置不当和输入验证引起 的安全漏洞进行了详细的分析,并提出相应的具体防范措施。最后对其它的安全问题也进行了讨论。 关键词:SQL Server数据库;安全漏洞;防范方法;权限 0引言 SQL Server是微软公司推出的关系数据库管理系统,由于 其使用方便,得到了广泛应用_l1。然而大多数系统管理员对数据 库不熟悉而又对安全『口】题关心太少,而且一些安全公司也不重 视数据库安全,使数据库的安全问题变得很突出。此外,数据库 之机,他们可利用这些缺陷获得数据库的额外权限,在未经授 意设置造成的漏洞。 (8J其他。 漏洞产生的主要原因是由于程序员不正确和不安全编程 引起的。很多程序员在编程开始时没有充分考虑到安全问题, 在投入使IHH, ̄,由于用户不正确的输入及不恰当的配置都可以 的是能够减少漏洞的产生,增强系统的安全。 找出系统中的漏洞,目 系统中存在安全漏洞和不当的配置都会给非法用户提供可乘 导致漏洞的出现。分析漏洞产生的原因,权的情况下访问或提高其访问权,破坏系统,危害数据库的安 全,造成严重的后果,而且都难以发现[21。所以了解数据库的不 安全因素和安全防范手段是至关重要的。 2 SQL Server数据库存在的安全漏洞及防范方法 SQL Server数据库属于关系型数据库,又是属于“端口”型 的数据库,这就表示任何人都能够用分析工具连接到数据库 上,从而绕过操作系统的安全机制,进而闯入系统、破坏和窃取 数据资料.甚至破坏整个系统。本文针对SQL Server数据库系 统中两种常见的由配置错误和输入验证错误引起的漏洞,研究 漏洞的防范方法。 2.1配置; 当而引起的漏洞及防范措施 2.1.1 Sa.账号和运行存储过程引起的漏洞 1漏洞及漏洞产生的原因 系统安全漏洞,也叫系统脆弱・Ilfi(Vulnerability),是计算机 系统在硬件、软件、协议的设计与实现过程中或系统安全策略 上存在的缺陷和不足。非法用户可利用系统安全漏洞获得计算 机系统的额外权限,在未经授权的情况下访问或提高其访问 权,破坏系统,危害计算机系统安全I I。广义的系统安全漏洞是 一切导致威胁、损坏计算机系统安全的因素。任何一个系统,无 SQL Server默认的管理员账号“sa”的密码是空的,这给多 数NT服务器产生一个安全漏洞。入侵者可以执行“扩展存储 过程”来获得系统权限。只要登录为“sa”,就可以使用扩展存储 论是软件还是硬件都不可避免地存在着漏洞,所以从来没有绝 对的安全。 系统漏洞的产生原因是多方面的,根据产生原因的不同, 可分为下列几种: 过程xp—cmdshell,这允许SQL Server用户执行操作系统命令, 就好像在运行操作系统的命令行模式。比如,可以将一个系统 账号“my”,密码“password123”,添加到administrators组中: xp_cmdshell。net user my password 1 23/add。 gO xp_cmdshell。net Iocalgroup/add administrators my。 gO (1)无输入验证:未对用户输入数据的合法性进行验证,使 攻击者非法进入系统。 (2)设计错误(Design Error):程序设计错误而导致的漏洞。 (3)意外情况处置错误(Exceptional Condition Handling Error):程序在实现逻辑中没有考虑到一些意外情况,而导致运 行出错。 (4)访问验证错误(Access Validation Error):程序的访问 这就是因为SQL Server用Windows NT的本地账号 “localsystem”来运行命令。当然黑客还可以使用xp_regread来 读取加密的SAM(安全账号管理器)密码,然后再暴力破解,对 数据库造成巨大危害。 2.1.2 sa账号和运行存储过程引起漏洞的防范方法 验证部分存在某些逻辑错误,使攻击者可以绕过访问控制进 入系统。 (5)配置错误(Configuration Error):系统和应用的配置有 误,或配置参数、访问权限、策略安装位置有误。 (6)竞争条件(Race Condition):程序处理文件等实体在时 由于SQL Server不能更改sa用户名称,也不能删除这个 超级用户,所以,必须对这个账号进行最强的保护。当然,最好 序和同步方面存在问题,存在一个机会窗口使攻击者能够施以 外来的影响。 不要在数据库应用中使用sa账号,只有当没有其它方法登录到 SQL Sercer实例(例如,当其它系统管理员不可用或忘记了密 (7)环境错误(Condition Error):一些环境变量的错误或恶 码)时才使用sa。建议数据库管理员新建立一个拥有与sa一样 维普资讯 http://www.cqvip.com 计算机时代2006年第10期 ・l7・ 权限的超级用户来管理数据库。安全的账号策略还包括不要让 通过在单引号字符后跟一个分号字符来开始一条新命令而终 管理员权限的账号泛滥。SQL Server的认证模式有Windows 止计划中的SQL语句,攻击者可以进行SQL注入攻击。 输入到txtuid文本框中的字符串: ’:DROP TABLE Customers- 身份认证和混合身份认证两种。如果数据库管理员不希望操作 系统管理员通过操作系统登录来接触数据库的话,可以在账号 的结果是一旦忘记密码的话,就没有办法来恢复了。数据库管 理员应该定期查看是否有不符合密码要求的账号。比如使用下 管理中把系统账号“BUILTIN ̄dministrators”删除。不过这样做 会导致数据库执行下面的语句: SELECT FROM Users WHERE UserName=’’:DROP TABLE Customers..’ 面的SQL语句: use master select name.Password frOm syslogins where password is null SQL以标准配置安装时,有大量各式各样扩展存储过程可 供使用。这些预先定义好的存储过程的功能是执行常规程序, 并对特殊请求提供帮助。存储过程的执行方式和一般SQL请 求的方式几乎完全一样,所以它很容易成为潜在入侵者的攻击 目标。 —个主要的被黑客攻击利用的扩展存储过程是xp cmdshell。 xp cmdshell是进入操作系统的最佳捷径,是数据库留给操作系 统的一个大后门。数据库用户通过存储过程xp cmdshell能调用 到Windows NT系统的内置命令,对系统安全是极大的威胁。如 果不需要扩展存储过程xp_cmdshell,请把它去掉,可以使用以下 SQL语句: use master sp-dropexlendedproc’xp_cmdshell’ 如果需要这个存储过程,用以下语句也可以恢复。 sp_addextendedproc’xpcmdshell’.’xpsql70.dll’ _如果不需要,请丢弃OLE自动存储过程(会造成管理器中 的某些特征不能使用)。这些过程包括如下: sp_OACreate sp_OADestroy sp_OAGetErrorlnfo sp_OAGetProperty spOAMethod spOASetProperty __sp_OAStop 注册表存储过程甚至能够读出操作系统管理员的密码来, 去掉不需要的注册表访问的存储过程的代码如下: xp_regaddmultistring xpregdeletekey xpregdeletevalue —_xp_regenumvalues xpregread xp—_regremovemultistring xp_regwrite 还有一些其他的扩展存储过程,最好检查一下。在处理存储过 程的时候,请确认一下,避免造成对数据库或应用程序的伤害。 2.2输入验证错误引起的漏洞及防范措施 如果对于用户的输入没有设定输入数据的类型、长度、格 式或者范围,输入验证就成了问题,就会产生输入验证的漏洞。 SQL注入就是由于输入而引起的漏洞。 2.2.1 SQL注入 SQL注入(SQL injection)是指用户可以传递任意的、特别 的(恶意的)代码,这些代码通常被添加到有效的SQL代码中。 例如对于服务器端的SQL语句: SqIDalaAdapler myCom mand=new SqIDalaAdapler( ”SELECT FROM Users WHERE UserName=…+txtuid.Text+….conn); 这将会删除Customers表,这里假设应用程序的登录对数据库 有足够的权限,双破折号(一)表示SQL注释,并用来对程序员 添加的任何其他字符如结尾引号进行注释。可以运用一些其他 更微妙的技巧,将下列输入提供给txtuid文本框: ’0R 1=1.. 构建下列命令: SELECT FROM Users WHERE UserName=”OR 1=1.. 由于l=l总为true,攻击者可检索Users表中的每行数据。 SQL注入的方法多种多样,如果对用户的输入不加以验 证,不采取措施,可能会造成严重的后果。 2.2.2 SQL注入的防范方法 预防SQL注入攻击的第一步就是使用验证器验证用户的 输入。例如,可以限制输入的长度和类型等,这样就限制了黑客 键入字符的字数,从而限制了黑客向服务器发送大量的非法的 命令。 第二步对用户输入的数据先进行过滤,把单引号和双引号 全部过滤掉,再进行SQL语句的构造,这样就大大降低了攻击 者成功的概率。 处理SQL注入攻击的另外一个方法是利用参数化存储过 程来访问数据库,确保不会将输入字符串看作是可执行语句。 如果不能使用存储过程,在构建SQL命令时要利用SQL参数, 这样,攻击者就不能使用特殊字符拼接字符串。当指定了参数 的类型和长度后,如果用户输入一个无效的值到当前的数据类 型中,则查询将失败。指定了参数的长度,就能防止大量的数据 传递到数据库服务器中。 总之,只有严密地验证用户输入的合法性,才能有效地抵 抗黑客的攻击,防止输入漏洞的产生。 2.3其它漏洞及防范措施 除了上述两个较为常见的漏洞外,SQL Server数据库还存 在着其它漏洞,如跨库提升权限、缓冲区溢出等,这些漏洞都可 能为黑客留下入侵的机会,一旦将某个普通用户提升为管理 员,那么后果是比较严重的。所以应该根据情况适当设置,及时 地升级,使用最小权限加最少服务的原则,让SQL Server本身 具备足够的安全防范能力。当然,更主要的还是要加强内部的 安全控制和管理员的安全培训。安全问题是一个长期的解决过 程,还需要以后进行更多的安全维护。 3结束语 随着Internet的飞速发展,网络环境下的数据库成为许多恶意 者的攻击目标。攻击者是利用数据库系统中安全漏洞进行攻击活 动的。如果不知道—个数据库系统潜在的脆弱性,它根本不百11;邕是 维普资讯 http://www.cqvip.com ・18・ Computer Era No.1 0 2006 基于单机的计算机网络实验平台的实现与应用 江魁,杨文玲,张园红,李涛 (深圳大学现代教育技术与信息中心,广东深圳518060) 摘要:随着高校规模的扩大,原有的计算机网络实验室已不能满足需要。文章阐述了单机上构建计算机网络实验平台 关键机制的实现方法,介绍了该平台的实际应用情况。构建的平台不仅能模拟网络操作系统,还能模拟各种网络设备。该 平台既节约了建设计算机网络实验室的资金,又可以让尽可能多的学生独立完成计算机网络实验。 关键词:计算机网络;虚拟机;Vmware;Quagga 0引言 实验课程是《计算机网络》相关课程教学中的重要环节,为 此,各个高校都建立了计算机网络实验室。近年来,随着高校的 不断扩招,原有的网络实验室规模已经远远不能满足日益增多 的学生的需要,对大多数资金紧张的院校来说,不断建设新的 计算机网络实验室,无论是从成本角度还是从管理角度考虑都 是不合适的。此外,由于 络实验室中的机器数量、网络设备数 处理以及线程调度提供许多重要的服务。利用虚拟层提供的服 务,可以在主机系统上模拟出不同的客户系统。每个客户系统 中都有一个虚拟机控制块,块中包含当前状态方面的信息,如 执行状态,捌度优先级以及复制的寄存器内容等。这些客户系 统拥有独立的虚拟硬件设备,如BIOS、内存、硬盘、软盘、显卡、 网卡等。虽然从各个虚拟客户系统角度看,它们都是一个完整 的系统,但从主机系统的角度来看,每个客户系统都是其上独 没有任何关联。不同的客户系统不知道彼此的存在,其上的设 它们分别采用独立的地址空间,彼此之间 量及实验时间的限制,众多学生往往只能共用一套网络系统甚 立运行的应用进程,至一台机器。在这种情形下,由于数据传输过程中的相互影响 与学生问操作的相互干扰,学生根本无法真正全面了解计算机 网络的运行机制与掌握计算机 络操作的实际技能。 为了解决这些问题,我们在单台计算机上建立了一个计算 对各种网络设备(如路由器、交换机)进行虚拟。通过该平台,学 生能够在单台计算机上完成计算机网络相关课程的各种实验, 既节约了投资建设网络实验室的资金,又让尽可能多的学生能 备及I/O端口等都受到保护,不会受到主机系统与其他客户系 统的影响。虚拟客户系统的资源都来自于物理机,例如每个客 户系统的内存来自于物理机的内存,客户系统里的硬盘也是虚 实际对应于物理硬盘上的文件。主机物理硬盘上可以创 机网络实验平台,该平台既能对网络操作系统进行虚拟,又能 拟的,建不同的文件夹,在其中存放各客户系统启动设置参数、日志 文件等信息。因此,只要主机系统的内存足够大,CPU性能足够 好,理论上在主机系统中可以虚拟出不限数目的子系统。 应用 应用 够独立地完成计算机网络实验。 1网络操作系统的虚拟 计算机网络是利用通信链路和网络设备将处于不同地理 位置的计算机连接起来,在网络操作系统的控制下实现资源共 享与信息交换的系统。由此可见,网络操作系统是计算机网络 的核心与灵魂。在单机上构建一个计算机网络实验平台的首要 任务是建立各种网络操作系统的虚拟支持环境,我们通过虚拟 机技术u1实现了该目标。 虚拟机是指在物理计算机上由软件模拟出来的计算机,其 工作原理如图1所示。 图1中的虚拟层是在保护模式下建立和维护的一个管理 虚拟机的框架,通过利用保护模式的特权级机制、分页内存管 客户系统 客户系统 虚拟层 主机系统 系统硬件 图l虚拟机工作原理图 采用虚拟机软件Vmwaret21作为常用操作系统的运行支持环 境,在单机上建立了常用网络操作系统的虚拟支持环境,包括 Windows 20()0/XP/2003、Redhat、FreeBSD。根据实践经验,1G内 存的机器能够以较好的性能同时运行五个虚拟操作系统,完成 绝大部分刚络实验。如果将每台虚拟机的内存设小一些,或是安 装一些不很占资源的操作系统(如Redhat),这样就可以同时运 行更多的虚拟操作系统来实现更复杂的网络环境。 理机制和任务切换机制,为上一层客户系统的内存管理、中断 安全的。只有了解潜在的威胁,并通过使用防御对策,才有希望编 写安全的应用程序。本文对 据库系统的安全漏洞的研究,对预防 系统安全事件绂生,减少系统漏洞具有积极的作用。 参考文献: (11李劲,谢兆阳.SQL Server 2000数据库设计与系统管理.清华大学 出版社.2004. 【21(美)Peter Thorsteinson,G.Gnana Arun Ganesh著,梁志般,豢建译. .NET毒-全性与密码术.清华大学出版社,2004. 【31 Krsul V Software Vulnerability Analysis Department of Computer Sciences-Purdue Universiyt,1998 秘