Skip to main content

AshAuthentication EUVDEUVD-2026-65322

| CVE-2026-65633 HIGH
Improper Authentication (CWE-287)
2026-08-25 EEF
7.6
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Initiate victim sign-in to generate sign-in JWT
  2. Delivery
    Intercept not-yet-exchanged sign-in token via log/referrer/delivery channel
  3. Exploit
    Submit token as Authorization: Bearer header to protected API route
  4. Execution
    Pass signature verification and act-claim check in retrieve_from_bearer
  5. Persist
    purpose claim never validated against "user"
  6. Impact
    Resolve as fully authenticated current_user session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK

2 techniques across 2 tactics: Defense Evasion, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three simultaneous conditions: (1) the host application must wire up AshAuthentication.Plug.Helpers.retrieve_from_bearer/3 on at least one reachable route; (2) the application must use either the WebAuthn strategy (which always issues sign-in tokens) or the Password strategy configured with sign_in_tokens_enabled?: true; and (3) the attacker must obtain a still-valid, not-yet-exchanged sign-in token for the target subject before it is consumed. Tokens expire according to the configured TTL, narrowing the exploitation window. The following configurations are NOT affected and limit real-world exposure significantly: resources with require_token_presence_for_authentication?: true (the Igniter installer default since v4.5.0); applications using the session-based authentication path (authenticate_resource_from_session/4); applications using neither WebAuthn nor the Password strategy with sign_in_tokens_enabled?: true; and tokens that have already been exchanged or have expired. The require_token_presence_for_authentication?: false DSL default is the enabling condition.

Impact

The CVSS 4.0 score of 7.6 (AV:N/AC:H/AT:P/PR:N/UI:P) accurately reflects the constrained but non-trivial attack surface. High complexity (AC:H) and a specific precondition (AT:P) are warranted: the attacker must obtain a still-valid, not-yet-exchanged sign-in token before it is consumed. This is a realistic but targeted threat - the window of opportunity is the token's lifetime between issuance and first use. The requiring of user interaction (UI:P) reflects that a legitimate user must initiate the sign-in flow that generates the interceptable token. Confidentiality and integrity impacts are High (VC:H/VI:H) since successful exploitation yields a fully authenticated current_user session, enabling the attacker to act as the victim with all their application privileges. There is no availability impact. No CISA KEV listing and no public exploit code identified - this is not currently mass-exploited. However, the vulnerability is particularly dangerous in applications using WebAuthn, because sign-in tokens are always issued in that flow, broadening the exposure compared to the opt-in Password strategy case. Applications scaffolded by Igniter since v4.5.0 with require_token_presence_for_authentication?: true are structurally protected and are not at risk.

Exploit ScenarioDerived

An attacker targeting a user who has initiated a WebAuthn sign-in flow intercepts the resulting sign-in JWT before it is consumed - for example by capturing it from a server access log, an HTTP Referer header, or a compromised email or SMS delivery channel for a magic link. The attacker then presents this token in an Authorization: Bearer <token> header directly to any API endpoint protected by retrieve_from_bearer/3. Because the stateless bearer path never checks purpose, the token is accepted as a valid full-session credential and the attacker receives a current_user assignment, effectively authenticated as the victim with no further interaction required from the legitimate user.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 25, 2026

JWT token replay in AshAuthentication exposes any application using the stateless bearer-token path to full account takeover using purpose-scoped tokens. The retrieve_from_bearer/3 helper in versions 3.10.5-4.14.2 and 5.0.0-rc.0-5.0.0-rc.13 verifies JWT signatures and rejects tokens with an act claim, but never validates that the token's purpose claim equals "user", allowing sign-in, remember-me, and TOTP-setup tokens to be silently accepted as full bearer credentials. No public exploit has been identified at time of analysis, but the attack requires only obtaining a still-valid, not-yet-exchanged sign-in token - a realistic threat surface via log leakage, referrer exposure, or intercepted magic-link delivery.

RemediationAI

Upgrade ash_authentication to 4.14.2 (for the 3.x/4.x series) or 5.0.0-rc.13 (for the 5.x release candidates), which introduce the usable_as_bearer_token?/1 guard in retrieve_from_bearer/3 that rejects any token whose purpose claim is set to a value other than nil or "user". The upstream fix commits are 8cf8b2d4426172be0900a3505e9491800b951750 and 124eddd1bbeb40289c3fe8831ac10677a19fcf09 on the team-alembic/ash_authentication GitHub repository. As an immediate workaround for applications that cannot upgrade, set require_token_presence_for_authentication?: true on all resources that use bearer-token authentication - this forces the validate_token/3 helper to consult the token store and enforce purpose == "user", eliminating the vulnerable stateless path. Note that this workaround requires a functioning token resource (database-backed token store) and will cause {:ok, nil} to become an authentication failure for any stateless deployments, which may affect integrations that rely on the stateless mode. The ERLEF CNA page at https://cna.erlef.org/cves/CVE-2026-65633.html and OSV record at https://osv.dev/vulnerability/EEF-CVE-2026-65633 provide additional remediation context.

Affected VersionsENISA

ash_authentication 5.0.0-rc.0 <5.0.0-rc.13
ash_authentication eca8cadea0f1595ed2c10a0c177b1da9aa9e5269 <*
ash_authentication 3.10.5 <4.14.2

Affected Packages

euvd ash_authentication fix: 4.14.2, 5.0.0-rc.13

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

AshAuthentication is an Elixir authentication library for applications built on the Ash Framework and Phoenix. It issues JWTs with a purpose claim to scope tokens to specific, narrow flows: sign_in (issued by WebAuthn always, and by the Password strategy when sign_in_tokens_enabled?: true), remember_me, totp_setup, and others. The intended contract is that a sign-in token must be presented once to a dedicated preparation that validates purpose == sign_in and immediately revokes it before issuing a general-purpose user token. The retrieve_from_bearer/3 plug helper verifies the JWT signature and rejects tokens with an act (nested action delegation) claim, but never checks the purpose claim against the value user. When require_token_presence_for_authentication?: false (the DSL default), the validate_token/3 helper returns {:ok, nil} without consulting the token store, so no downstream enforcement of purpose occurs either. The root cause is CWE-287: the bearer boundary accepts credentials that are cryptographically valid but semantically out-of-scope, defeating the one-time-use and revocation semantics of purpose-scoped tokens. Affected CPE: cpe:2.3:a:team-alembic:ash_authentication.

Know when Ash Authentication gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (EEF) PRIMARY 7.6 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.8 MEDIUM

Network-exploitable but AC:H because attacker must intercept a short-lived unexpired sign-in token; UI:R because a victim must initiate the sign-in flow that generates it; PR:N since the stolen token itself is the credential; C:H/I:H for full session takeover; A:N as no availability impact described.

3.1 AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Improper Authentication vulnerability in team-alembic AshAuthentication allows purpose-limited JWTs to be replayed as full bearer API credentials when a resource uses stateless bearer-token verification.

The bearer-token authentication helper AshAuthentication.Plug.Helpers.retrieve_from_bearer/3 verifies an Authorization: Bearer JWT's signature and rejects tokens containing an act claim, but performs no check that the token's purpose claim equals user at the bearer boundary. When the resource is configured with require_token_presence_for_authentication?: false (the DSL default), the follow-on validate_token/3 helper returns {:ok, nil} without consulting the token resource, so no downstream check on purpose takes place either. As a result, any valid, non-expired JWT the library itself issued for a narrow, single-purpose flow (most notably the purpose: sign_in token that WebAuthn always emits during sign-in, and that the Password strategy emits when sign-in tokens are enabled) is accepted directly as a general-purpose bearer credential and resolves to a full current_user assignment.

This bypasses the library's intended token-exchange contract, in which the sign_in token is meant to be presented exactly once to a preparation that validates the purpose claim and immediately revokes the token. The first use of a still-valid sign-in token presented directly in the Authorization header succeeds because the stateless bearer path never scopes it to purpose == "user".

An attacker who obtains a not-yet-exchanged sign-in token for a target subject (for example via log or referrer leakage, an intercepted magic-link delivery channel, or a partially compromised intermediary) can present it as a bearer token and be authenticated as that subject, fully bypassing the intended one-time-use and revocation semantics. Exploitation additionally requires that the host application wire up retrieve_from_bearer/3 on a reachable route and uses either WebAuthn (sign-in tokens are always issued) or the Password strategy with sign_in_tokens_enabled?: true. Resources configured with require_token_presence_for_authentication?: true (including applications scaffolded by the Igniter installer since v4.5.0) and the session-based path (authenticate_resource_from_session/4) enforce purpose == "user" against the stored token record and are not affected.

This issue affects ash_authentication: from 3.10.5 before 4.14.2 and from 5.0.0-rc.0 before 5.0.0-rc.13.

Executive ViewAI

Why It Matters

AshAuthentication versions 3.10.5-4.14.2 and 5.0.0-rc.0-5.0.0-rc.13 fail to validate JWT token purpose claims, allowing attackers to repurpose sign-in and password-reset tokens as valid bearer credentials for full account takeover. No public exploit has been identified at time of analysis; however, the attack requires only intercepting still-valid sign-in tokens, a realistic threat via log leakage or magic-link interception. Organizations using stateless bearer-token authentication expose all customer accounts to credential theft.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Low
niche Elixir/Ash Framework library, limited enterprise footprint
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2026-49757 CRITICAL POC
9.2 Jun 15

Account takeover in team-alembic AshAuthentication (0.1.0 to <4.14.0 and 5.0.0-rc.0 to <5.0.0-rc.10) lets an unauthentic

CVE-2025-25202 MEDIUM POC
6.3 Feb 11

Ash Authentication is an authentication framework for Elixir applications. Rated medium severity (CVSS 6.3), this vulner

CVE-2026-91039 CRITICAL
9.1 Sep 17

Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov

CVE-2026-88952 CRITICAL
9.1 Sep 17

Account takeover in AshAuthentication (Elixir/Ash) 4.14.0 through 4.14.x and 5.0.0-rc.10 through 5.0.0-rc.13 lets unauth

CVE-2026-85500 CRITICAL
9.1 Sep 17

Unconfirmed accounts can obtain an authenticated session in the AshAuthentication Elixir library, defeating the mandator

CVE-2026-86533 CRITICAL
9.1 Sep 17

Revoked sessions continue to be treated as fully authenticated on affected AshAuthentication and AshAuthentication Phoen

CVE-2026-82761 CRITICAL
9.1 Sep 17

Reusing a leaked single-use magic-link token is possible in the Elixir library ash_authentication because its validity c

CVE-2026-82760 HIGH
8.2 Sep 17

Denial of service in the AshAuthentication API-key sign-in strategy lets an unauthenticated, remote attacker exhaust ser

CVE-2026-80218 HIGH
7.6 Sep 17

Authentication bypass in the AshAuthentication library for Elixir/Ash lets an authenticated attacker who holds a valid s

CVE-2026-82685 HIGH
7.6 Sep 17

An authenticated account-takeover primitive exists in the Elixir library AshAuthentication (ash_authentication) versions

CVE-2026-81632 HIGH
7.2 Sep 17

Password sign-in in AshAuthentication Phoenix (ash_authentication_phoenix 1.7.0 to <2.17.4 and 3.0.0-rc.0 to <3.0.0-rc.1

CVE-2026-78223 MEDIUM
6.9 Sep 17

AshAuthentication's token-revocation action accepts forged JWTs without verifying their signature, letting an unauthenti

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy