CVE-2026-49757 的概念验证漏洞利用程序,演示了 AshAuthentication 中通过基于电子邮件的用户匹配实现的 OAuth2/OIDC 账户接管,包含易受攻击和已修复的处理程序模拟。
CVE-2026-49757 的概念验证 — AshAuthentication 中的一个严重漏洞,其中 OAuth2/OIDC 回调通过电子邮件地址解析到本地用户账户,而不是 (strategy, sub) 身份对,从而允许未经身份验证的账户接管。
| 字段 | 值 |
|---|---|
| CVE | CVE-2026-49757 |
| CVSS 4.0 | 9.2(严重) |
| CWE | CWE-290(通过欺骗绕过身份验证) |
| GHSA | GHSA-777c-2fxx-qr28 |
| 受影响版本 | ash_authentication >= 0.1.0, < 4.14.0 和 >= 5.0.0-rc.0, < 5.0.0-rc.10 |
| 已修复版本 | 4.14.0、5.0.0-rc.10 |
无需受害者的凭据。攻击者只需要受害者的电子邮件地址,以及在目标接受的任何 OAuth 提供商上的一个账户。
# Interactive mode (recommended)
python3 exploit.py
# Non-interactive mode (piped input)
echo | python3 exploit.py
模拟 AshAuthentication 的 IdentityChange.change/3,使用 upsert_identity: :unique_email:
[email protected] 注册(角色:admin)google-victim-real-12345)[email protected] 注册(email_verified: false):reject 策略(默认)模拟已修补的 UserResolver,使用 (strategy, sub) 查找:
user_identities 中找不到攻击者的 sub(keycloak-attacker-fake-789)on_untrusted_email_match: :reject 阻止登录:confirm 策略trust_email_verified? = trueemail_verified: true 登录 → 自动关联成功email_verified: false 登录 → 被阻止| 文件 | 描述 |
|---|---|
exploit.py | 主要 PoC 脚本 — 运行全部 4 个阶段 |
vulnerable_handler.py | 模拟的 OAuth 回调处理程序(存在漏洞 + 已修复) |
UserResolver 模块 — 通过 (strategy, sub) 身份而非电子邮件解析用户on_untrusted_email_match 选项 — 对于未知 sub,可选 :reject(默认)、:confirm 或 :warntrust_email_verified? 选项 — 按提供商设置的标志,GitHub/Google/Auth0/Slack/Apple 默认为 true(strategy, uid, user_id) 改为 (strategy, uid)user_ididentity_resource 的策略此 PoC 仅用于教育和防御性测试目的。请仅针对您拥有或已获得明确授权测试的系统进行测试。