一份研究报告揭示了 Entra ID 中存在的一个严重漏洞,该漏洞结合了微软内部服务间通信使用的未公开“Actor 令牌”与旧版 Azure AD Graph API 的验证缺陷。这使得攻击者能够以任意用户(包括全局管理员)的身份,访问全球任何一个 Entra ID 租户。由于此类攻击能绕过条件访问等安全策略,并且几乎不留下任何日志,其潜在影响极为巨大。微软在接到报告后数日内修复了此漏洞。
潜在影响:无痕迹的完全访问
此漏洞允许攻击者在任何租户中对 Azure AD Graph API 拥有完全访问权限。由于请求 Actor 令牌的过程不会在目标租户中生成日志,因此防御者无法察觉到这些恶意令牌的存在。
由于 Azure AD Graph API 缺乏 API 级别的日志记录,攻击者可以无痕迹地访问以下敏感信息:
- 用户信息,包括存储在 Entra ID 中的所有个人详细信息。
- 组和角色信息。
- 租户设置和条件访问策略。
- 应用程序、服务主体以及所有权限分配。
- 同步到 Entra ID 的设备信息和 BitLocker 密钥。
如果攻击者冒充全局管理员,他们不仅可以读取数据,还可以修改上述任何对象和设置。这将导致完整的租户泄露,并能进一步访问与 Entra ID 集成的所有服务,如 SharePoint Online、Exchange Online 以及 Azure 资源。尽管修改操作会留下审计日志,但这些日志看起来会像是合法的全局管理员执行的,从而增加了识别攻击的难度。
根据微软的内部遥测数据,他们没有发现此漏洞被滥用的证据。
技术细节:什么是 Actor 令牌?
Actor 令牌是微软内部用于服务间通信的一种特殊令牌。它允许一个服务(如 Exchange Online)在与其他服务(如 Azure AD Graph)通信时,“扮演”或“代理”某个用户的身份。
这些令牌的设计存在严重的安全缺陷:
- 颁发时没有日志:无法追踪令牌的创建源头。
- 使用时也没有日志:由于模拟令牌是在服务本地生成的,Entra ID 不会记录其使用情况。
- 无法撤销:一旦颁发,令牌在 24 小时内始终有效。
- 绕过安全策略:它们完全不受条件访问(Conditional Access)等安全措施的限制。
在我个人看来,这种 Actor 令牌的整个设计本就不应该存在。它几乎缺少了你想要的所有安全控制。
简而言之,这些令牌的设计为大规模、隐蔽的攻击创造了条件。一旦泄露,其后果不堪设想。
致命缺陷:跨租户攻击的根源
研究人员在测试中发现,当他将一个模拟令牌中的租户 ID 修改为另一个不相关的租户 ID 时,API 并没有拒绝访问。相反,它只是提示在该租户中找不到对应的用户身份。
这个发现是致命的。它意味着 Azure AD Graph API 未能正确验证令牌的来源租户。攻击者只需拥有一个在自己控制的租户中生成的 Actor 令牌,就可以用它来访问任何其他租户。唯一需要额外获取的信息是目标租户的 tenant ID(通常是公开信息)和一个有效用户的 netId(一种内部用户标识符)。
实际的攻击路径
利用此漏洞,攻击者可以按照以下步骤完全控制任何目标租户:
- 找到目标租户的 tenant ID。
- 找到该租户中一个普通用户的有效 netId。
- 使用攻击者自己租户的 Actor 令牌,结合目标租户的 ID 和用户 netId,伪造一个模拟令牌。
- 利用该令牌列出所有全局管理员及其 netId。
- 伪造一个全局管理员的模拟令牌。
- 通过 Azure AD Graph API 执行任意读写操作,例如创建新管理员账户或窃取数据。
获取 netId 有多种方法,其中最有效的是:
- 暴力破解:
netId是递增生成的,攻击者可以在几分钟到几小时内通过暴力猜测找到一个有效的 ID,并且这个过程不会产生任何日志。 - 利用 B2B 信任关系:当一个用户被邀请为另一个租户的来宾时,其
netId会被存储在来宾账户的属性中。攻击者可以读取这个属性,然后回到用户的“主租户”中冒充他们。这种方法可以指数级地扩大攻击范围,从一个租户的来宾用户列表开始,迅速跳转并控制大量其他租户。
如何检测潜在的滥用
虽然读取数据不留痕迹,但修改数据通常会生成审计日志。当使用 Actor 令牌进行修改时,日志中会出现一个奇特的现象:操作发起者的显示名称会被记录为服务名称(如 “Office 365 Exchange Online”),而不是实际的用户名。这种不一致性为防御者提供了一个清晰的检测信号。
结论
这个漏洞的根源是 Azure AD Graph API 中的一个严重疏忽,但其巨大影响暴露了 Actor 令牌本身的设计缺陷。如果不是因为这种令牌机制完全缺乏基本的安全控制,一次简单的验证失误不会造成如此严重的后果。幸运的是,微软安全响应中心(MSRC)迅速采取行动,在几天内修复了漏洞,并采取了进一步的缓解措施,限制了这类令牌的生成和使用。