KB5004605:更新将 AES 加密保护添加到适用于 CVE-2021-33757 的 MS-SAMR 协议

摘要

2021 年 7 月 13 Windows 更新及更高版本 Windows 更新为 CVE-2021-33757 添加了保护。

安装 2021 年 7 月 13 日 Windows 更新或更高版本的 Windows 更新后,如果 SAM 服务器支持 AES 加密,则使用旧版 MS-SAMR 协议进行密码操作时,高级加密标准 (AES) 加密将是 Windows 客户端上的首选方法。 如果 SAM 服务器不支持 AES 加密,则允许回退到旧版 RC4 加密。

CVE-20201-33757 中的更改特定于 MS-SAMR 协议,独立于其他身份验证协议。 MS-SAMR 通过 RPC 和命名管道使用 SMB。 尽管 SMB 也支持加密,但默认情况下不启用加密。 默认启用 CVE-20201-33757 中的更改,并提供 SAM 层的额外安全性。 除了在所有受支持的 Windows 版本安装 2021 年 7 月 13 日 Windows 更新或更高版本 Windows 更新中包含的 CVE-20201-33757 保护外,无需进行任何其他配置更改。 不支持的 Windows 版本应停用或升级到支持的版本。

请足以,CVE-2021-33757 仅修改使用 MS-SAMR 协议的特定 API 时密码在传输中加密的方式,具体而言,请勿修改密码的存储方式。 有关如何在 Active Directory 中和本地 SAM 数据库(注册表)中对密码进行加密的更多信息,请参阅密码概述

详细信息

2021 年 7 月 13 日更新所做的更改
新行为的工作原理是什么?

现有 SamrConnect5 方法通常用于在 SAM 客户端与服务器之间建立连接。

更新的服务器现在将在 SamrConnect5() 响应中返回新位,如 SAMPR_REVISION_INFO_V1 中定义。

含义
0x00000010 在客户端收到时,此值在设置后指示客户端应该使用 AES 加密和 SAMPR_ENCRYPTED_PASSWORD_AES 结构来加密通过线路发送的密码缓冲区。 请参阅 AES 密码用法(3.2.2.4 节)和 SAMPR_ENCRYPTED_PASSWORD_AES(2.2.6.32 节)。

如果更新的服务器支持 AES,则客户端将使用新方法和新的信息类来执行密码操作。 如果服务器未返回此标志或客户端未更新,则客户端将回退到使用 RC4 加密的先前方法。

只读域控制器如何受到影响?

密码设置操作需要可写域控制器 (RWDC)。 密码更改由只读域控制器 (RODC) 转到 RWDC。 必须更新所有设备,以便使用 AES。 例如:

  • 如果未更新客户端、RODC 或 RWDC,则使用 RC4 加密。
  • 如果更新了客户端、RODC 和 RWDC,则使用 AES 加密。
事件日志记录

2021 年 7 月 13 日更新向系统日志添加了四个新事件,以帮助识别未更新的设备,并帮助提高安全性。

  • 配置状态事件 ID 16982 或 16983 在启动时或注册表配置更改时记录。

    事件 ID 16982

    事件日志 系统
    事件源 目录-服务-SAM
    事件 ID 16982
    水平 信息
    事件消息文本 安全帐户管理器现在为调用旧密码更改或设置 RPC 方法的远程客户端记录详细事件。 此设置可能会导致大量消息,并且只能在短时间内用于诊断问题。

    事件 ID 16983

    事件日志 系统
    事件源 目录-服务-SAM
    事件 ID 16983
    水平 信息
    事件消息文本 安全帐户管理器现在为调用旧密码更改或设置 RPC 方法的远程客户端记录定期摘要事件。
  • 应用 2021 年 7 月 13 日更新后,每 60 分钟将一次摘要事件 16984 记录到系统事件日志中。

    事件 ID 16984

    事件日志 系统
    事件源 目录-服务-SAM
    事件 ID 16984
    水平 信息
    事件消息文本 安全帐户管理器在过去 60 分钟内检测到 %x 旧密码更改或设置 RPC 方法调用。
  • 配置详细事件日志记录后,每次使用旧版 RPC 方法来更改或设置帐户密码时,事件 ID 16985 都会记录到系统事件日志中。

    事件 ID 16985

    事件日志 系统
    事件源 目录-服务-SAM
    事件 ID 16985
    水平 信息
    事件消息文本 安全帐户管理器从网络客户端检测到使用旧更改或者设置 RPC 方法。 请考虑升级客户端操作系统或应用程序,以使用此方法的最新且更安全的版本。
    Details:
    RPC 方法:%1
    客户端网络地址:%2
    客户端 SID:%3
    用户名:%4

    若要记录详细事件 ID 16985,请在服务器上或域控制器上切换以下注册表值。

    路径 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SAM
    Type REG_DWORD
    值名称 AuditLegacyPasswordRpcMethods
    值数据 1 = 已启用详细日志记录
    0 或不存在 = 禁用详细日志记录。 仅摘要事件。 (默认)
为密码更改配置 PBKDF2 迭代

SamrUnicodeChangePasswordUser4 (Opnum 73) 中所述,使用新的 SamrUnicodeChangePasswordUser4 方法时,客户端和服务器将使用 PBKDF2 算法从纯文本旧密码派生加密和解密密钥。 这是因为旧密码是服务器和客户端已知的唯一常见机密。

有关 PBKDF2 的更多信息,请参阅 BCryptDeriveKeyPBKDF2 函数 (bcrypt.h)。

如果出于性能和安全性原因必须更改,可以通过在客户端上设置以下注册表值来调整客户端用于密码更改的 PBKDF2 迭代次数。

注意

减少 PBKDF2 迭代次数会降低安全性。  我们不建议将次数从默认值减少。 但是,我们建议使用 PBKDF2 迭代的可能最高次数。

路径 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SAM
Type REG_DWORD
值名称 PBKDF2Iterations
值数据 最小值 5,000 到最大值 1,000,000
默认值 10,000

注意

PBKDF2 不用于密码设置操作。 对于密码设置操作,SMB 会话密钥是客户端与服务器之间的共享机密,用作派生加密密钥的基础。

有关更多信息,请参阅获取 SMB 会话密钥

常见问题解答 (FAQ)

哪些方案触发从 AES 降级到 RC4?

当服务器或客户端不支持 AES 时,将发生降级。

如何判断是协商 RC4 加密还是 AES 加密?

使用采用 RC4 的旧方法时,更新的服务器将记录事件。

是否可以要求在服务器上进行 AES 加密,将来的 Windows 更新是否会使用 AES 以编程方式强制实施?

当前没有可用的强制模式,但将来可能会提供。 我们无法告知具体的时间。

服务器支持时,第三方客户端是否支持 CVE-2021-33757 的保护以协商 AES?我应该联系Microsoft 支持部门还是第三方支持团队来解决此问题?

如果第三方设备未使用 SAMR 协议,则这一点很重要。 执行 MS-SAMR 协议的第三方供应商可能会选择执行此协议。 如有任何疑问,请与第三方供应商联系。

是否必须进行任何其他配置更改?

无需进行其他更改。

什么使用此协议?

此协议是旧版协议,我们预计其使用频率非常低。 旧应用程序可能使用这些 API。 此外,某些 Active Directory 工具(例如 AD 用户和计算机 MMC)使用 SAMR。

使用 Kerberos 协议或其他协议的密码更改是否受到影响?

不。 只会影响使用这些特定 SAMR API 的密码更改。

域控制器性能会受到影响吗?

可以。 PBKDF2 比 RC4 更昂贵。 如果调用 SamrUnicodeChangePasswordUser4 API 的域控制器上同时发生许多密码更改,则 LSASS 的 CPU 负载可能会受到影响。 如果需要,可以在客户端上优化 PBKDF2 迭代,但我们不建议从默认值减少,因为这样做会降低安全性。

参考

使用 AES-CBC 和 HMAC-SHA 进行身份验证的加密

AES 密码用法

第三方信息免责声明

我们提供了第三方联系信息,以便你寻求技术支持。 该联系信息如有更改,恕不另行通知。 我们不保证此第三方联系信息的准确性。