CVE-2026-96581
Last modified
CVE-2026-96581 is a high-severity vulnerability rated 7.6/10 on the CVSS scale. Authorization Bypass Through User-Controlled Key vulnerability in ash-project ash allows a user of one tenant to read, overwrite and take over another tenant's records via an upserting create action. Under attribute multitenancy, Ash.Actions.Create (lib/ash/actions/create/create.ex) and Ash.Actions.Create.Bulk (lib/ash/actions/create/bulk.ex) upserted on the primary key, or on an all_tenants? identity, without scoping the conflicting record to the request's tenant. A caller of a create action with upsert? true that accepts the primary key, supplying a record id from another tenant, updated that record's upsert fields and received all of its attributes in the result. EPSS estimates a 0.26% chance of exploitation in the next 30 days.
Description
Authorization Bypass Through User-Controlled Key vulnerability in ash-project ash allows a user of one tenant to read, overwrite and take over another tenant's records via an upserting create action. Under attribute multitenancy, Ash.Actions.Create (lib/ash/actions/create/create.ex) and Ash.Actions.Create.Bulk (lib/ash/actions/create/bulk.ex) upserted on the primary key, or on an all_tenants? identity, without scoping the conflicting record to the request's tenant. A caller of a create action with upsert? true that accepts the primary key, supplying a record id from another tenant, updated that record's upsert fields and received all of its attributes in the result. With the default upsert fields the tenant attribute was written too, moving the record into the caller's tenant. Read and update policies do not run for upserts, and tenant-scoped create policies pass because the tenant is the caller's own. This issue affects ash: from 1.22.0 before 3.37.2.
Metrics
Weakness Enumeration
Affected Software
Source: CNA advisory (CVE.org). NVD analysis pending.
| Vendor | Product | Versions |
|---|---|---|
| ash-project | ash | >= 1.22.0, < 3.37.2 |
| ash-project | ash | >= 2333d01ddf37e5909769a513059b27e3183331c5, < c9f0cdb31e7c084def05f3f5be69dd7bb7721754 |
References
Timeline
- Published
- Last Modified
- Status
- Deferred
Frequently Asked Questions
What is CVE-2026-96581?
How severe is CVE-2026-96581?
How do I fix CVE-2026-96581?
How Strix Helps
- Uncovering a hidden BOLA in Appsmith's snapshot logicStrix autonomously discovered a BOLA/IDOR vulnerability in Appsmith's snapshot deletion path.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-96574The User Frontend – Membership, User Registration, User Prof…6.4
- CVE-2026-96575The Transliterator – Multilingual and Multi-script Text Conv…7.2
- CVE-2026-96577A flaw was found in oc-mirror. During mirroring operations, …7.1
- CVE-2026-96578The GSpeech TTS – WordPress Text To Speech Plugin plugin for…7.2
- CVE-2026-9658Plack::Middleware::Security::Common versions before 0.13.1 f…7.3
- CVE-2026-96580Gitea expanded a workflow's static `strategy.matrix` into it…7.5
- CVE-2026-96582A HID report descriptor is a sequence of items, each declari…4.9
- CVE-2026-96587The Viidure Android application embeds permanent, plaintext …10
- CVE-2026-96589When a private repository is transferred to a user who lacks…4.3
- CVE-2026-9659Multiple exploitable stack-based buffer overflow vulnerabili…9.1
- CVE-2026-96594The Gitea API endpoint `GET /api/v1/repos/{owner}/{repo}/med…6.1
- CVE-2026-96596Loop with Unreachable Exit Condition ('Infinite Loop') vulne…5.9
Are you affected by CVE-2026-96581?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
