CVE-2026-78699
nicheUnchecked return value in AshPostgres rename_tenant lets tenants access others' data
ash_postgres (the PostgreSQL data layer for the Elixir Ash framework) contains an unchecked return value flaw: AshPostgres.MultiTenancy.rename_tenant/3 runs ALTER SCHEMA ... RENAME TO via the non-raising Ecto.Adapters.SQL.query/2, discards the result, and unconditionally returns :ok even when PostgreSQL rejects the rename. If a user can drive a tenant rename to a name that collides with an existing tenant's schema, the manage_tenant update action sees success and commits the tenant row pointing at that other tenant's live schema. The renamed tenant's subsequent reads and writes then run against the other tenant's data, giving a low-privileged actor cross-tenant data exposure and integrity loss (CVSS 4.0: 7.2, AV:L/PR:L with high confidentiality and integrity impact). Only applications using ash_postgres 0.25.0 through before 2.13.0 that use schema-based multi-tenancy with a user-reachable tenant-rename path are affected. No public proof-of-concept, KEV listing, or reported exploitation is known; EPSS estimates roughly a 0.1% chance of exploitation within 30 days.
What to do: Upgrade ash_postgres to 2.13.0 or later, which corrects the unchecked rename result. Until patched, restrict tenant renames to trusted/privileged operators and pre-check for schema-name collisions (or verify PostgreSQL responses when calling rename_tenant directly). Also audit tenant tables for rows renamed since deployment whose stored name matches another tenant's schema, since past silent failures may have silently repointed tenants at the wrong data.
| ash-project ash_postgres | >= 0.25.0 and < 2.13.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Unchecked Return Value vulnerability in ash-project ash_postgres allows a user who can drive a tenant rename to a name that collides with an existing tenant's schema to have their tenant record repointed at that other tenant's live schema, gaining access to its data. AshPostgres.MultiTenancy.rename_tenant/3 issues the ALTER SCHEMA ... RENAME TO ... with the non-raising Ecto.Adapters.SQL.query/2, discards its {:ok, _} | {:error, _} result, and unconditionally returns :ok. PostgreSQL rejects the rename when the target schema already exists (and on insufficient privilege or lock timeout), but that failure never reaches the caller. The calling manage_tenant update action therefore sees success and commits the tenant row with the new name, which is the schema of a different existing tenant, so subsequent reads and writes for that tenant run against the other tenant's data. This issue affects ash_postgres: from 0.25.0 before 2.13.0.
- Weakness
- CWE-252
- Vector
- CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/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
In the news0 stories
No ingested article mentions this CVE yet.