安全公告

Microsoft安全公告 MS02-056 - 严重

SQL Server 累积修补(Q316333)

发布时间: 2002 年 10 月 2 日 |更新时间:2003 年 1 月 31 日

版本: 1.2

最初发布: 2002 年 10 月 2 日

更新时间: 2003 年 1 月 31 日

总结

谁应阅读此公告: 使用 Microsoft® SQL Server 7.0、SQL Server™ 2000、Microsoft数据引擎 (MSDE) 1.0 和 Microsoft 桌面引擎 (MSDE) 2000 的系统管理员。

漏洞的影响: 四个漏洞,其中最严重的漏洞可能使攻击者能够控制受影响的服务器。

最大严重性分级: 严重

建议: 系统管理员应将修补程序应用于受影响的系统。

注意: 此公告发布的修补程序在保护 SQL Server 2000 和 MSDE 2000 免受“SQL 大满贯”蠕虫病毒方面有效。 但是,此修补程序已被 MS02-061 发布的修补程序取代,该修补程序包含这些产品中其他安全漏洞的修补程序。 Microsoft建议 SQL 2000 和 MSDE 2000 客户应用 MS02-061 中的修补程序

受影响的软件:

  • Microsoft SQL Server 7.0
  • Microsoft数据引擎 (MSDE) 1.0
  • Microsoft SQL Server 2000
  • Microsoft桌面引擎 (MSDE) 2000

常规信息

技术详细信息

技术说明:

此安全修补程序不包含Microsoft知识库文章 317748 的修补程序,这是确保 SQL Server 2000 和 MSDE 2000 正常运行所必需的。 如果在从Microsoft知识修补程序文章 317748应用修补程序之前将此安全修补程序应用到 SQL Server 2000 或 MSDE 2000 安装,则必须在系统提示覆盖文件时回答“否”,以确保不会覆盖安全修补程序中的文件。

这是一个累积修补程序,包括 SQL Server 7.0、SQL Server 2000 和 Microsoft 数据引擎 1.0、Microsoft桌面引擎 (MSDE) 2000 的所有以前发布的修补程序的功能。 此外,它消除了四个新发现的漏洞。

  • SQL Server 2000(和 MSDE 2000)中与用户身份验证关联的代码部分中的缓冲区溢出。 通过向受影响的服务器发送格式不正确的登录请求,攻击者可能会导致服务器失败或获得覆盖服务器上的内存的能力,从而可能在 SQL Server 服务的安全上下文中在服务器上运行代码。 用户无需成功向服务器进行身份验证,也不需要向服务器发出直接命令才能利用漏洞。
  • 作为 SQL Server 7.0 和 2000 的一部分发布的数据库控制台命令(DBC)中发生的缓冲区溢出漏洞。 在最严重的情况下,利用此漏洞,攻击者可以在 SQL Server 服务的上下文中运行代码,从而使攻击者能够完全控制服务器上的所有数据库。
  • 与 SQL Server 7.0 和 2000 中的计划作业关联的漏洞。 SQL Server 允许非特权用户创建计划作业,这些作业将由SQL Server 代理执行。 根据设计,SQL Server 代理应仅执行适用于请求用户特权的作业步骤。 但是,当作业步骤请求创建输出文件时,SQL Server 代理会使用自己的特权,而不是作业所有者特权。 这会创建一种情况:非特权用户可以提交一个作业,该作业将在其他用户的 Startup 文件夹中创建包含有效操作系统命令的文件,或者只是覆盖系统文件以中断系统操作

该修补程序还会更改 SQL Server 的操作,以防止非管理用户针对非 SQL OLEDB 数据源运行临时查询。 尽管当前操作并不表示安全漏洞,但新操作使得滥用可能安装在服务器上的编码不佳的数据提供程序会更加困难。

缓解因素:

SQL Server 2000 身份验证函数中未选中的缓冲区:

  • 此漏洞会影响 SQL Server 2000 和 MSDE 2000。 SQL Server 7.0 和 MSDE 1.0 都不会受到影响。
  • 如果防火墙中阻止了 SQL Server 端口(端口 1433),则无法从 Internet 利用漏洞。
  • 利用此漏洞,攻击者将特权提升到 SQL Server 服务帐户级别。 默认情况下,该服务使用域用户的权限而不是系统权限运行。

数据库控制台命令中未选中的缓冲区:

  • 利用此漏洞,攻击者将特权提升到 SQL Server 服务帐户级别。 默认情况下,该服务使用域用户的权限而不是系统权限运行。
  • 此漏洞只能被攻击者利用,攻击者可以向受影响的 SQL Server 进行身份验证,或者有权直接对服务器执行查询
  • 只有攻击者才能利用该漏洞,攻击者才能向受影响的 SQL Server 进行身份验证。

计划作业的输出文件处理缺陷:

  • 此漏洞只能由能够向受影响的 SQL Server 进行身份验证的攻击者利用。

严重性分级:

SQL Server 2000 身份验证函数中未选中的缓冲区:

Internet 服务器 Intranet 服务器 客户端系统
SQL Server 7.0(包括 MSDE 1.0) None
SQL Server 2000(包括 MSDE 2000) 严重 严重

数据库控制台命令中未选中的缓冲区:

Internet 服务器 Intranet 服务器 客户端系统
SQL Server 7.0(包括 MSDE 1.0) 严重 严重
SQL Server 2000(包括 MSDE 2000) 严重 严重

计划作业的输出文件处理缺陷:

Internet 服务器 Intranet 服务器 客户端系统
SQL Server 7.0(包括 MSDE 1.0) 严重 严重
SQL Server 2000(包括 MSDE 2000) 严重 严重

此修补程序中包含的所有问题的聚合严重性(包括以前发布的修补程序中已解决的问题):

Internet 服务器 Intranet 服务器 客户端系统
SQL Server 7.0(包括 MSDE 1.0) 严重 严重
SQL Server 2000(包括 MSDE 2000) 严重 严重

上述 评估 基于受漏洞影响的系统类型、其典型部署模式以及利用漏洞对它们的影响。

漏洞标识符:

  • SQL Server 2000 身份验证函数中的未选中缓冲区: CAN-2002-1123
  • 数据库控制台命令中的未选中缓冲区: CAN-2002-1137
  • 计划作业的输出文件处理缺陷: CAN-2002-1138

测试的版本:

Microsoft测试了 SQL Server 2000 和 SQL Server 7.0(及其关联的 MSDE 版本),以评估它们是否受这些漏洞的影响。 以前的版本不再 受支持,可能会或不受这些漏洞的影响。

常见问题解答

将此修补程序与317748讨论的修补程序一起安装此修补程序的正确顺序是什么?
此安全修补程序不包含知识库文章 317748 的修补程序,这是确保 SQL Server 2000 和 MSDE 2000 正常运行所必需的。 安装的正确顺序是安装317748修补程序,然后安装此安全修补程序。 如果在应用知识修补程序文章 317748之前将此安全修补程序应用到 SQL Server 2000 或 MSDE 2000 安装,则必须在系统提示覆盖文件时回答“否”,以确保不会覆盖安全修补程序中的文件。

如何实现检查是否已安装此安全修补程序?
应验证应用修补程序的实例的 \MSSQL\BINN 文件夹中ssnetlib.dll的版本为:2000.80.679.0 如果 \MSSSQL\BINN 文件夹中的 ssnetlib.dll版本小于 2000.80.636.0,则需要重新应用安全修补程序。 但是,Microsoft建议应用 MS02-061 中所述的最新安全修补程序,因为这包含这些产品中其他安全漏洞的修补程序。

此修补程序消除了哪些漏洞?
这是一个累积修补程序,应用后,可以解决以前解决的所有漏洞。 此外,它还消除了三个新漏洞:

  • 使攻击者能够控制 SQL Server 2000 数据库的漏洞。
  • 最初在Microsoft安全公告 MS02-038 中讨论的漏洞的新变体,通过该公告,已经过身份验证的用户可以在 SQL Server 上获得其他权限。
  • 当用户随后登录到系统或覆盖SQL Server 代理服务有权访问的文件时,用户可能会通过该漏洞运行程序。

此修补程序是否累积?
此修补程序确实取代了以前发布的所有涉及 SQL Server 7.0 和 SQL Server 2000 数据库引擎的安全修补程序。 但是,应用此修补程序本身不足以完全保护 SQL Server:

  • MICROSOFT安全公告 MS02-035 中讨论的 SQL Server 2000 安全修补程序需要通过工具而不是修补程序进行修正。 该工具只需运行一次,因此以前运行过该工具的客户无需执行其他操作。 但是,安装此修补程序不会导致该工具运行。
  • 此修补程序不包括任何涉及 SQL Server Microsoft 数据访问组件(MDAC)或联机分析处理(OLAP)技术的安全漏洞的修补程序。 这些问题的修补程序(在下面的“注意事项”部分列出)必须单独应用。

“受影响的版本”部分表示,Microsoft桌面引擎(MSDE)也受这些漏洞的影响。 什么是 MSDE?
Microsoft桌面引擎(MSDE)是一个数据库引擎,它构建并基于 SQL Server 技术,并作为多个Microsoft产品的一部分提供,包括Microsoft Visual Studio 和 Microsoft 办公室 Developer Edition。 MSDE 版本与 SQL Server 版本之间存在直接连接。 MSDE 1.0 基于 SQL Server 7.0;MSDE 2000 基于 SQL Server 2000。

修补程序是否包含任何其他修补程序?
该修补程序还修复了一个问题,即虽然不是安全漏洞本身,但仍可以帮助攻击者利用配置不佳的系统。 具体而言,修补程序会更改 SQL Server 的操作,以限制非特权用户仅对 SQL Server 数据执行查询。 如果系统上安装了非 SQL 数据提供程序,并且提供程序的驱动程序未强制实施适当的安全性,则此更改将有助于防止非特权用户滥用这种情况。

SQL Server 2000 身份验证函数中的未选中缓冲区(CAN-2002-1123):

此漏洞的范围是什么?
这是 缓冲区溢出 漏洞。 通过向受影响的服务器发送格式不正确的登录请求,攻击者可能导致 SQL Server 服务失败或控制数据库。 用户无需成功向服务器进行身份验证才能利用漏洞。 此漏洞仅影响 SQL Server 2000 和 MSDE 2000。 尽管该漏洞将提供一种方法来控制数据库,但在默认条件下,它不会授予攻击者在操作系统级别的重要特权。

导致漏洞的原因是什么?
漏洞的原因是 SQL Server 2000(和 MSDE 2.0)中的一个处理身份验证请求的函数包含未检查的缓冲区。 通过使用特别选择的参数调用此函数,攻击者可能会导致出现缓冲区溢出情况。

你指的是哪些身份验证请求?
根据服务器的 配置方式,它可以使用两种方法之一对用户进行身份验证 - SQL Server 身份验证或 Windows 身份验证。 但是,在实际身份验证过程发生之前,SQL Server 会交换一些初步信息。 漏洞在于此初步交换中涉及的函数之一。

身份验证函数有什么问题?
该函数受未检查缓冲区的影响。 因此,攻击者可能以溢出缓冲区的方式启动初步交换,从而覆盖进程中 SQL Server 服务中的内存。

此漏洞使攻击者能够执行哪些操作?
能够成功利用此漏洞的攻击者可以执行以下两项操作之一。 如果他或她提供了随机数据,覆盖服务的内存的效果将是导致其失败。 在这种情况下,管理员可以通过重启 SQL Server 来还原正常操作。 另一方面,通过提供精心选择的数据,攻击者可以修改 SQL Server 服务以执行他或她选择的新功能。 其效果是让攻击者完全控制 SQL Server,并使他/她能够添加、删除或修改数据;重新配置 SQL Server 参数,或对数据库执行任何其他所需操作。

谁可以利用漏洞?
任何可能参与身份验证尝试并影响 SQL Server 的用户(无论尝试是否成功)都可以利用漏洞。

这是否意味着攻击者不需要有效的 SQL Server userid 和密码来利用漏洞?
正确。 由于漏洞驻留在身份验证功能中的位置,攻击者无需能够登录到服务器,他或她只需提供表示身份验证尝试开始的数据包。

是否可以从 Internet 利用漏洞?
这取决于攻击者是否可以进行身份验证交换。 为此,需要在防火墙中打开 SQL Server 端口(端口 1433)。 如果端口已关闭(除非绝对必要),攻击者无法利用来自 Internet 的此漏洞。

我正在运行 SQL Server 7.0。 是否受此漏洞影响?
否。 它仅影响 SQL Server 2000(和 MSDE 2000):它不会影响 SQL Server 7.0(或 MSDE 1.0)。 但是,SQL Server 7.0 管理员仍应安装修补程序,因为此公告中讨论的其他漏洞确实会影响 SQL Server 7.0。

修补程序如何解决此漏洞?
修补程序会建立适当的缓冲区来检查身份验证功能。

数据库控制台命令中的未选中缓冲区(CAN-2002-1137):

此漏洞的范围是什么?
这是最初在Microsoft安全公告 MS02-038 中报告的漏洞的新变体。 与原始漏洞一 样,这是缓冲区溢出 漏洞,攻击者可以通过该漏洞导致 SQL Server 失败或完全控制数据库。

导致漏洞的原因是什么?
由于 SQL Server 中提供的数据库控制台命令(DBCC)实用工具之一在处理用户输入的代码节中包含未检查的缓冲区,因此该漏洞会导致漏洞。

什么是数据库控制台命令(DBCC)?
DBCC 是 SQL Server 2000 的一部分提供的实用工具程序。 他们的目的是为数据库管理员提供一种简单的方法来执行常见的管家任务。 例如,DBC 可用于对数据库进行碎片整理、修复次要错误、显示使用情况统计信息等。 SQL Server 2000 联机帮助工具中包含 SQL Server 2000 中提供的 DBC 的完整列表。

此漏洞与安全公告 MS02-038 中讨论的 DBCC 漏洞有何不同?
此漏洞与Microsoft安全公告 MS02-038 中讨论的 DBCC 漏洞相同,但有一个例外。 与 MS02-038讨论的 DBC 不同,受此变体影响的 DBC 可由任何 SQL 用户执行。

修补程序如何解决漏洞?
该修补程序在受影响的 DBCC 中建立适当的缓冲区处理。

计划作业的输出文件处理缺陷(CAN-2002-1138):

此漏洞的范围是什么?
此漏洞可能导致攻击者执行以下两项操作之一:创建一个程序,该程序随后会在其他用户登录到服务器时执行,或破坏系统文件,以破坏系统操作。 只有向 SQL Server 进行身份验证的攻击者才能利用该漏洞。 此外,在上述第一个攻击方案中,利用漏洞的影响取决于随后登录到系统的用户的特定特权。

导致漏洞的原因是什么?
漏洞的原因是,如果作业所有者不是 SQL Server 中的系统管理员(sysadmin 服务器角色成员),则当SQL Server 代理将输出文件创建为计划作业的一部分时,它会使用自己的权限,而不是拥有作业的用户或配置的代理帐户的用户(如果作业所有者不是 SQL Server 中的系统管理员(sysadmin 服务器角色成员)。

什么是SQL Server 代理?
SQL Server 代理负责运行计划作业、重启数据库服务和其他管理操作。

什么是计划作业?
计划作业 提供了一种方法,使 SQL Server 在特定时间执行指定操作。 管理员经常使用计划作业来执行定期计划的维护任务,例如备份。

谁可以创建计划作业?
任何用户可以创建计划作业,但如果请求者具有适当的权限,SQL Server 代理将仅执行特定的作业步骤。

SQL Server 代理处理计划作业的方式有什么问题?
根据设计,计划作业中的所有作业步骤都应使用提交作业的人员的权限,在某些情况下,应使用代理帐户的权限。 但是,当作业调用要创建的输出文件时,SQL Server 代理会使用自己的权限执行此操作。 由于SQL Server 代理服务帐户通常配置有 Windows 管理权限,因此允许作业在系统上的任何位置创建文件,而不管用户的权限如何。

此漏洞使攻击者能够执行哪些操作?
成功利用漏洞的攻击者可以在系统上创建一个文件,这两个目的之一:

  • 中断系统操作。 通过使用随机数据覆盖系统文件,攻击者可能会导致系统失败。
  • 导致其他用户运行攻击者选择的程序。 通过创建包含有效操作系统命令的输出文件,并将其放置在相应的文件夹中(例如其他用户的 Startup 文件夹),攻击者可能会导致下次登录到系统时执行命令。

攻击者如何利用此漏洞?
攻击者只需能够登录到受影响的服务器来利用漏洞。 然后,他或她可以创建一个计划作业,用于创建输出文件、提交该文件,从而利用漏洞。

如果攻击者过度包装系统文件,则需要什么才能恢复正常操作?
这取决于哪些文件被覆盖。 它可能只需要管理员重启服务。 但是,在最坏的情况下,管理员可能需要使用 紧急修复磁盘还原系统文件。

如果攻击者在另一用户的 Startup 文件夹中创建了一个程序,它可以做什么?
这取决于用户拥有的权限。 用户可以执行的任何操作,程序也可以执行。

修补程序如何解决漏洞?
如果连接是 Windows 经过身份验证的用户,则修补程序会导致SQL Server 代理使用作业所有者的凭据;如果连接是经过 SQL Server 身份验证的用户,则当确定谁有权从作业步骤生成输出文件时,则使用代理帐户的凭据。 因此,用户作业仍能够创建输出文件,但只能在用户或代理帐户的权限允许的区域。

修补程序可用性

下载此修补程序的位置

  • Microsoft SQL Server 7.0:

    https:

  • Microsoft SQL Server 2000:

    </https:>https:

有关此修补程序的其他信息

安装平台:

包含在将来的 Service Pack 中:

此问题的修补程序将包含在 SQL Server 2000 Service Pack 3 中。

需要重新启动: 否。 只需重启 SQL 服务

可以卸载修补程序: 可下载包中包含的readme.txt包含卸载说明。

**取代的修补程序:**此修补程序取代了Microsoft安全公告 MS02-043 中提供的修补程序,该修补程序本身是累积修补程序。

验证修补程序安装:

注意:

  • 如果运行的Microsoft Windows NT Server 4.0 Service Pack 6,则必须应用Q258437中所述的修补程序,然后才能应用此修补程序。 Q258437现已可供公共下载。 有关详细信息,请参阅知识库文章。
  • 此修补程序不包括 Microsoft 安全公告 MS02-035 中提供的 Killpwd 工具的功能。
  • 该修补程序不会取代 SQL Server 2000 下 MDAC 或 OLAP 之前发布的任何修补程序。 在撰写本文时,这些修补程序包括以下文章中讨论的修补程序:
  • 安装修补程序的过程因服务器的特定配置而异。 系统管理员应确保他们读取修补程序包中的Readme.txt文件,以确保正确安装修补程序。

本地化

此修补程序的本地化版本在“修补程序可用性”中讨论的位置可用。

获取其他安全修补程序:

可从以下位置获取其他安全问题的修补程序:

其他信息:

确认

Microsoft 感谢 以下个人:

  • 有关针对非 SQL OLEDB 数据源的即席查询的问题:

    sk@scan-associates.net 和 pokleyzz@scan-associates.net

  • 数据库控制台命令中未选中的缓冲区:

    马丁·拉赫马诺夫(jimmers@yandex.ru)

    支持

    • Microsoft知识库文章Q316333讨论此问题,此公告发布后大约 24 小时可用。 可以在Microsoft联机支持网站上找到知识库文章。
    • Microsoft产品支持服务提供技术支持。 与安全修补程序关联的支持调用不收取任何费用。

    安全资源:Microsoft TechNet 安全网站提供有关Microsoft产品安全性的其他信息。

    免责声明

    Microsoft知识库中提供的信息“按原样”提供,不提供任何形式的担保。 Microsoft明示或默示地否认所有担保,包括适销性和针对特定用途的适用性的保证。 在任何情况下,Microsoft公司或其供应商应承担任何损害,包括直接、间接、附带、后果性、业务利润损失或特殊损害,即使Microsoft公司或其供应商被告知存在此类损害的可能性。 某些州不允许排除或限制后果性或附带性损害的责任,因此上述限制可能不适用。

    修改:

    • V1.0 (2002 年 10 月 2 日):公告已创建。
    • V1.1 (2002 年 10 月 9 日):警告部分已更新。
    • V1.2(2003 年 1 月 31 日):已更新为 MS02-061 取代建议,并在修补程序317748与此安全修补程序一起应用时阐明安装顺序。

构建于 2014-04-18T13:49:36Z-07:00</https:>