首页 -> 安全研究

安全研究

安全漏洞
Microsoft SQL Server/MSDE扩展存储过程远程缓冲区溢出漏洞(MS00-092)

发布日期:2000-12-04
更新日期:2000-12-04

受影响系统:
Microsoft SQL Server 2000
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server
Microsoft SQL Server 7.0
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server
Microsoft SQL Server Desktop Engine (MSDE) 1.0
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server
Microsoft SQL Server Desktop Engine 2000
    - Microsoft Windows NT 4.0
    - Microsoft Windows 2000 Server
    - Microsoft Windows 2000 Professional
    - Microsoft Windows 2000 Datacenter Server
    - Microsoft Windows 2000 Advanced Server
描述:
BUGTRAQ  ID: 2043,2030
CVE ID: CVE-2000-1088,CVE-2000-1081

在微软SQL Server 7.0/2000以及MSDE中以及提供了一个API函数srv_paraminfo(),它用来为扩展存储过程调用解释输入参数。由于它没有对输入参数长度进行检查,因此如果输入参数长度超过一定限制,就可能发生缓冲区溢出。任何在调用srv_paraminfo()前没有进行长度检查的扩展存储过程都可能受到此问题影响。

调用扩展存储过程的语法如下所示:
exec <存储过程名> <参数1>, <参数2>, ...
例如,如下的查询将返回“c:\winnt”的目录树:
exec xp_dirtree 'c:\winnt'
通过给各个参数传递超长的字符串,有可能覆盖为这些参数所分配的缓冲区并执行任意代码。

目前已知受影响的扩展存储过程如下:

1、xp_peekqueue (xpqueue.dll)
   xp_printstatements (xprepl.dll)
  
    给第一个参数传递超长的串将导致非法操作并覆盖异常处理程序所保存的返回地址。

2、xp_proxiedmetadata (xprepl.dll)

    该存储过程使用4个参数。给第二个参数传递超长的串将导致非法操作并覆盖异常处理程序所保存的返回地址。
    
3、xp_SetSQLSecurity (xpstar.dll)

    该存储过程使用4个参数。给第三个参数传递超长的串将引发异常并导致整个SQL Server进程立即终止。
    
4、xp_displayparamstmt(xprepl.dll)
   xp_enumresultset(xprepl.dll)
   xp_showcolv (xprepl.dll)
   xp_updatecolvbm (xprepl.dll)
  
   给第一个参数传递超长的串将导致非法操作并覆盖异常处理程序所保存的返回地址。
  
扩展存储过程可以被任何客户组件调用,只要这些客户组件能够执行普通的SQLServer查询,比如Microsoft Access或者MSQuery。SQL Server中提供的ISQL实用程序也可以用来调用扩展存储过程。运行于IIS之上的web应用程序频繁地使用ADO(ActiveX Data Objects)API来连接SQL Server数据库。

攻击者可能通过两种途径进行攻击:
1. 如果攻击者可以登录进入SQL Server数据库,就可以通过直接调用有问题的扩展存储过程来进行攻击。如果溢出成功,可能获取SYSTEM权限。
2. 攻击者也可能通过Web应用程序来进行攻击,但是需要攻击者了解应用程序在何处调用了有问题的扩展存储过程,同时提供有效的参数。


<*来源:Chris Anley (chrisanley@hushmail.com
        David Litchfield (dlitchfield@atstake.com))
  
  链接:http://www.microsoft.com/technet/security/bulletin/MS00-092.asp
*>

建议:
临时解决方法:

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

* 数据库管理员应该限制这些有问题的存储过程的访问权限,只允许数据库管理员访问。

厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS00-092)以及相应补丁:
MS00-092:Patch Available for "Extended Stored Procedure Parameter Parsing" Vulnerability
链接:http://www.microsoft.com/technet/security/bulletin/MS00-092.asp

补丁下载:

http://support.microsoft.com/support/sql/xp_security.asp

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