Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to target application
-
DeliveryLocate AshPhoenix.FilterForm-backed resource endpoint
-
ExploitSubmit filter request with path pointing to private relationship
-
ExecutionObserve presence or absence of returned rows
-
PersistVary filter values across repeated requests
-
ImpactEnumerate existence of private related records
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | The attacker must hold at least a low-privilege authenticated session (PR:L per CVSS 4.0 vector). The target application must use AshPhoenix.FilterForm to expose filter functionality on an Ash resource that defines one or more relationships marked non-public (public?: false or omitted). The attacker supplies crafted path or field form parameters referencing those private relationship names. Exploitation is limited to a confidentiality oracle - no write access or denial-of-service capability is obtained. Applications not using AshPhoenix.FilterForm, or whose resources define no private relationships accessible via filter forms, are not affected. The CVSS 4.0 AT:P metric confirms that specific deployment conditions (FilterForm usage with private relationships) are required, limiting exposure beyond authenticated access alone. |
| Impact | The CVSS 4.0 score of 2.3 (Low) accurately reflects the constrained impact: only confidentiality is affected (VC:L), with no integrity or availability impact. The AT:P metric captures a genuine deployment precondition - the application must use AshPhoenix.FilterForm and define private relationships in its Ash resource schema. Authentication is required (PR:L), so unauthenticated users cannot exploit this. No CISA KEV listing and no public proof-of-concept reduce urgency further. Practical impact is a boolean oracle: attackers learn whether private related records exist but do not obtain field values directly, limiting information disclosure severity. Risk is highest in applications where private relationships encode sensitive associations (e.g., billing linkages, role mappings, restricted user relationships) that could be enumerated through repeated filter probing. EPSS score is absent from input data, so exploitation probability cannot be quantified independently. The low CVSS score and AT:P requirement together suggest this is a real but narrow-impact issue warranting a routine patch cycle rather than emergency response. |
| Exploit ScenarioDerived | An authenticated application user submits a filter form request with the path parameter set to a private Ash relationship name - for example, path=author where author carries public?: false. By toggling the filter value and observing whether the response returns rows or an empty result set, the attacker builds a binary oracle to determine whether matching private related records exist, and repeats across different values to enumerate private relational data. No public proof-of-concept has been identified at time of analysis; the attack requires only standard HTTP form interaction from an authenticated session. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
FilterForm in ash_phoenix (versions 0.6.0-rc.1 through 2.3.24) exposes private relationship data to authenticated users by resolving attacker-controlled filter path parameters through private Ash relationship traversal rather than the public-only gate. By supplying crafted path or field form values targeting non-public relationships, an authenticated attacker converts query result row counts into a boolean oracle over data the resource author explicitly marked private. The CVSS 4.0 score is 2.3 (Low); no active exploitation is identified and no public proof-of-concept exists at time of analysis.
RemediationAI
Vendor-released patch: ash_phoenix 2.3.25. Upgrade to version 2.3.25 or later; this release replaces all internal calls to Ash.Resource.Info.related/2 with a public_related/2 helper backed by Ash.Resource.Info.public_relationship/2 that halts at the first non-public relationship hop. The patch commit is at https://github.com/ash-project/ash_phoenix/commit/a3691a3cb0947e8f2dc2c3cbff138a3e6197a15b and the advisory is at https://github.com/ash-project/ash_phoenix/security/advisories/GHSA-7xhg-xphm-f458. If an immediate upgrade is not feasible, add an application-layer allowlist that validates filter path and field parameters against an explicit set of permitted public relationship names before passing params to FilterForm; this trades development effort against residual risk but does not fix the underlying library behavior. Disabling FilterForm entirely on resources with private relationships eliminates the exposure at the cost of removing dynamic filter functionality.
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
ash_phoenix is an Elixir library integrating the Ash resource framework with Phoenix LiveView, providing AshPhoenix.FilterForm for dynamic data-filtering UIs. CWE-639 (Authorization Bypass Through User-Controlled Key) applies: user-supplied relationship path keys directly controlled which relationships were traversed during query construction. Internally, parse_path_and_field/2 called Ash.Resource.Info.related/2 - which traverses all relationships regardless of the public?: flag - to resolve each hop in the user-supplied path, checking only the terminal field for public status. A second vector allowed field=some_private_rel to be silently rewritten into an extra path segment, also bypassing the check. The resulting Ash.Query.Ref was passed directly to Ash.Query.do_filter/2, skipping the public-only enforcement that Ash.Filter.parse_input/2 would normally enforce. The fix (commit a3691a3) introduces a public_related/2 helper using Ash.Resource.Info.public_relationship/2 that halts traversal at the first non-public hop and validates the terminal field as public before building any reference.
Know when Ash Phoenix 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:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable filter form requires low-privilege authentication; no scope change; confidentiality impact limited to boolean oracle over private relationships only.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Authorization Bypass Through User-Controlled Key vulnerability in ash-project ash_phoenix lets an attacker who controls filter form parameters filter across relationships the resource author marked non-public, turning the returned rows into a boolean oracle over private related data.
AshPhoenix.FilterForm resolved every relationship hop in the user-supplied path with Ash.Resource.Info.related/2, which traverses private relationships, and only checked the terminal field for publicity. parse_path_and_field/2 also rewrote a field naming a relationship into an extra path segment, so field=some_private_rel was accepted too. Both path and field come straight from form params, and the resulting ref went to Ash.Query.do_filter/2 without the public-only enforcement of Ash.Filter.parse_input/2. The fix resolves each hop with Ash.Resource.Info.public_relationship/2, rejecting the first non-public hop, and requires the terminal field to be public.
This issue affects ash_phoenix: from 0.6.0-rc.1 before 2.3.25.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Ash Phoenix
View allTenant authorization bypass in ash_phoenix's SubdomainHook allows an authenticated user to cross tenant boundaries and a
Tenant hijacking and request degradation in AshPhoenix (ash_phoenix 2.1.26 through 2.3.24) allows unauthenticated remote
Sensitive form parameters leak into server logs, crash reports, and the Phoenix development error page in ash_phoenix ve
EUVD-2026-68337
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB