Microsoft 安全咨询4033453

Azure AD 连接中的漏洞可能允许提升权限

发布时间: 2017 年 6 月 27 日

版本: 1.0

执行摘要

Microsoft 正在发布此安全公告,告知客户可以使用新版本的 Azure Active Directory (AD) 连接来解决重要的安全漏洞。

如果 Azure AD 连接密码写回在启用期间配置错误,更新会解决可能导致特权提升的漏洞。 成功利用此漏洞的攻击者可以重置密码并获取对任意本地 AD 特权用户帐户的未经授权的访问。

此问题在 Azure AD 连接的最新版本(1.1.553.0)中得到解决,不允许将任意密码重置为本地 AD 特权用户帐户。

咨询详细信息

密码写回是 Azure AD 连接的一个组件。 它允许用户将 Azure AD 配置为将密码写回到其本地 Active Directory。 它为用户提供了一种方便的基于云的方法,无论用户身在何处,都能够重置其本地密码。 有关密码写回的信息,请参阅 密码写回概述

若要启用密码写回,必须向 Azure AD 连接授予对本地 AD 用户帐户的重置密码权限。 设置权限时,本地 AD 管理员istrator 可能会无意中向 Azure AD 连接授予本地 AD 特权帐户(包括企业帐户和域管理员istrator 帐户)的重置密码权限。 有关 AD 特权用户帐户的信息,请参阅 Active Directory 中的受保护帐户和组。

不建议使用此配置,因为它允许恶意的 Azure AD 管理员istrator 使用密码写回将任意本地 AD 用户特权帐户的密码重置为已知密码值。 这反过来又允许恶意的 Azure AD 管理员istrator 获得对客户的本地 AD 的特权访问权限。

请参阅 CVE-2017-8613 - Azure AD 连接特权提升漏洞

建议的操作

验证组织是否受到影响

此问题仅影响在 Azure AD 连接上启用密码写回功能的客户。 若要确定是否启用了该功能,请执行以下操作:

  1. 登录到 Azure AD 连接服务器。
  2. 启动 Azure AD 连接向导(开始→ Azure AD 连接)。
  3. 在“欢迎”屏幕上,单击“配置”
  4. 在“任务”屏幕上,选择“ 查看当前配置 ”,然后单击“ 下一步”。
  5. 在同步设置下,如果启用了密码写回,检查。

 

 

如果启用了密码写回,请评估是否已向 Azure AD 连接 服务器授予通过本地 AD 特权帐户重置密码权限。 Azure AD 连接使用 AD DS 帐户将更改与本地 AD 同步。 同一 AD DS 帐户用于对本地 AD 执行密码重置操作。 若要确定使用哪个 AD DS 帐户:

  1. 登录到 Azure AD 连接服务器。
  2. 启动 Synchronization Service Manager(开始→同步服务)。
  3. 在“连接器”选项卡下,选择本地“AD 连接器”,并单击“属性”

 

  1. “属性”对话框中,选择“Active Directory 林”选项卡连接,记下“用户名”属性。 这是 Azure AD Connect 用于执行目录同步的 AD DS 帐户。

 

若要使 Azure AD 连接在本地 AD 特权帐户上执行密码写回,必须对这些帐户授予 AD DS 帐户重置密码权限。 如果本地 AD 管理员具有以下任一情况,则通常会发生这种情况:

  • 将 AD DS 帐户设为本地 AD 特权组的成员(例如,Enterprise 管理员istrators 或 Domain 管理员istrators 组),或
  • 在 adminSDHolder 容器上创建了控制访问权限,该容器向 AD DS 帐户授予了“重置密码”权限。 有关 adminSDHolder 容器如何影响对本地 AD 特权帐户的访问的信息,请参阅 Active Directory 中的受保护帐户和组。

需要检查分配给此 AD DS 帐户的有效权限。 通过检查现有的 ACL 和组分配,可能很难和容易出错。 一种更简单的方法是选择一组现有的本地 AD 特权帐户,并使用 Windows 有效权限功能来确定 AD DS 帐户是否对这些所选帐户具有重置密码权限。 有关如何使用“有效权限”功能的信息,请参阅“验证 Azure AD 连接是否具有密码写回所需的权限。

注意

如果正在使用 Azure AD 连接同步多个本地 AD 林,则可能有多个 AD DS 帐户进行评估。

修正步骤

升级到可从此处下载的 Azure AD 连接的最新版本(1.1.553.0)。 我们建议你这样做,即使你的组织当前没有受到影响。 有关如何升级 Azure AD 连接的信息,请参阅 Azure AD 连接:了解如何从以前的版本升级到最新版本

最新版本的 Azure AD 连接阻止本地 AD 特权帐户的密码写回请求来解决此问题,除非请求的 Azure AD 管理员istrator 是本地 AD 帐户的所有者。 更具体地说,当 Azure AD 连接从 Azure AD 收到密码写回请求时:

  • 如果目标本地 AD 帐户是特权帐户,则它通过验证 AD adminCount 属性来检查。 如果值为 null 或 0,则 Azure AD 连接得出结论,这不是特权帐户,并允许密码写回请求。
  • 如果该值不为 null 或 0,Azure AD 连接则认为这是一个特权帐户。 接下来,它会验证请求用户是否是目标本地 AD 帐户的所有者。 它通过检查目标本地 AD 帐户与其 Metaverse 中请求用户的 Azure AD 帐户之间的关系来执行此操作。 如果请求用户确实是所有者,Azure AD 连接允许密码写回请求。 否则,会拒绝该请求。

注意

adminCount 属性由 SDProp 进程管理。 默认情况下,SDProp 每 60 分钟运行一次。 因此,可能需要长达一小时才能将新创建的 AD 特权用户帐户的 adminCount 属性从 NULL 更新到 1。 在发生这种情况之前,Azure AD 管理员仍可以重置此新创建的帐户的密码。 有关 SDProp 进程的信息,请参阅 Active Directory 中的受保护帐户和组。

缓解步骤

如果无法立即升级到最新的“Azure AD 连接”版本,请考虑以下选项:

  • 如果 AD DS 帐户是一个或多个本地 AD 特权组的成员,请考虑从组中删除 AD DS 帐户。
  • 如果本地 AD 管理员以前为允许重置密码操作的 AD DS 帐户的 adminSDHolder 对象创建了控制访问权限,请考虑将其删除。
  • 可能并不总是可以删除授予 AD DS 帐户的现有权限(例如,AD DS 帐户依赖于组成员身份获取其他功能(如密码同步或 Exchange 混合写回)所需的权限。 请考虑在 adminSDHolder 对象上创建 DENY ACE,该对象禁止具有“重置密码”权限的 AD DS 帐户。 有关如何使用 Windows DSACLS 工具创建 DENY ACE 的信息,请参阅修改 管理员SDHolder 容器
    DSACLS DNofAdminSDHolderContainer /D CONTOSO\ADDSAccount:CA;"Reset Password"

页面生成的 2017-06-27 09:50-07:00。