Severity by source
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable via application API; high complexity due to specific dual-condition relationship configuration requirement; low privileges as attacker must be an authenticated actor with any related row.
Primary rating from Vendor (6b3ad84c-e1a6-4bf7-a703-f496b71e49db).
CVSS VectorVendor: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Lifecycle Timeline
4DescriptionCVE.org
Incorrect Authorization vulnerability in ash-project ash_sql allows a caller to bypass a scoping or authorization filter expressed as exists/2 over a relationship that declares both a limit (or from_many?) and a parent(...)-referencing filter or sort.
AshSql.Join.related_query/3 skips the caller-supplied exists predicate for such relationships and delegates it to limit_from_many/5. When the relationship's own filter or sort references parent(...), limit_from_many/5 takes a branch that drops both the limit and the predicate, emitting a bare correlated EXISTS with no predicate. The check then matches any record that has any related row. Most severely, when the expression backs a policy (for example authorize_if expr(exists(memberships, user_id == ^actor(:id)))), the actor-scoping condition disappears and the policy passes for any actor with any related row.
This issue affects ash_sql: from 0.4.1 before 0.7.1.
AnalysisAI
Authorization policy bypass in ash_sql (versions 0.4.1 through 0.7.0) silently drops the caller-supplied exists/2 predicate when a relationship combines a limit or from_many? declaration with a parent(...)-referencing filter or sort. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation requires all three conditions to be simultaneously present: (1) the application uses ash_sql versions 0.4.1 through 0.7.0; (2) a relationship used in an `exists/2` policy expression is configured with both a limit (`:limit` option or `from_many?: true`) AND a `:filter` or `:sort` option that references `parent(...)`; (3) the attacker is an authenticated application actor who has at least one row in the related resource - any row, not necessarily one satisfying the intended actor-scoping predicate. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The CVSS 4.0 score of 5.9 Medium (AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N) is in partial tension with the vulnerability's real-world attack surface: while CVSS designates AV:L (local), ash_sql is a library embedded in web applications that typically expose resources over network APIs, making the effective attack surface for end users network-reachable rather than strictly local - teams should verify the AV:L designation with ash-project maintainers. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Upgrade ash_sql to version 0.7.1 or later, which applies the caller-supplied `exists/2` filter predicate in the `limit_from_many/5` parent-expression branch before emitting the EXISTS subquery; the fix is documented in commit 865fdd4e5e70724a23b19c048e6768c31d2209ab at https://github.com/ash-project/ash_sql/commit/865fdd4e5e70724a23b19c048e6768c31d2209ab and the full advisory at https://github.com/ash-project/ash_sql/security/advisories/GHSA-8v9m-8pxv-738c. … Detailed patch versions, workarounds, and compensating controls in full report. |
Threat intelligence, references, and detailed analysis are available after sign-in.
Same weakness CWE-863 – Incorrect Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-68198