FIX: 缓冲区溢出漏洞可能与扩展存储过程

文章翻译 文章翻译
文章编号: 280380 - 查看本文应用于的产品
错误 #: 100932 (sqlbug_70)
错误 #: 100936 (sqlbug_70)
错误 #: 101013 (sqlbug_70)
BUG #: 351188 (SHILOH_bugs)
BUG #: 351189 (SHILOH_bugs)
展开全部 | 关闭全部

本文内容

症状

几个附带 SQL Server 扩展存储过程中的存在一个缺陷可能允许重写与可能允许攻击者运行任意代码 SQL Server 进程空间中的任意数据在堆栈上分配的内存缓冲区。为了简单,只需关闭以生成不同的进程可能被用来控制服务器的服务器,可能会使用此任意代码。

原因

srv_paraminfo 函数用于复制由调用方传递到分配的扩展存储过程 (被调用方) 的内存缓冲区的数据。 如果被调用方分配该缓冲区,在堆栈上的,并传递给扩展存储过程的数据大于此分配的空间剩余的数据可能会被复制到在堆栈可能重写时,该函数返回执行的寄信人地址。通过仔细地构造与适当的信息的缓冲区,可以放置到服务器的内存和允许运行任意说明。

解决方案

SQL Server 2000

若要解决此问题,获得最新的 service pack,对于 Microsoft SQL Server 2000。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290211INF: 如何获取最新的 SQL Server 2000 Service Pack
: Microsoft SQL Server 2000 Service Pack 1 之前创建的以下修补程序。

对于 SQL Server 2000 此修复程序的英文版应具有以下文件属性或更高版本:
   Version      File name
   -------------------------

   8.00.0223    Xprepl.dll
   8.00.0223    Xpstar.dll
   8.00.0223    Xpqueue.dll
   8.00.0223    Odsole70.dll
				


SQL Server 7.0

若要解决此问题,获得最新的 service pack,对于 Microsoft SQL Server 7.0。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
301511INF: 如何获取最新的 SQL Server 7.0 服务包
: Microsoft SQL Server 7.0 Service Pack 4 之前创建的以下修补程序。

此修复程序的英文版应具有以下文件属性或更高版本:
   Version      File name
   ------------------------

   7.00.0918    Xprepl.dll
   7.00.0918    Xpstar.dll
   7.00.0918    Replres.dll
				
: 由于文件相关性的最新的修补程序或功能,它包含上述文件可能还包含其他文件。 要安装此修复程序,请执行以下步骤:
  1. 阅读 Microsoft 安全公告 MS00-092,位于以下 Web 站点:
    http://www.microsoft.com/technet/security/bulletin/ms00-092.mspx
  2. 通过选择相应的文件为 SQL Server 版本、 处理器体系结构和语言中,从下列位置下载修补程序:
    XP Security Downloads
  3. 若要提取文件,运行您下载自解压缩可执行文件。在提取过程将提示您为文件的目标目录。选择要提取到其中一个空的临时目录: 必须通过在基于 x86 的系统上运行提取两者 Alpha 和 x 86 版本的修补程序。 的文件。 注意

  4. 包含的修补程序是有详细的安装说明,为该特定包的 Readme.txt 文件。按照这些说明这些文件来更新您的系统。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。

SQL Server 2000
此问题 SQL Server 2000 Service Pack 1 中第一次已得到纠正。

SQL Server 7.0
SQL Server 7.0 Service Pack 4 中,第一次已得到纠正此问题。

更多信息

受影响的扩展存储过程的列表包括:
  • 上 SQL Server 7.0:
             xp_sqlinventory
    					
  • SQL Server 7.0 和 2000 SQL Server:
             xp_sqlagent_monitor
    					
  • 在仅 SQL Server 2000:
             sp_OACreate
             sp_OAMethod
             sp_OAGetProperty
             sp_OASetProperty
             sp_OADestroy
    					
此修复程序纠正了在 Microsoft 传送扩展存储过程的所有漏洞。如果扩展存储的过程的其他第三方也安装在系统上,它可以通过使用这些过程之一,如果它使用开放数据服务 API srv_paraminfo 利用这种攻击。如果您已扩展存储的过程安装由第三方,请与该供应商联系,以找出他们的过程是否容易受到此攻击。

在利用此漏洞利用的缓冲区太小,无法传递数据的使用。正确地确定正在传递数据的长度,必须首先调用 srv_paraminfo 通过其第六个参数 pbData,为 NULL。然后,该函数返回参数数据实际的长度。可以再进行分配的适当大小的缓冲区,然后进行第二个调用检索数据。srv_paraminfo 函数不允许您指定要复制到您的缓冲区的数据的最大长度。有关详细的信息,请参阅 SQL Server 联机丛书中的 srv_paraminfo 主题。

属性

文章编号: 280380 - 最后修改: 2007年9月5日 - 修订: 4.2
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 标准版
  • Microsoft Data Engine 1.0
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 7.0 Service Pack 1
  • Microsoft SQL Server 7.0 Service Pack 2
关键字:?
kbmt kbbug kbfix kbsqlserv2000sp1fix KB280380 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 280380
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com