Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify ash_authentication sign-in/OTP endpoint
-
ExploitSubmit unlimited password or OTP guesses
-
ExecutionBypass absent brute-force limit
-
ImpactGuess 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Ash Authentication
View allAccount 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
Ash Authentication is an authentication framework for Elixir applications. Rated medium severity (CVSS 6.3), this vulner
Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov
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
Unconfirmed accounts can obtain an authenticated session in the AshAuthentication Elixir library, defeating the mandator
Revoked sessions continue to be treated as fully authenticated on affected AshAuthentication and AshAuthentication Phoen
Reusing a leaked single-use magic-link token is possible in the Elixir library ash_authentication because its validity c
Denial of service in the AshAuthentication API-key sign-in strategy lets an unauthenticated, remote attacker exhaust ser
JWT token replay in AshAuthentication exposes any application using the stateless bearer-token path to full account take
An authenticated account holder can bind a TOTP authenticator secret they control onto another user's account in AshAuth
Authentication bypass in the AshAuthentication library for Elixir/Ash lets an authenticated attacker who holds a valid s
An authenticated account-takeover primitive exists in the Elixir library AshAuthentication (ash_authentication) versions
EUVD-2026-116025
NVD
CVE.org
Vulnrichment
GitHub
Exploit-DB