Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

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

Quick assessment

Affected
ash-project ash_postgres
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

ash-project 中的 ash_postgres 存在授权不当漏洞,允许用户通过被跳过的 upsert 操作读取其他租户的记录。 当 或单个 操作以 upsert 模式运行,且配置了 ,若 upsert 因条件不满足(例如 未成立)而被跳过时, 会在 和 中根据 upsert 身份标识回读现有行。该查找过程未应用资源属性的多租户策略(multitenancy),因此对于采用 策略的资源,可能错误匹配并返回具有相同身份标识值的另一租户的行,从而将其字段暴露给调用者。 此问题影响 ash_postgres 从 2

CVSS 6.0 · Medium

Affected Version Matrix 2

VendorProduct Version RangeStatus
ash-project ash_postgres 2.6.22< 2.15.2 affected
af0903f1380468bbe1b61fe65acb33772b5e24a5< 8aa81220c401cae412d21078d11b3519ea25d3a9 affected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-115635

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
AshPostgres returns another tenant's record for a skipped upsert when return_skipped_upsert? is set
Source: CVE Program / CVE List V5
Vulnerability 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.
Source: CVE Program / CVE List V5
CVSS Information
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
Source: CVE Program / CVE List V5
Vulnerability Type
授权机制不正确
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
ash-project ash_postgres 2.6.22 ~ 2.15.2 cpe:2.3:a:ash-project:ash_postgres:*:*:*:*:*:*:*:*
ash-project ash_postgres af0903f1380468bbe1b61fe65acb33772b5e24a5 ~ 8aa81220c401cae412d21078d11b3519ea25d3a9 cpe:2.3:a:ash-project:ash_postgres:*:*:*:*:*:*:*:*

II. Public POCs for CVE-2026-115635

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-115635

请登录查看更多情报信息。

Other References for CVE-2026-115635 (5)

Same Patch Batch · ash-project · 2026-10-25 · 3 CVEs total

CVE-2026-114214 6.0 MEDIUM Loading a through relationship with a limit of 1 in Ash ignores the through path and retur
CVE-2026-115627 6.0 MEDIUM AshPostgres ignores attribute multitenancy on the join resource when loading many_to_many

IV. Related Vulnerabilities