CyberSecBulletin
CVE-2026-96581NVD status: Deferred

ash: Authorization Bypass Through User-Controlled Key

CVE-2026-96581 is a high-severity authorization bypass through user-controlled key vulnerability in ash from Ash-project, with a CVSS 4.0 base score of 7.6 out of 10. It can be exploited remotely over the network by an attacker with a low-privileged account, without any action from a user. The record lists versions 3.37.2, c9f0cdb31e7c084def05f3f5be69dd7bb7721754 as the first without the flaw, so updating ash to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.26% chance of exploitation within 30 days, which is low compared with other CVEs.

Next patch cycle

High severity with no evidence of exploitation so far.

What to do

  1. Update ash to 3.37.2 or c9f0cdb31e7c084def05f3f5be69dd7bb7721754, whichever matches your release line, or a later version.
  2. Read the advisory on github.com for workarounds and exact fixed builds.

Affected products and versions

VendorProductAffected versionsFixed in
Ash-projectash1.22.0 up to, but not including, 3.37.2; 2333d01ddf37e5909769a513059b27e3183331c5 up to, but not including, c9f0cdb31e7c084def05f3f5be69dd7bb77217543.37.2, c9f0cdb31e7c084def05f3f5be69dd7bb7721754

Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.

How the severity score breaks down

Attack vector
NetworkCan be exploited remotely over a network, including the internet.
Attack complexity
LowNo special conditions are needed; the attack works reliably.
Attack requirements
PresentThe target must be in a specific state or configuration for the attack to work.
Privileges required
LowA basic user account is enough.
User interaction
NoneNo action by a victim is required.
Confidentiality (vulnerable system)
HighSerious loss of confidentiality on the vulnerable system.
Integrity (vulnerable system)
HighSerious loss of integrity on the vulnerable system.
Availability (vulnerable system)
NoneNo loss of availability on the vulnerable system.
Confidentiality (other systems)
NoneNo loss of confidentiality on systems beyond the vulnerable one.
Integrity (other systems)
NoneNo loss of integrity on systems beyond the vulnerable one.
Availability (other systems)
NoneNo loss of availability on systems beyond the vulnerable one.

Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X. Scored by CNA.

Official 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.

Source: the CVE record as published by its numbering authority, via NVD and CVE.org.

The underlying weakness: Authorization Bypass Through User-Controlled Key

The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.

How developers prevent this class of flaw

  • For each and every data access, ensure that the user has sufficient privilege to access the record that is being requested.
  • Make sure that the key that is used in the lookup of a specific user's record is not controllable externally by the user or that any tampering can be detected.
  • Use encryption in order to make it more difficult to guess other legitimate values of the key or associate a digital signature with the key so that the server can verify that there has been no tampering.

More Authorization Bypass Through User-Controlled Key vulnerabilities (CWE-639)

Timeline

  1. CVE record published.
  2. CISA published its SSVC assessment (exploitation: none, automatable: no, technical impact: total).

References

Other vulnerabilities in ash

All ash vulnerabilities

Recent Authorization Bypass Through User-Controlled Key vulnerabilities

Spotted an error? Tell us.