Proofpoint:OAuth Client ID 欺骗让攻击者悄无声息验证被盗邮箱凭据
攻击者向 Entra ID 令牌端点提交伪造 OAuth client ID,借错误响应差异批量枚举账户、验证被盗口令,全程不产生成功登录事件。两起在野战役合计针对300万+用户、涉及440万个伪造应用ID。
📖 原文翻译与解读。原文:OAuth Client ID Spoofing Lets Attackers Validate Stolen Microsoft Entra Credentials(Proofpoint,2026年7月)
事件概要
Proofpoint 研究人员披露一种被至少两个威胁组织规模化使用的新型规避技术——OAuth Client ID 欺骗(client ID spoofing)。攻击者利用 Microsoft Entra ID 对「有效/无效 OAuth 客户端 ID」返回不同错误响应这一遥测盲区,在不产生任何成功登录事件的情况下,批量枚举账户、验证被盗口令的正确性——而成功登录事件恰恰是防守方赖以告警的主要信号。
技术原理
OAuth 客户端 ID 是应用在请求访问用户数据时使用的全局唯一标识(GUID),在认证请求中以 client_id 参数传递。攻击者向 Microsoft OAuth 2.0 令牌端点发送 HTTP POST 请求,走 ROPC(资源所有者口令凭据)流程,提交一个语法合法但并不对应真实应用的伪造 client ID:
- Entra 登录日志中只会记录该应用 ID,没有对应的应用名称——依赖「针对特定应用名的激增检测」的规则会完全漏掉这类活动。
- 响应中返回的 AADSTS 错误码可被用来推断「账户是否存在」「口令是否正确」,全程不产生成功登录事件。
- 即使伪造的 client ID 不是规范的 UUIDv4,Entra 也不会直接拒绝请求,攻击者照样能从错误响应中提取信息。
- 由于伪造 client ID 不会命中「按应用范围限定」的条件访问(Conditional Access)策略,这一常见缓解手段同样被绕过。
两起大规模在野战役
| 组织代号 | 时间 | 基础设施 | 规模 | 手法特征 |
|---|---|---|---|---|
| UNK_pyreq2323 | 2026年1月–3月 | AWS | 70 万+ 伪造 client ID,针对近 4000 个租户的 100 万+ 账户;约 28% 目标用户因失败尝试被锁定 | 修改已知应用 ID 的尾部数字生成伪造 ID,单个 ID 复用于至多 12 个用户;用户名非字母序 |
| UNK_OutFlareAZ | 2025年12月起 | Cloudflare | 370 万个随机伪造应用 ID,针对 200 万+ 用户 | 每个请求生成唯一 client ID;按字母序枚举用户 |
两起战役均使用合法 UUID 而非畸形标识符,且目标选择与预编译的用户名字典高度吻合。通过把认证尝试碎片化到海量「虚构应用」上,活动更难被关联分析,也能规避按应用维度的检测与限速。
防御建议
- 补上遥测盲区:监控登录日志中「应用 ID 存在但应用名称为空」的认证尝试,将其作为独立告警信号;对同一来源 IP 段的海量不同 client ID 请求做聚合分析。
- 不要只按应用名建规则:针对用户枚举与口令喷洒的检测应回归「账户维度 + 来源维度」,而非依赖应用名称字段。
- 阻断 ROPC 遗留流程:ROPC 属于遗留认证流程,无正当业务依赖的组织应通过条件访问全局禁用,从源头消除该攻击面。
- 邮件账户是最终目标:此类凭据验证攻击的下游通常是云邮箱接管与 BEC。Proofpoint 同时指出,该问题虽然当前特定于 Microsoft,但其他身份提供商可能存在类似暴露;自建邮件系统的认证端点同样应审视「错误响应是否泄露账户存在性」这一通用问题。
参考来源
了解更多行业资讯,请访问 行业资讯首页 或致电 021-69753778 获取安全咨询服务。
相关文章
—— ztpop.net 编辑团队 译
