语言:
在 Microsoft Entra ID 中注册以方便用户登录的应用程序可以申请单租户或多租户身份验证,这也被称为“登录受众”。单租户身份验证将访问权限限制在同一租户内的用户,而多租户身份验证则允许来自任何 Entra 租户的用户访问。单租户和多租户应用程序之间的这一区别可能具有安全影响。未能充分了解其影响就将应用程序配置为多租户,且未实施必要的预防措施,可能会带来安全风险。
多租户应用程序的暴露风险更高,因为任何租户中的恶意 Entra 用户都可能发现并访问该应用程序。如果应用程序的代码未能考虑到这种配置,例如没有将用户的来源租户与授权租户列表进行对比检查,则可能导致未经授权的访问。易受攻击的应用程序是指那些假设身份验证合法,并仅根据有效的令牌授予访问权限而不进行额外检查的应用程序。此类漏洞属于“身份验证 (AuthN) 与授权 (AuthZ)”缺陷的范围。根据“共担责任模型”,用户的身份验证由 Entra ID 负责处理,而授权方面则由应用程序负责。
即使 Microsoft 也在 2023 年 3 月受到了这种混淆的影响,详情请参见“BingBang”案例研究。安全研究人员能够利用此错误配置来入侵多个 Microsoft 应用程序,包括 Bing 搜索引擎的管理门户。Microsoft 已在其应用程序中解决此漏洞,但这提醒我们,类似的漏洞也可能影响您自己的应用程序,因此您应当在必要时审查并修正这些问题。
多租户应用程序还容易受到其他身份验证混淆问题的影响,如 nOAuth 缺陷。
多租户应用程序有其合理的应用场景,尤其当您的组织托管的应用程序是为其他组织访问设计的(如作为软件供应商或用于组织间协作),或是供同一组织内不同租户的用户访问(如每个子公司拥有各自的租户)。只有在这些应用程序完全依赖成功的身份验证而未进行额外的身份验证检查时才存在漏洞。 此风险暴露指标无法确定应用程序是否设计为公开访问,也无法确认多租户身份验证是否为有意启用。此指标同样无法判断多租户特性是否真正必要,而且在没有应用程序代码访问权限的情况下,无法核实所需的授权检查是否到位。出于这些原因,此指标会将所有多租户应用程序标记为需要您逐一审查的发现结果。确认后,您可以将其标记为已忽略。
在应用程序所有者的帮助下进行审查,以验证应用程序的多租户属性是否符合预期。确保在完全了解单租户和多租户应用程序之间差异的情况下才启用此配置。确认应用程序是否可以容纳除其注册所在的租户之外的其他租户的用户。
当然,如果该应用程序设计为公开访问,您也可以特别指明,以便此风险暴露指标将其忽略。
如果应用程序不需要多租户身份验证,您可以将其切换回单租户模式。但请注意,Entra ID 会根据支持的帐户类型在应用上强制执行不同的验证规则。因此,可能无法在不调整其他参数的情况下直接切换到单租户模式。请谨慎操作,并仔细审查任何更改的影响。 您可以按照 Microsoft 的说明更新受众,或使用以下步骤:
microsoft.directory/applications/audience/update
)。相反,如果应用程序需要多租户身份验证,请与开发人员确认代码是否包含对收到的身份验证令牌(即声明验证)的额外授权检查。
当您确认这些检查已实施到位时,或者如果应用程序设计为公开访问,您可以将应用程序标记为让此风险暴露指标忽略。
注意:条件访问策略仅适用于同一租户中的用户。因此,条件访问策略无法限制其他租户的用户访问您的多租户应用程序。
此外,我们建议遵循 Microsoft 关于](https://msrc.microsoft.com/blog/2023/03/guidance-on-potential-misconfiguration-of-authorization-of-multi-tenant-applications-that-use-azure-ad/)使用 Entra ID 的多租户应用程序授权可能存在的错误配置的官方指南[,其中包括额外的具体建议。
最后,提高 Entra 和 Azure 管理员的意识,确保他们在通过 Entra 应用程序注册页面或创建 Azure 应用服务来创建应用程序时,能够在单租户和多租户配置之间做出明智选择。
名称: 允许多租户身份验证的应用程序
代码名称: APPLICATION-ALLOWING-MULTI-TENANT-AUTHENTICATION
严重性: Low
类型: Microsoft Entra ID Indicator of Exposure