CVE-2026-77454: falha de média gravidade em ash-project ash_sql
exists/2 predicate silently dropped on limited relationships with a parent() filter in AshSql
Publicada em · Atualizada em
Aviso por e-mail quando ela entrar no KEV, ganhar PoC pública ou subir de nota.
13Vexday Risk Score
Sem sinal de exploração. Nenhum artefato público de exploração conhecido até agora.
ssvc Trackcvss 5.9epss 0.2%
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.
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
Produtos afetados
ash-project · ash_sqlCVEs relacionadas — ash-project ash_sql
No mesmo produto, das mais perigosas para as menos.
CVE-2026-80227LOWSQL string_trim removes only spaces, diverging from in-memory trimming in AshSqlEPSS 0.4%CVE-2026-78691LOWUnescaped backslash allows LIKE wildcard injection in AshSql string searchEPSS 0.2%CVE-2026-81316LOWSame-named aggregates with differing filters are conflated in AshSqlEPSS 0.2%CVE-2026-81318LOWDistinct-query aggregate drops the tenant schema prefix, leaking across tenants in AshSqlEPSS 0.2%