Technical impact
AshPostgres exposes an incorrect authorization flaw that allows a legitimate user to read records belonging to another tenant when using the upsert feature with the return_skipped_upsert? option enabled. Because the lookup that retrieves the existing row for a skipped upsert does not apply the resource's attribute-based multitenancy setting, an upsert that is skipped on the calling tenant can cause the database to return data owned by a different tenant. This leads to unauthorized disclosure of sensitive information and is identified as CWE‑863.
Affected Systems
The issue affects the ash-project's AshPostgres library. All versions starting with 2.6.22 up through (but excluding) 2.15.2 are vulnerable. Deployments of ash_postgres that rely on the upsert functionality with return_skipped_upsert? set to true are at risk.
Risk and Exploitability
The vulnerability has a CVSS score of 6, indicating medium severity. No EPSS score is currently available, and it is not listed in CISA's KEV catalog. The likely attack vector would be via the application’s API or service layer that accepts upsert requests; an attacker with a valid user context can manipulate the request to trigger the vulnerable path. Although the exploitation does not require elevated privileges beyond a typical application user, the ability to read another tenant’s data could be valuable, especially in multi‑tenant environments.