首页 -> 安全研究

安全研究

安全漏洞
微软SQL Server/MSDE 扩展存储过程缓冲区溢出漏洞

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

受影响系统:

Microsoft SQL Server 7.0
Microsoft SQL Server 2000
Microsoft Data Engine 1.0 (MSDE 1.0)
Microsoft SQL Server Desktop Engine 2000 (MSDE 2000)
   - Microsoft Windows NT
   - Microsoft Windows 2000
描述:

在微软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)
   
   给第一个参数传递超长的串将导致非法操作并覆盖异常处理程序所保存的返
   回地址。
   
扩展存储过程可以被任何客户组件调用,只要这些客户组件能够执行普通的SQL
Server查询,比如Microsoft Access或者MSQuery。SQL Server中提供的ISQL实
用程序也可以用来调用扩展存储过程。运行于IIS之上的web应用程序频繁地使用
ADO(ActiveX Data Objects)API来连接SQL Server数据库。

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


<* 来源:Chris Anley(dec0de@atstake.com)
         David Litchfield (dlitchfield@atstake.com)  
         Microsoft Security Bulletin (MS00-092):
         http://www.microsoft.com/technet/security/bulletin/MS00-092.asp
*>



测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


@stake的Chris Anley(dec0de@atstake.com)和David Litchfield (dlitchfield@atstake.com)
提供了下列测试代码:

  http://www.atstake.com/research/advisories/2000/sqladv2-poc.c
  http://www.atstake.com/research/advisories/2000/sqladv-poc.c
  


建议:

临时解决办法:

    NSFOCUS建议您暂时禁止使用这些有问题的扩展存储过程。

厂商补丁:

微软已经发布如下补丁以消除本漏洞:
http://support.microsoft.com/support/sql/xp_security.asp


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