首页 -> 安全研究

安全研究

安全漏洞
Microsoft SQL Server RAISERROR语句缓冲区溢出漏洞(MS01-060)

发布日期:2001-12-20
更新日期:2001-12-24

受影响系统:
Microsoft SQL Server 2000
    - Microsoft Windows XP
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
Microsoft SQL Server 2000 SP1
    - Microsoft Windows XP
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
Microsoft SQL Server 2000 SP2
    - Microsoft Windows XP
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
Microsoft SQL Server 7.0
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0 SP4
    - Microsoft Windows NT 4.0 SP3
    - Microsoft Windows NT 4.0 SP2
    - Microsoft Windows NT 4.0 SP1
    - Microsoft Windows NT 4.0
Microsoft SQL Server 7.0 SP1
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0 SP4
    - Microsoft Windows NT 4.0 SP3
    - Microsoft Windows NT 4.0 SP2
    - Microsoft Windows NT 4.0 SP1
    - Microsoft Windows NT 4.0
Microsoft SQL Server 7.0 SP2
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0 SP4
    - Microsoft Windows NT 4.0 SP3
    - Microsoft Windows NT 4.0 SP2
    - Microsoft Windows NT 4.0 SP1
    - Microsoft Windows NT 4.0
Microsoft SQL Server 7.0 SP3
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP6
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows NT 4.0 SP4
    - Microsoft Windows NT 4.0 SP3
    - Microsoft Windows NT 4.0 SP2
    - Microsoft Windows NT 4.0 SP1
    - Microsoft Windows NT 4.0
描述:
BUGTRAQ  ID: 3733
CVE(CAN) ID: CVE-2001-0542

Microsoft SQL Server是Microsoft公司开发的Windows平台下的SQL服务器。

Microsoft SQL Server存在多个溢出漏洞,可以使攻击者通过构造特殊的SQL请求在服务器上以服务器程序进程的权限执行代码或者使服务器程序崩溃。

在SQL Server 7.0/2000以及MSDE中提供的RAISERROR语句,发现存在一个缓冲溢出问题。

RAISERROR提供了返回用户定义错误及将@@error变量设置成用户定义错误号的能力。错误消息可以被动态地建立,或者基于错误号从“sysmessages”表中检索到。一旦出现了错误,错误就会以一种服务器错误消息的方式返回到客户机。RAISERROR的语法:
RAISERROR (msg_id | msg_str, severity, state
[, argument ][,…n]])
[WITH options]
Msg_id指明用户定义消息的id,该消息存储在“sysmessages”系统表中。
Msg_str用于动态创建消息的消息字符串。这与C语言中的“printf”非常相似。
Severity定义用户赋值的错误消息严重程度。
State是从1到127的任意整数值,它表示错误的调用状态信息。负数的state值将缺省为1。
OPTIONS指明错误的定制选项。OPTIONS的有效值如下:
1)  LOG。
将错误记录到服务器错误日志和NT事件日志中。该选项需要消息带有从19到25的严重程度。而只有系统管理员才能发出这种消息。
2)  NOWAIT。
将消息立即发送到客户端服务器。
3)  SETERROR。
不管其严重级别如何,将@@error的值设置为msg_id或5000。
当传递给RAISERROR一个相当长的参数时会触发一个溢出,可能导致入侵者获得local system权限。

<*来源:Chris Wysopal (cwysopal@atstake.com
        Chris Anley (chrisanley@hushmail.com
  
  链接:http://www.atstake.com/research/advisories/2001/a122001-1.txt
        http://www.microsoft.com/technet/security/bulletin/MS01-060.asp
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 设备防火墙规则只允许可信的主机连接SQL服务器。

* 如果有web应用程序连接SQL Server服务器,您需要确保Web应用程序中对用户输入做了有效的检查。

厂商补丁:

Microsoft
---------
微软已经为此发布了一个安全公告(MS01-060)以及相应补丁程序:
http://www.microsoft.com/technet/security/bulletin/MS01-060.asp

补丁下载:

SQL Server:

    . SQL Server 7.0:
      http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35066
   .  SQL Server 2000:
      http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35067
      
C 运行库:

   .  Windows NT 4.0 and Windows 2000:
      http://www.microsoft.com/Downloads/Release.asp?ReleaseID=33500
   .  Windows XP:
      http://www.microsoft.com/Downloads/Release.asp?ReleaseID=35023

浏览次数:3456
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障