# CVE-2026-81637: Replayable OAuth2 CSRF state retained after a failed callback in AshAuthentication

> Attackers can replay OAuth2 state values after failed callbacks to sign victims into attacker-controlled accounts due to insufficient session expiration.

- **Severity:** Low 2.3 (`CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 17 Sep 2026
- **Updated:** 17 Sep 2026
- **Also known as:** EEF-CVE-2026-81637, GHSA-3vcj-gxx8-3p44

## What is CVE-2026-81637?

CVE-2026-81637 is a low-severity vulnerability in team-alembic ash_authentication, published on 17 Sep 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

### Official description

Insufficient Session Expiration vulnerability in team-alembic AshAuthentication allows an attacker who obtains a victim's OAuth2 state value to replay the callback and sign that victim into an attacker-controlled account.

AshAuthentication.Strategy.OAuth2.Plug.callback/2 clears the stored session_params through a rebinding step inside its with chain, conn <- delete_session(conn, session_key). Elixir evaluates the else block in the scope enclosing the with, so every failure path (the provider returning ?error=access_denied, an invalid code, a token-exchange error, or a registration or sign-in failure) reaches store_authentication_result/2 holding the original connection and the session entry is never removed. The value the module's own comment describes as protection against a CSRF-related attack is therefore consumed only when authentication succeeds, and survives a cancelled or failed attempt until the next request phase or session expiry.

This issue affects ash_authentication: from 0.6.0 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.14.

Weakness: CWE-613 (DEPRECATED: Insufficient Session Expiration)

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

1 open source package ship an affected version, including ash_authentication.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ash_authentication` | Hex | From 0.6.0 | 4.15.0, 5.0.0-rc.14 |

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

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

## Is CVE-2026-81637 being exploited?

There is no known exploitation of CVE-2026-81637 in the wild and no public exploit code.

## Fix prompt for AI coding agents

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

What it is: CVE-2026-81637 is a low-severity vulnerability in team-alembic ash_authentication, published on 17 Sep 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Exploitation: There is no known exploitation of CVE-2026-81637 in the wild and no public exploit code.

Affected packages and fixed versions:
- ash_authentication (Hex): affected from 0.6.0; fixed in 4.15.0, 5.0.0-rc.14

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-81637/ (Markdown: https://insights.sbomify.com/CVE-2026-81637/index.md)
```

## Sources

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

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