Description
Missing Authorization vulnerability in ash-project ash allows an actor to update records forbidden by resource policies through the atomic path of Ash.update_many/4.

Ash.update_many/4 runs as a single atomic statement (a data-layer update_many, for example a SQL MERGE) whenever an atomic strategy is used and the data layer supports it. Ash.Actions.Update.UpdateMany (lib/ash/actions/update/update_many.ex) took that path even under authorize?: true without applying the resource's policies, so the statement updated every row matched by primary key regardless of the policy filter that authorization would impose. An actor could therefore update records the policies forbid, such as rows belonging to another actor or tenant. The fix restricts the atomic path to data layers supporting changeset filters when authorizing, authorizes each changeset, and merges the resulting policy filter into each changeset so the statement only touches authorized rows.

This issue affects ash: from 3.29.0 before 3.32.2.
Published: 2026-09-01
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Ash.update_many/4 was designed to perform a single atomic update using a data‑layer operation such as SQL MERGE. The vulnerability stems from the fact that, when the optional authorize?: true flag is used, the atomic path still bypasses the resource policy checks. Consequently, an attacker can issue a single update_many call that changes rows belonging to other users, tenants, or otherwise protected data. The flaw is a privilege escalation flaw classified as CWE‑862 and can lead to unauthorized data integrity violations.

Affected Systems

The affected product is the open‑source Ash web framework by the ash‑project. Versions from 3.29.0 up to, but not including, 3.32.2 are affected. Any deployment without an upgrade to 3.32.2 or newer must be considered vulnerable.

Risk and Exploitability

The CVSS v3 score is 5.9, indicating a moderate severity for accidental or targeted exploitation. EPSS data is not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is a legitimate API consumer of the framework that opts into authorization checks while invoking the bulk update helper. Since the atomic path bypasses policy enforcement, a malicious actor with any valid user session could craft a payload that updates records owned by another tenant, thus compromising multiple aspects of confidentiality and integrity. No additional exploitation steps are required beyond executing the update_many call.

Generated by OpenCVE AI on September 1, 2026 at 05:26 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade ash to version 3.32.2 or later to receive the fix that correctly authorizes the atomic update path
  • Replace or remove any uses of Ash.update_many/4 in critical code paths when running under older versions
  • If an upgrade cannot be performed immediately, audit your codebase for potential unprotected bulk updates and add explicit authorization checks around those calls

Generated by OpenCVE AI on September 1, 2026 at 05:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 01 Sep 2026 04:00:00 +0000

Type Values Removed Values Added
Description Missing Authorization vulnerability in ash-project ash allows an actor to update records forbidden by resource policies through the atomic path of Ash.update_many/4. Ash.update_many/4 runs as a single atomic statement (a data-layer update_many, for example a SQL MERGE) whenever an atomic strategy is used and the data layer supports it. Ash.Actions.Update.UpdateMany (lib/ash/actions/update/update_many.ex) took that path even under authorize?: true without applying the resource's policies, so the statement updated every row matched by primary key regardless of the policy filter that authorization would impose. An actor could therefore update records the policies forbid, such as rows belonging to another actor or tenant. The fix restricts the atomic path to data layers supporting changeset filters when authorizing, authorizes each changeset, and merges the resulting policy filter into each changeset so the statement only touches authorized rows. This issue affects ash: from 3.29.0 before 3.32.2.
Title Ash.update_many/4 atomic path skips resource policy authorization, allowing updates to forbidden records
First Time appeared Ash-project
Ash-project ash
Weaknesses CWE-862
CPEs cpe:2.3:a:ash-project:ash:*:*:*:*:*:*:*:*
Vendors & Products Ash-project
Ash-project ash
References
Metrics cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-01T03:47:14.278Z

Reserved: 2026-08-31T01:00:09.774Z

Link: CVE-2026-82746

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-01T04:18:04.977

Modified: 2026-09-01T04:18:04.977

Link: CVE-2026-82746

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-01T05:30:03Z

Weaknesses