# CVE-2026-49757: OAuth2/OIDC account takeover in AshAuthentication via email-based user matching

> Attackers can take over local user accounts by registering with a victim's email on an OAuth provider, bypassing proper identity verification.

- **Severity:** Critical 9.2 (`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 15 Jun 2026
- **Updated:** 15 Jun 2026
- **Also known as:** CVE-2026-55616, EEF-CVE-2026-49757, GHSA-777c-2fxx-qr28

## What is CVE-2026-49757?

CVE-2026-49757 is a critical authentication bypass vulnerability in team-alembic ash_authentication, published on 15 Jun 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

Authentication Bypass by Spoofing vulnerability in team-alembic AshAuthentication allows account takeover of local users via OAuth2/OIDC sign-in.

AshAuthentication's OAuth2 and OIDC family strategies matched the local user by email address (an upsert on the email field, or a user-defined sign-in filter) rather than by the OpenID Connect iss/sub claim combination. Per OpenID Connect Core §5.7, only iss/sub uniquely and stably identifies an end-user; other claims, including email, MUST NOT be used as unique identifiers.

A provider login presenting a victim's email, including an unverified email, a reused email, or an account with email_verified: false, resolved to and signed in as the victim's existing local account. An unauthenticated attacker who can register an account on any accepted OAuth provider with the victim's email (or who benefits from provider-side email reuse or reclamation) obtains the victim's full local privileges.

The fix resolves users by the (strategy, sub) identity stored in a user identity resource, and only links a new sub to an existing local account by email when the provider's email_verified claim is trusted (trust_email_verified?).

This issue affects ash_authentication from 0.1.0 before 4.14.0 and from 5.0.0-rc.0 before 5.0.0-rc.10.

Weakness: CWE-290 (Authentication Bypass by Spoofing)

## Which versions are affected by CVE-2026-49757?

5 open source packages ship an affected version, including ash_authentication.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ash_authentication` | Hex | From 0.1.0 | 4.14.0, 5.0.0-rc.10 |
| `ash_authentication` | Hex | From 0.1.0 | 4.14.0 |
| `ash_authentication` | Hex | From 0.1.0 | 4.14.0 |
| `ash_authentication` | Hex | From 5.0.0-rc.0 | 5.0.0-rc.10 |
| `ash_authentication` | Hex | From 5.0.0-rc.0 | 5.0.0-rc.10 |

## How do I fix CVE-2026-49757?

Upgrade ash_authentication to a fixed version for your release line: 4.14.0 or 5.0.0-rc.10.

## Is CVE-2026-49757 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-49757 exists.

Public exploit code:

- https://github.com/Hunt-Benito/ash-authentication-oauth2-oidc-account-takeover-cve-2026-49757-email-based-user-matching (github_poc): https://github.com/Hunt-Benito/ash-authentication-oauth2-oidc-account-takeover-cve-2026-49757-email-based-user-matching

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-49757 and fix it if it is affected.

What it is: CVE-2026-49757 is a critical authentication bypass vulnerability in team-alembic ash_authentication, published on 15 Jun 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-49757 exists.

Affected packages and fixed versions:
- ash_authentication (Hex): affected from 0.1.0; fixed in 4.14.0, 5.0.0-rc.10
- ash_authentication (Hex): affected from 0.1.0; fixed in 4.14.0
- ash_authentication (Hex): affected from 0.1.0; fixed in 4.14.0
- ash_authentication (Hex): affected from 5.0.0-rc.0; fixed in 5.0.0-rc.10
- ash_authentication (Hex): affected from 5.0.0-rc.0; fixed in 5.0.0-rc.10

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-49757/ (Markdown: https://insights.sbomify.com/CVE-2026-49757/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-49757
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-49757
- OSV: https://osv.dev/vulnerability/CVE-2026-49757

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-49757/
Summaries are generated and may contain mistakes; the official description above is the record.
