ZeroHour

CVE-2026-78699

niche

Unchecked return value in AshPostgres rename_tenant lets tenants access others' data

CVSS 4.0
7.2 high
EPSS
<1%p2
Published
()
Modified
AI analysis

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.

Affected
ash-project ash_postgres>= 0.25.0 and < 2.13.0
Estimated exposure
nichelikely hundreds to a few thousand Elixir applications, of which only a subset (schema-based multi-tenancy users with user-triggered renames) is actually exposed — ash_postgres is a niche Hex/Elixir data layer with no published install base in the available data, and exposure further requires schema-based multi-tenancy plus a user-reachable manage_tenant rename action, so the plausible affected…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.