CVE-2026-115627

AshPostgres ignores attribute multitenancy on the join resource when loading many_to_many and through relationships, returning records related through other tenants' rows

Published Oct 25, 2026 CVSS 4.0 · 6 Medium EPSS < 1% KEV · Not listed
Description
Incorrect Authorization vulnerability in ash-project ash_postgres allows a user to load destination records linked to a source record only through another tenant's join rows.

When a many_to_many relationship, or a through relationship, is loaded with a lateral join (for example with a per-record limit or sort), AshPostgres.DataLayer builds the query for the join resource, and for each resource along a through path, in lateral_join_query/3 and through_step_queries/4 without running that resource's read action, which is where attribute multitenancy is applied. When those resources use strategy :attribute multitenancy, rows belonging to other tenants were joined, so the load returned destination records that the caller's tenant is not related to.

This issue affects ash_postgres: from 0.38.0 before 2.15.2.

Analysis

AI-generated

Technical impact

The flaw occurs because AshPostgres ignores the multitenancy attribute when building join queries for many_to_many and through relationships. As a result, the lateral join can include rows from other tenants, and a user can request a relationship load that returns records belonging to unrelated tenants. This leads to an unauthorized disclosure of tenant data, violating confidentiality and potentially enabling further exploitation.

Affected Systems

The affected product is AshPostgres from the ash‑project repository. Versions from 0.38.0 up to and including 2.15.1 are vulnerable. Newer releases of 2.15.2 and later incorporate the fix, so only installations of these earlier versions should be considered at risk.

Risk and Exploitability

The CVSS base score is 6.0, indicating a medium severity impact assuming an attacker can read the sensitive records. The EPSS is not available, so the likelihood of exploitation in the wild cannot be quantified, but the vulnerability is not listed in the CISA KEV catalog. The probable attack vector is a remote request made through the application’s API or interface that triggers a many_to_many or through load, which is assumed given how AshPostgres performs lateral joins when such requests are processed. The vulnerability requires that the user have permission to read records for their own tenant; it is therefore not a privilege escalation attack but reveals data that should have been inaccessible.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade AshPostgres to version 2.15.2 or newer to apply the fix that enforces multitenancy during join queries.
  • If an upgrade is not immediately possible, restrict or disable endpoints that perform many_to_many or through relationship loading for unauthenticated or lower‑privileged users, or apply application‑level access control to reject requests that could return cross‑tenant data.
  • Deploy runtime monitoring to detect unexpectedly large or cross‑tenant query results, and review logs for attempts to access data from other tenants.
  • Consider adding a patch or mitigation script to enforce multitenancy checks at the repository or service layer until a new release is available.

Generated by OpenCVE AI on October 25, 2026 at 21:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Incorrect Authorization vulnerability in ash-project ash_postgres allows a user to load destination records linked to a source record only through another tenant's join rows. When a many_to_many relationship, or a through relationship, is loaded with a lateral join (for example with a per-record limit or sort), AshPostgres.DataLayer builds the query for the join resource, and for each resource along a through path, in lateral_join_query/3 and through_step_queries/4 without running that resource's read action, which is where attribute multitenancy is applied. When those resources use strategy :attribute multitenancy, rows belonging to other tenants were joined, so the load returned destination records that the caller's tenant is not related to. This issue affects ash_postgres: from 0.38.0 before 2.15.2.
Title AshPostgres ignores attribute multitenancy on the join resource when loading many_to_many and through relationships, returning records related through other tenants' rows
First Time appeared Ash-project
Ash-project ash Postgres
Weaknesses CWE-863
CPEs cpe:2.3:a:ash-project:ash_postgres:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash Postgres
References
Metrics cvssV4_0

{'score': 6, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
EEF
Published
Updated
Oct 26, 2026, 2:35 PM
Reserved
Oct 23, 2026, 1:00 PM
Status
Deferred
Published
Oct 25, 2026, 8:16 PM
Modified
Oct 26, 2026, 3:16 PM