安全公告
Microsoft 安全公告 MS02-034 - 中等
SQL Server 累积修补(Q316333)
发布时间: 2002 年 7 月 10 日 |更新时间:2003 年 2 月 28 日
版本: 1.1
最初发布: 2002 年 7 月 10 日
更新时间: 2003 年 2 月 28 日
总结
谁应阅读此公告: 使用 Microsoft SQL Server 或 Microsoft® SQL Server™ 桌面引擎 (MSDE) 2000 的数据库管理员。
漏洞的影响: 三个新漏洞,其中最严重的漏洞可能会在服务器上运行攻击者选择的代码。
最大严重性分级: 中等
建议: 立即将修补程序应用于受影响的系统。
受影响的软件:
- Microsoft SQL Server 2000 所有版本。
- Microsoft SQL Server 桌面引擎 (MSDE) 2000。
常规信息
技术详细信息
技术说明:
这是一个累积修补程序,其中包括 SQL Server 2000 的所有以前发布的修补程序的功能。 此外,它消除了影响 SQL Server 2000 和 MSDE 2000 的三个新发现的漏洞(但不包括任何以前版本的 SQL Server 或 MSDE):
- 用于加密 SQL Server 凭据信息的过程中的缓冲区溢出漏洞。 能够成功利用此漏洞的攻击者可以显著控制数据库,并且服务器本身可能取决于 SQL Server 的帐户运行方式。
- 与 SQL Server 表中的数据批量插入相关的过程中的缓冲区溢出漏洞。 能够成功利用此漏洞的攻击者可以显著控制数据库和服务器本身。
- 特权提升漏洞,由于对存储 SQL Server 服务帐户信息的注册表项的权限不正确而产生。 能够成功利用此漏洞的攻击者可能会获得比系统管理员授予的更高权限,甚至可能与操作系统相同的权限。
缓解因素:
密码加密过程中未检查缓冲区:
- 利用漏洞的影响取决于 SQL Server 服务的特定配置。 可以将 SQL Server 配置为在管理员选择的安全上下文中运行。 默认情况下,此上下文是域用户。 如果选择了默认值,则会最大程度地减少攻击者可能实现的损害量。
- 可以通过遵循最佳做法来阻止该漏洞。 具体而言,不受信任的用户不应能够在数据库服务器上加载和执行其选择的查询。 此外,可公开访问的数据库查询应在处理之前筛选所有输入。
批量插入过程中未检查缓冲区:
- 攻击者需要已经拥有服务器上的重要权限才能利用漏洞,因为只有批量管理员和完全管理员才能加载和运行调用易受攻击过程的查询。
- 利用漏洞的影响取决于 SQL Server 服务的特定配置。 可以将 SQL Server 配置为在管理员选择的安全上下文中运行。 默认情况下,它在域用户的上下文中运行;如果选择,这将最大程度地减少攻击者可能实现的损害量。
- 最佳做法有助于最大程度地减少漏洞。 具体而言,不受信任的用户不应能够在数据库服务器上加载和执行其选择的查询。 此外,可公开访问的数据库查询应在处理之前筛选所有输入。
SQL Server 服务帐户注册表项的权限不正确:
- 成功利用此漏洞需要能够在系统上加载和运行查询。 通过遵循最佳做法并将此能力限制为管理员,用户可以缓解此漏洞构成的威胁。
- 成功利用此漏洞还需要 sysadmin 或已授予xp_regwrite执行权限的人员。
严重性分级:
密码加密过程中未检查缓冲区
Internet 服务器 | Intranet 服务器 | 客户端系统 | |
---|---|---|---|
SQL Server 2000(包括 MSDE 2000) | 适中 | 适中 | 适中 |
批量插入过程中未检查缓冲区
Internet 服务器 | Intranet 服务器 | 客户端系统 | |
---|---|---|---|
SQL Server 2000(包括 MSDE 2000) | 适中 | 适中 | 适中 |
SQL Server 服务帐户注册表项的权限不正确
Internet 服务器 | Intranet 服务器 | 客户端系统 | |
---|---|---|---|
SQL Server 2000(包括 MSDE 2000) | 适中 | 适中 | 适中 |
上述 评估 基于受漏洞影响的系统类型、其典型部署模式以及利用漏洞对它们的影响。 对于大容量插入过程中的 Un检查ed Buffer,漏洞只能使大容量管理员组的成员能够在提升的安全上下文中运行代码。 SQL Server 服务帐户注册表项漏洞上的权限不正确需要攻击者能够加载和运行查询才能利用它。
漏洞标识符:
- 密码加密过程中未检查缓冲区:CVE-CAN-2002-0624
- 批量插入过程中未检查缓冲区:CVE-CAN-2002-0641
- SQL Server 服务帐户注册表项的权限不正确: CVE-CAN-2002-0642
测试的版本:
Microsoft 测试了 SQL Server 7.0 和 SQL Server 2000,以评估它们是否受此漏洞的影响。 SQL Server 7 不受任何漏洞的影响。 以前的版本不再受支持,可能或可能不会受到此漏洞的影响。
常见问题解答
此修补程序消除了哪些漏洞?
这是一个累积修补程序,应用后,可以解决以前解决的所有漏洞。 此外,它还消除了三个新漏洞:
- 在处理 SQL Server 身份验证密码加密过程中的缓冲区溢出漏洞,该漏洞可使攻击者选择的代码与 SQL Server 在同一上下文中运行。
- 一个缓冲区溢出漏洞,用于处理数据库表的批量插入,使攻击者的代码能够在 SQL Server 服务帐户的安全上下文中运行。
- 特权提升漏洞,使攻击者能够在操作系统的安全上下文中执行 SQL Server 命令。
什么是 MSDE,它与 SQL Server 有何关联?
Microsoft 数据引擎(MSDE)是一种数据库引擎,它基于 SQL Server 技术构建和基于 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 2000 的 MSDE 2000。
密码加密过程中未检查缓冲区(CVE-CAN-2002-0624):
第一个漏洞的范围是什么?
这是 缓冲区溢出 漏洞。 能够成功利用此漏洞的攻击者可以显著控制数据库,并且服务器本身可能取决于 SQL Server 的帐户运行方式。 在最坏的情况下,攻击者可以在数据库或操作系统上添加、更改或删除数据或配置信息。
为了利用此漏洞,攻击者需要是 SQL Server 中的有效登录名,并且能够在服务器上加载和运行查询,或者能够将不受控制的信息传递到系统上的现有查询。 最佳做法强烈建议针对这两种做法。
导致漏洞的原因是什么?
漏洞是由于 SQL Server 函数中未检查缓冲区导致,该缓冲区处理使用 SQL Server 身份验证的帐户的密码加密。 通过使用特别选择的参数调用此函数,攻击者可能会导致出现缓冲区溢出情况。
什么是 SQL Server 身份验证?
SQL Server 可以通过以下两种方式之一对用户进行身份验证:通过 Windows 身份验证(依赖于 Windows 来存储和验证用户凭据)或 SQL Server 身份验证,SQL Server 通过比较用户名和密码,将用户名和密码与 SQL Server 本身的表中本地存储的信息进行比较来执行身份验证。 此漏洞涉及一个 SQL Server 函数,该函数涉及后者的身份验证类型,并提供对存储 SQL Server 身份验证凭据的支持。
SQL Server 密码加密功能有什么问题?
相关函数在处理输入的代码节中患有未检查缓冲区。 因此,攻击者可以调用函数并提供输入,以便缓冲区被溢出,并覆盖 SQL Server 进程中的内存。
此漏洞使攻击者能够执行哪些操作?
能够成功利用此漏洞的攻击者可能会尝试在 SQL Server 上的 SQL Server 服务帐户上下文中执行代码。 攻击者的代码可能采取的具体操作取决于 SQL Server 在尝试利用漏洞时运行的安全上下文。 (值得注意的是,下面讨论的第三个漏洞可能会提供更改 SQL Server 服务的安全上下文的方法)。
默认情况下,SQL Server 以域用户身份在非特权安全上下文中运行。 尝试针对以这种方式运行的系统利用此漏洞会控制数据库,但对系统本身的控制很少(如果有)。 但是,如果 SQL Server 配置为在具有较高权限的安全上下文中运行,则成功利用此漏洞的尝试将产生对系统的更高程度的控制。 例如,如果服务器在 LocalSystem 的上下文中运行,则攻击者的程序将拥有与操作系统本身相同的权限,并且可以对系统执行任何操作,包括但不限于添加、更改或删除数据、更改安全设置或添加特权帐户。
攻击者如何利用此漏洞?
攻击者可能尝试利用此漏洞的最可能方式是将查询传递给包含特殊格式参数的函数的数据库服务器。 攻击者必须能够完全生成和运行系统上的查询,或者找到一种在系统上作为现有查询的一部分输入此方法的方法。 在任一情况下,处理查询并溢出缓冲区后,就会执行攻击。
我是否可以采取任何措施来缓解利用此漏洞的尝试?
是的。 尝试利用此漏洞需要攻击者有办法将不受控制的数据传递到数据库服务器。 如果遵循了限制此功能的最佳做法,可以缓解或完全挫败尝试利用此漏洞。 具体而言,如果数据库管理员确保只有经过授权的管理员和 dba 能够加载和运行查询,并且现有查询严格强制实施检查和验证被接受为查询输入的数据,攻击者利用此漏洞的能力将显著受损(如果未完全受损)。
此外,遵循这些最佳做法有助于限制因配置错误(例如 Web 公开数据源的 SQL 注入攻击)而可能出现的其他问题。
修补程序如何消除漏洞?
该修补程序通过确保密码加密函数中的输入缓冲区得到正确验证来消除漏洞。
未检查大容量插入过程中的缓冲区(CVE-CAN-2002-0641):
第二个漏洞的范围是什么?
这是 缓冲区溢出 漏洞。 能够成功利用此漏洞的攻击者可以显著控制数据库和服务器本身。 在最坏的情况下,攻击者可以在数据库或操作系统上添加、更改或删除数据或配置信息。
对于此特定漏洞,攻击者需要拥有至少具有批量管理员istrator 权限的帐户,并且能够在服务器上加载和运行查询。 这大大限制了漏洞的暴露。
导致漏洞的原因是什么?
由于 SQL Server 过程中用于插入大容量数据的未检查缓冲区,导致漏洞。 因此,攻击者可以调用此过程来寻求征收缓冲区溢出攻击。
“插入大容量数据”意味着什么?
SQL 中有一个命令允许以用户指定格式将数据从数据文件批量复制到数据库表或视图。 只有 sysadmin 和 bulkadmin 固定服务器角色的成员才能执行此命令。
大容量插入函数有什么问题?
有问题的函数在处理输入的代码部分中遇到未检查缓冲区。 因此,攻击者可以调用函数并提供输入,以便缓冲区被溢出,并覆盖 SQL Server 进程中的内存。
此漏洞使攻击者能够执行哪些操作?
此漏洞可使能够调用此过程的攻击者在 SQL Server 服务帐户的上下文中在系统上运行代码。 如上所述,SQL Server 帐户默认只有域用户权限,但可以配置为使用更高的权限运行。
攻击者如何利用此漏洞?
攻击者可以通过加载并运行调用受影响函数的查询来利用此漏洞。 值得重申的是,攻击者需要成为 Bulk 管理员istrators 组织的成员才能执行此操作。 默认情况下,该组没有任何成员。
严重性分级表表示,此漏洞不会对 SQL 7.0 造成任何风险。 为什么会这样?
尽管 SQL 7.0 确实包含大容量插入过程,但它确实包含缓冲区溢出,但漏洞不能用于攻击系统。 在 SQL 7.0 中,只有 管理员istrators 组的成员才能调用批量插入过程 ,但管理员已经完全控制了服务器,因此这样做没有好处。
修补程序如何消除漏洞?
该修补程序通过在大容量插入过程中实现正确的输入缓冲区检查来消除漏洞。
SQL Server 服务帐户注册表项的权限不正确(CVE-CAN-2002-0642):
第三个漏洞的范围是什么?
这是特权提升漏洞。 能够成功利用此漏洞的攻击者可能会获得比系统管理员授予的更高权限,甚至可能与操作系统相同的权限。
成功的攻击要求攻击者能够在数据库服务器上加载和运行查询。 此外,在攻击者拥有提升的权限之前,必须停止并重启该服务。
导致漏洞的原因是什么?
漏洞结果的原因是,将不正确的权限分配给注册表的一部分,其中包含有关运行 SQL Server 的服务帐户的信息。 SQL Server 服务可以写入注册表并指定其他服务帐户,包括 LocalSystem。 因此,SQL Server 服务可以在与系统管理员授予的帐户不同的特权帐户中运行。
什么是 SQL Server 服务帐户?
在 Windows 安全模型中,系统上的所有活动都与安全帐户的上下文一起发生。 这可确保可以检查系统上的每一项操作,以确保其获得授权和审核。 例如,操作系统本身执行的所有操作都发生在 LocalSystem 帐户的上下文中。
安装 SQL Server 后,管理员必须指定其执行其所有操作的安全帐户。 管理员指定了 SQL Server 将使用的帐户后,此信息将存储在注册表中,在服务启动时使用该帐户。
默认情况下,SQL Server 将在操作系统上非特权用户的上下文中运行。 这意味着默认情况下,SQL Server 服务本身可以在系统上执行很少的操作。
注册表是什么?
注册表是中央存储库,Windows 在其中存储操作系统和应用程序的配置信息。
注册表提供了一个位置,其中操作系统设置(设备信息、启动序列、网络配置)应用程序设置(优化信息、配置参数)和用户设置(用户首选项,最近使用的缩短)都可以存储。
SQL Server 服务帐户信息的存储方式有什么问题?
存储 SQL Server 服务帐户信息的注册表部分具有不适当的权限。 具体而言,SQL Server 服务帐户有权更改此信息。 因此,SQL Server 进程可以指定其他服务帐户,包括 LocalSystem,这是具有操作系统本身完整特权的帐户。 下次 SQL Server 服务在此更改后启动时,它将在该帐户的上下文中运行。 其净效果是,SQL Server 服务可以在系统上以比系统管理员授予的更大权限运行。
此漏洞使攻击者能够执行哪些操作?
此漏洞可能使攻击者能够提升 SQL Server 服务的权限,使其等于操作系统本身的权限。 由于 SQL Server 提供代表操作员在其自己的安全上下文中执行操作系统命令的方法,因此此漏洞的净影响是,能够加载和运行查询的攻击者最终可以在与操作系统本身具有相同权限的系统上执行任何命令。 因此,攻击者可以更改操作系统的配置、添加管理帐户或更改系统的安全设置。
攻击者如何利用此漏洞?
攻击者可以通过在 SQL Server 上加载和运行查询来尝试利用此漏洞,该查询会告知服务器更改注册表中的服务帐户信息。
但是,直到下次服务在攻击后启动之前,才会看到此攻击的影响。 在服务器重启之前,它会继续在其原始安全上下文中运行。 服务器重启后,它将在新指定的服务帐户的上下文中运行。 此时,执行 SQL Server 的任何操作系统命令都将使用新服务帐户的权限和权限执行。
修补程序如何消除漏洞?
此修补程序通过更改对注册表项的权限来消除漏洞,以确保 SQL Server 无法更改此设置。
修补程序可用性
下载此修补程序的位置
Microsoft SQL Server 2000:
有关此修补程序的其他信息
安装平台:
可以在运行 SQL Server 2000 Service Pack 2 的系统上安装 SQL Server 2000 修补程序。
包含在将来的 Service Pack 中:
这些问题的修补程序将包含在 SQL Server 2000 Service Pack 3 中。
需要重新启动: 否。 应用修补程序后,只需重启 SQL Server 服务。
取代的修补程序: 此 pach 取代了 Microsoft 安全公告 MS02-020 中提供的修补程序,这是一个累积修补程序。
验证修补程序安装:
SQL Server 2000
- 若要确保正确安装修补程序,请通过咨询 Microsoft 知识库文章 https://support.microsoft.com/default.aspx?scid=kb中文件清单中列出的文件的日期/时间戳来验证各个文件:en-us;316333&sd;=tech
注意:
此包不包含 Microsoft 数据访问组件或 Analysis Services 安全修补程序。
本地化:
提供了每个受支持的 SQL Server 语言的包。 每个包中包含本地化Readme.txt文件,用于安装说明。
获取其他安全修补程序:
如前提及所述,SQL Server 7.0 上不存在这些漏洞。 如果仍在运行 SQL Server,请确保运行 SQL Server 7.0 Service Pack 4,其中解决了其他安全漏洞。 如果运行的 Service Pack 3 for SQL Server 7.0,则应升级到 Service Pack 4 或应用 Service Pack 3 更新; https://support.microsoft.com/default.aspx?scid=kben-us;318268&sd;=tech
可从以下位置获取其他安全问题的修补程序:
- 安全修补程序可从 Microsoft 下载中心获取,可通过执行关键字 (keyword)搜索“security_patch”来轻松找到。
- WindowsUpdate 网站提供了使用者平台的修补程序
其他信息:
确认
Microsoft 感谢下一代安全软件有限公司的 Cesar Cerrudo 和 Mark Litchfield 向我们报告未检查缓冲区,并与我们合作来保护客户。
支持:
- Microsoft 知识库文章Q316333讨论此问题,此公告发布后大约 24 小时可用。 可以在 Microsoft Online 支持网站上找到知识库文章。
- Microsoft 产品支持服务提供技术支持。 与安全修补程序关联的支持调用不收取任何费用。
安全资源:Microsoft TechNet 安全网站提供有关 Microsoft 产品安全性的其他信息。
免责声明:
Microsoft 知识库中提供的信息“按原样”提供,不提供任何形式的担保。 Microsoft 不明确或暗示所有保证,包括适销性和针对特定用途的适用性和适用性的保证。 在任何情况下,Microsoft Corporation 或其供应商都应对任何损害负责,包括直接、间接、附带、后果性、业务利润损失或特殊损害,即使 Microsoft Corporation 或其供应商被告知存在此类损害的可能性。 某些州不允许排除或限制后果性或附带性损害的责任,因此上述限制可能不适用。
修改:
- V1.0(2002 年 7 月 10 日):公告已创建。
- V1.1(2003 年 2 月 28 日):更新了指向Windows 更新的下载链接。
构建于 2014-04-18T13:49:36Z-07:00</https:>