CVE:CVE-2000-1088
CNNVD:CNNVD-200101-064
在微软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应用程序来进行攻击，但是需要攻击者了解应用程序在何处调用了有问题的扩展存储过程，同时提供有效的参数。
solution:Upgrade microsoft data_engine to a higher version than 1.0,2000,and avoid the version 1.0,2000; Upgrade microsoft sql_server to a higher version than 7.0,2000,and avoid the version 7.0,2000