CVE-2026-115635 AshPostgres returns another tenant's record for a skipped upsert when return_skipped_upsert? is set

Medium 6.0 Published Updated
Exploited in the wild
Not known
Fix
Available

What is CVE-2026-115635?

CVE-2026-115635 is a medium-severity vulnerability in ash-project ash_postgres, published on 25 Oct 2026.

Official description

Incorrect Authorization vulnerability in ash-project ash_postgres allows a user to read another tenant's record through a skipped upsert.

When Ash.bulk_create/4 or a single create runs as an upsert with return_skipped_upsert?: true and the upsert is skipped (for example because its upsert_condition does not hold), AshPostgres.DataLayer reads the existing row back by the upsert identity in do_bulk_create/3 and upsert/4. That lookup did not apply the resource's attribute multitenancy, so on a resource using strategy :attribute it could match and return the row of another tenant with the same identity values, exposing its fields to the caller.

This issue affects ash_postgres: from 2.6.22 before 2.15.2.

Weakness: CWE-863

Which versions are affected by CVE-2026-115635?

1 open source package ship an affected version, including ash_postgres.

PackageAffectedFixed in
ash_postgres HexFrom 2.6.222.15.2

How do I fix CVE-2026-115635?

Upgrade ash_postgres to 2.15.2 or later.

Is CVE-2026-115635 being exploited?

There is no known exploitation of CVE-2026-115635 in the wild and no public exploit code.

Sources

Also known as EEF-CVE-2026-115635, GHSA-36hg-wwp2-fg8w.

Is CVE-2026-115635 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free