CVE-2026-81637

Replayable OAuth2 CSRF state retained after a failed callback in AshAuthentication

State
Published
Severity
2.3 Low
Published
Sep 17, 2026
Updated
Sep 17, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
4.02.3 LowCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:NEEF

Weaknesses

  • CWE-613 Insufficient Session Expiration

Affected Products

ProductVersions
ash_authenticationteam-alembic
  • 0.6.0 to before 4.15.0Affected
  • 5.0.0-rc.0 to before 5.0.0-rc.14Affected
ash_authenticationteam-alembic
  • c5f589058e04239263f50a1430eb17ea6d5dd1a2 and laterAffectedfrom bd4352303bc9d72d007f6818775267585a4bcc2fNot affectedfrom d7f939cd02bd618bcaa304631846fa75ffc419d7Not affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.