Skip to main content

AshAuthentication CVE-2026-118505

| EUVDEUVD-2026-116025 MEDIUM
Improper Restriction of Excessive Authentication Attempts (CWE-307)
2026-11-03 EEF
6.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Identify ash_authentication sign-in/OTP endpoint
  2. Exploit
    Submit unlimited password or OTP guesses
  3. Execution
    Bypass absent brute-force limit
  4. Impact
    Guess valid credential and take over account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
Exploitation Conditions

Exploitation requires the application to configure brute_force_strategy on a password, magic-link or OTP strategy AND for at least one protected action (password sign-in, password reset request, magic link request, OTP sign-in, OTP request) to be defined on the resource itself without the matching AshAuthentication.AddOn.AuditLog preparation. This is exactly the state produced by the generators - mix ash_authentication.install plus mix ash_authentication.upgrade for password/magic-link actions, and mix ash_authentication.add_strategy.otp for OTP actions - so default-scaffolded resources are affected. Additionally, OTP with registration_enabled? true and brute_force_strategy {:preparation, module} is affected because its sign-in is a create action on which preparations never run. LIMITING FACTORS: only ash_authentication 5.0.0-rc.4 through rc.15 are vulnerable; actions the strategy generates itself DO carry the preparation and are not affected; and the OTP strategy's brute_force_strategy :rate_limit (checked per action via ash_rate_limiter) is not affected. Note the audit-log batching default can also delay failure counting by up to ten seconds unless write_batching enabled? false is set.

Impact

This is a genuine but moderate-priority authentication-hardening flaw, not a critical remote-code issue. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N, score 6.3 Medium) is internally consistent with the description: an unauthenticated network attacker (PR:N) can abuse the missing rate limit, but impact is only partial (VC:L/VI:L) because the outcome is account takeover via guessing rather than direct data or system compromise, and the AT:P requirement reflects that a specific configuration/action layout must be present. There is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active or widespread exploitation - the vuln.today decision label is 'this_month' (not act_now/emergency), which matches a fixable, non-emergency issue. No working exploit code is supplied (only vendor advisory and patch-commit references), so this is 'no public exploit identified at time of analysis.' The main caveat: real-world exploitability hinges on the OTP case - a short numeric one-time password guessable without limit for its full validity window is practically brute-forceable, which is the most serious concrete risk here; password guessing is throttled only by password strength. Because EPSS/KEV data is simply absent (not low), risk ranking relies on the CVSS signal plus the vendor's own 'this_month' triage.

Exploit ScenarioDerived

An unauthenticated attacker targets an Elixir/Phoenix application built on ash_authentication (5.0.0-rc.4 through rc.15) whose sign-in, password-reset, magic-link or OTP actions were written onto the user resource by the generators, where the brute_force_strategy preparation was never actually applied. The attacker repeatedly submits password or one-time-password guesses against a known account with no lockout or throttling; a numeric OTP can be exhaustively guessed for the entire time it remains valid, enabling account takeover. No public exploit code is identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 03, 2026

AshAuthentication 5.0.0-rc.4 through rc.15 can be brute-forced without limit against password sign-in, password-reset requests, magic-link requests and one-time-password flows, because a configured brute_force_strategy only attaches its preparation to the actions the strategy generates itself and never verifies that resource-defined actions carry it. Projects scaffolded with mix ash_authentication.install followed by mix ash_authentication.upgrade, or with mix ash_authentication.add_strategy.otp, end up in precisely that unprotected state, and OTP sign-in under registration_enabled? true escapes protection entirely because preparations do not run on create actions. The unauthenticated attack is a guessing campaign, not a single-shot exploit, so the practical outcome is account takeover by password or OTP guessing plus unlimited password-reset and magic-link email generation; the vendor-released fix is 5.0.0-rc.16 and no public exploit code or active exploitation has been identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade ash_authentication to 5.0.0-rc.16 (advisory https://github.com/team-alembic/ash_authentication/security/advisories/GHSA-55gf-3263-4r39, fixes in commits 800caa0d4a5bee1f28ad427f4c12fab72003a577 and 7117b5da5b73ee4cdb372e4adfbaff409b527125). Be aware that the patch deliberately makes an unprotected configuration a compile error, so applications that relied on the previous behaviour will not compile until they add the missing preparation or switch strategy; treat the compile failure as the migration checklist, since it names each action and the prepare line to add. To close the gap before upgrading, per the advisory, add prepare {AshAuthentication.AddOn.AuditLog.IdentityBruteForcePreparation, action_name: :sign_in_with_password} to password sign-in, password reset request, magic link request and OTP request actions defined on the resource, add prepare {AshAuthentication.AddOn.AuditLog.BruteForcePreparation, action_name: :sign_in_with_otp} to the OTP sign-in read action, or simply delete the resource-defined action so the strategy generates its own protected version; with brute_force_strategy {:preparation, MyModule} add prepare MyModule instead. For OTP with registration_enabled? true, switch to brute_force_strategy :rate_limit, the only strategy accepted in that mode after the fix. Separately, set write_batching enabled? false on the audit log resource to remove the up-to-ten-second delay before a failed attempt is counted, at the cost of synchronous writes on the login path.

Affected VersionsENISA

ash_authentication 5.0.0-rc.4 <5.0.0-rc.16
ash_authentication 800caa0d4a5bee1f28ad427f4c12fab72003a577 <7117b5da5b73ee4cdb372e4adfbaff409b527125

Affected Packages

euvd ash_authentication fix: 5.0.0-rc.16

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 built on the Ash framework, where a strategy (password, magic_link, OTP) declares actions such as sign_in_with_password, request_password_reset_token, request_magic_link, request_otp and sign_in_with_otp. Brute-force protection is implemented as an Ash preparation - AshAuthentication.AddOn.AuditLog.IdentityBruteForcePreparation, AshAuthentication.AddOn.AuditLog.BruteForcePreparation, or a module supplied via {:preparation, module} - that increments and checks failure counters against the audit log resource within a configurable window and failure threshold. The strategies injected that preparation only into actions they generated themselves; when the resource declared an action with the same name, the strategy reused it verbatim and nothing validated that the preparation was present, so the brute_force_strategy setting compiled successfully while enforcing no limit (CWE-307). A second gap existed for OTP with registration_enabled? true, whose sign-in is a create action and therefore never runs preparations at all. The upstream fix (commits 800caa0d and 7117b5da) turns a strategy whose protected actions lack the preparation into a compile error naming each action and the prepare line to add, teaches mix ash_authentication.add_strategy.otp to emit the preparations, and refuses {:preparation, module} for OTP with registration_enabled? true, leaving :rate_limit as the only accepted strategy in that mode. Note that the audit log batches writes by default, so a failed attempt can be counted up to ten seconds late unless write_batching enabled? false is set on the audit log resource.

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 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Unauthenticated network abuse of a missing rate limit (AV:N/PR:N/UI:N); impact is partial account compromise via guessing (C:L/I:L, A:N), consistent with the vendor 4.0 vector.

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

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

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

DescriptionCVE.org

Improper Restriction of Excessive Authentication Attempts vulnerability in team-alembic ash_authentication allows an unauthenticated attacker to guess passwords and one-time passwords without limit.

The password, magic link and OTP strategies enforce brute_force_strategy by adding a preparation only to the actions they generate. When the resource defines one of those actions itself, the strategy uses it as written and nothing checked that it carried the preparation, so the setting compiled and applied no limit. The generators produce exactly this: mix ash_authentication.install writes sign_in_with_password, request_password_reset_token and request_magic_link, mix ash_authentication.upgrade then adds brute_force_strategy to those strategies, and mix ash_authentication.add_strategy.otp writes its OTP actions without the preparation. Separately, with registration_enabled? true the OTP sign-in is a create action, which preparations do not run on, so brute_force_strategy {:preparation, module} never applied to it.

This issue affects ash_authentication: from 5.0.0-rc.4 before 5.0.0-rc.16.

Threat Intelligence Overview

Prevalence
Low
Niche Elixir/Ash auth library, only pre-release RC versions affected
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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-65633 HIGH
7.6 Aug 25

JWT token replay in AshAuthentication exposes any application using the stateless bearer-token path to full account take

CVE-2026-119215 HIGH
7.6 Nov 03

An authenticated account holder can bind a TOTP authenticator secret they control onto another user's account in AshAuth

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

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