CVE-2026-81316 Same-named aggregates with differing filters are conflated in AshSql
Attackers can bypass authorization filters to read aggregate data across tenancy boundaries due to query conflation in AshSql.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-81316?
CVE-2026-81316 is a low-severity missing authorization vulnerability in ash-project ash_sql, published on 30 Aug 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
Incorrect Authorization vulnerability in ash-project ash_sql allows a caller to receive an aggregate value computed over rows a more restrictive filter should have excluded, disclosing counts, sums, or lists across an authorization or tenancy boundary.
AshSql.Aggregate.different_queries?/2 reports two aggregate queries as different only when their filter and their sort both differ. Aggregate queries rarely carry a sort, so two aggregates that share a name but carry entirely different filters compare as identical. The colliding aggregate keeps its name and is treated as already computed, and select_aggregates returns the first-registered variant's value. The same name reaches the builder twice with different filters when actor or tenant context is stamped into each aggregate's query, so a narrowly filtered aggregate can be served the value of a previously registered broad one.
This issue affects ash_sql: from 0.1.0 before 0.7.1.
Weakness: CWE-863
Which versions are affected by CVE-2026-81316?
1 open source package ship an affected version, including ash_sql.
| Package | Affected | Fixed in |
|---|---|---|
ash_sql Hex | From 0.1.0 | 0.7.1 |
How do I fix CVE-2026-81316?
Upgrade ash_sql to 0.7.1 or later.
Upgrade, and check permissions on every request on the server, not only in the interface. More about Missing authorization.
Is CVE-2026-81316 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-81316 exists.
Sources
Also known as EEF-CVE-2026-81316, GHSA-v7pf-wjxc-7j5m.