MS16-101:Windows 身份验证方法的安全更新程序说明:2016 年 8 月 9 日

重要说明:本文包含的信息向你介绍了如何在计算机上降低安全设置或关闭安全功能。您可以通过这些更改来解决特定的问题。我们建议你在进行这些更改之前,充分考虑在你的特定环境中实施这种解决方法可能带来的风险。如果实施该解决方法,请采取任何适当的附加措施来帮助保护您的计算机。

概要

此安全更新程序修复了 Microsoft Windows 中的多个漏洞。如果攻击者在已加入域的系统上运行经特殊设计的应用程序,这些漏洞可能允许特权提升。

若要详细了解此类漏洞,请参阅 Microsoft 安全公告 MS16-101

更多信息

重要提示
  • 所有适用于 Windows 8.1 和 Windows Server 2012 R2 的未来安全与非安全更新均需要安装更新 2919355。我们建议你在基于 Windows 8.1 或 Windows Server 2012 R2 的计算机上安装更新 2919355,以便今后持续接收更新程序。 
  • 如果在安装此更新程序后安装语言包,则必须重新安装此更新程序。因此,我们建议先安装所需的全部语言包,然后再安装此更新程序。有关详细信息,请参阅将语言包添加到 Windows
此安全更新程序中包括的与安全无关的修补程序

此安全更新程序中的已知问题

  • 已知问题 1

    对于 MS16-101 中提供的安全更新和较新的更新,当由于密码更改操作而导致 Kerberos 身份验证失败并显示 STATUS_NO_LOGON_SERVERS (0xc000005e) 错误代码时,这些更新使协商进程无法回退到 NTLM。在此情形下,您可能会收到下列错误代码之一:

    十六进制十进制符号友情提示
    0xc00003881073740920STATUS_DOWNGRADE_DETECTED系统检测到危害安全的尝试。请确认您能与对您进行身份验证的服务器联系。
    0x4f11265ERROR_DOWNGRADE_DETECTED系统检测到危害安全的尝试。请确认您能与对您进行身份验证的服务器联系。


    解决方法

    如果安装 MS16-101 后先前成功的密码更改操作现在无法执行,则可能是密码更改先前依赖于 NTLM 回退,因为 Kerberos 失败。要通过使用 Kerberos 协议成功更改密码,请执行以下步骤:


    1. 在已安装 MS16-101 的客户端和提供密码重置服务的域控制器之间的 TCP 端口 464 上配置开放式通信。

      如果用户经过只读域控制器 (RODC) 密码复制策略允许,则 RODC 可支持自助服务密码重置。未经 RODC 密码复制策略允许的用户需要网络连接到用户帐户域中的读/写域控制器 (RWDC)。

      注意 要检查 TCP 端口 464 是否已打开,请执行以下步骤:


      1. 为网络监视分析器创建等效的显示筛选器。例如:
        ipv4.address== <ip address of client> && tcp.port==464
      2. 在结果中,查找“TCP:[SynReTransmit”帧。

        帧:
    2. 确保目标 Kerberos 名称有效。(IP 地址对于 Kerberos 协议无效。Kerberos 支持短名称和完全限定的域名。)
    3. 确保服务主体名称 (SPN) 注册正确。

      有关详细信息,请参阅 Kerberos 和自助服务密码重置
  • 已知问题 2

    我们知道这样一个问题,即如果出现以下预期故障之一,则域用户帐户的编程密码重置将失败并返回 STATUS_DOWNGRADE_DETECTED (0x800704F1) 错误代码:

    • ERROR_INVALID_PASSWORD
    • ERROR_PWD_TOO_SHORT (rarely returned)
    • STATUS_WRONG_PASSWORD
    • STATUS_PASSWORD_RESTRICTION

    下表显示了完整的错误映射。

    十六进制十进制符号友情提示
    0x5686ERROR_INVALID_PASSWORD指定的网络密码不正确。
    0x267615ERROR_PWD_TOO_SHORT提供的密码太短,无法满足用户帐户的策略。请提供较长的密码。
    0xc000006a-1073741718STATUS_WRONG_PASSWORD尝试更新密码时,返回状态表示作为当前密码提供的值不正确。
    0xc000006c-1073741716STATUS_PASSWORD_RESTRICTION尝试更新密码时,返回状态表示违反了某些密码更新规则。例如,密码可能不符合长度条件。
    0x800704F11265STATUS_DOWNGRADE_DETECTED系统无法联系域控制器来为身份验证请求提供服务。请稍后重试。
    0xc0000388-1073740920STATUS_DOWNGRADE_DETECTED系统无法联系域控制器来为身份验证请求提供服务。请稍后重试。


    解决方案

    已重新发布 MS16-101 以解决此问题。请根据本公告安装最新版本的更新来解决此问题。

  • 已知问题 3

    我们知道这样一个问题,即本地用户帐户密码更改的编程重置可能会失败并返回 STATUS_DOWNGRADE_DETECTED (0x800704F1) 错误代码。

    下表显示了完整的错误映射。

    十六进制十进制符号友情提示
    0x4f11265ERROR_DOWNGRADE_DETECTED系统无法联系域控制器来为身份验证请求提供服务。请稍后重试。


    解决方案

    已重新发布 MS16-101 以解决此问题。请根据本公告安装最新版本的更新来解决此问题。

  • 已知问题 4

    使用协商包无法更改已禁用或锁定用户帐户的密码。

    使用其他方法(例如直接使用 LDAP 修改操作时),仍可更改已禁用或锁定用户帐户的密码。例如,PowerShell cmdlet Set-ADAccountPassword 使用“LDAP 修改”操作更改密码,且不受影响。

    解决方法

    这些帐户需要管理员进行密码重置。安装 MS16-101 和较新修复后,设计会导致此行为。

  • 已知问题 5

    安装 MS16-101 和较新更新后,使用 NetUserChangePassword API 并在 domainname 参数中传递 servername 的应用程序将不再运行。

    Microsoft 文档表明,支持在 NetUserChangePassword 函数的 domainname 参数中提供远程服务器名称。例如,NetUserChangePassword function MSDN 主题声明如下:

    domainname [in]
    指向常量字符串的指针,可指定 DNS 或远程服务器的 NetBIOS 名称或将在其上执行函数的域。如果此参数为 NULL,则使用调用方的登录域。
    但是,此指南已被 MS16-101 取代,除非密码重置面向本地计算机上的本地帐户。公告 MS16-101:若要使域用户密码更改生效,必须向 NetUserChangePassword API 传递有效的 DNS 域名。
  • 已知问题 6

    在你安装了 MS16-101 描述的安全更新程序后,以编程方式远程更改本地用户帐户密码和跨不受信任林更改密码失败。


    此操作失败的原因是本操作依赖于 NTLM 回退,而该功能在安装 MS16-101 之后不再支持外地帐户。


    提供了一个注册表项,你可以使用该项禁用更改。

    警告:此解决方法可能导致你的计算机或网络更易受到恶意用户或恶意软件(例如病毒)的攻击。我们不建议您采用这种替代方法,此信息仅供参考,您应自行决定是否实施此替代方法。使用此方法需要你自担风险。

    重要说明本部分、方法或任务包含有关如何修改注册表的步骤。但是,注册表修改不当可能会出现严重问题。因此,请务必严格按照这些步骤操作。为了获得进一步的保护,请在修改注册表之前对其进行备份。这样就可以在出现问题时还原注册表。有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
    322756 如何在 Windows 中备份和还原注册表


    若要禁用此更改,请将 NegoAllowNtlmPwdChangeFallback DWORD 项设置为使用值 1(一)。


    重要说明:将 NegoAllowNtlmPwdChangeFallback 注册表项设置为值 1 将禁用此安全修补程序:
    注册表值说明
    0 默认值。禁止回退。
    1始终允许回退。安全修补程序已关闭。远程本地帐户或不受信任林场景有问题的客户可将注册表设置为此值。
    若要添加这些注册表值,请按照下列步骤操作:
    1. 依次单击“开始”、“运行”,在“打开”框中键入 regedit,然后单击“确定”
    2. 找到注册表中的以下子项,然后单击:
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
    3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”
    4. 键入 NegoAllowNtlmPwdChangeFallback 作为 DWORD 的名称,然后按 ENTER。
    5. 右键单击 NegoAllowNtlmPwdChangeFallback,然后单击“修改”
    6. 在“数值数据”框中,键入 1,然后单击“确定”


      注意:若要还原默认值,请键入 0(零),然后单击“确定”
    状态

    已了解此问题的根本原因。当出现其他额外详细信息时,会在本文中更新相应的内容。

如何获取和安装此更新程序

方法 1:Windows 更新

可以通过 Windows 更新获取此更新。在你开启自动更新后,系统会自动下载并安装此更新程序。有关如何开启自动更新的详细信息,请参阅自动获取安全更新

方法 2:Microsoft 更新目录

若要获取此更新的独立程序包,请访问 Microsoft Update 目录网站。
方法 3:Microsoft 下载中心

更多信息

如何获取此安全更新程序的帮助和支持

文件信息

文件哈希信息
文件信息
属性

文章 ID:3177108 - 上次审阅时间:2016年10月18日 - 修订版本: 1

反馈