CVE-2026-93477

Private action arguments can be set by user input on the bulk destroy and bulk update paths in Ash

MEDIUM
5.9
CVSS Score
Published: September 25, 2026 at 07:08 AM UTC
Updated: September 25, 2026 at 02:17 PM UTC
1 product affected across 1 vendorAsh

Using ash by ash-project?

Get instant alerts when new vulnerabilities affect ash - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.9
Exploit prediction
EPSS 0.2%
SSVC
No known exploit

Description

Improperly Controlled Modification of Dynamically-Determined Object Attributes vulnerability in ash-project ash allows a user to set the value of a private action argument on the bulk destroy and bulk update paths. Action arguments declared with public?: false are meant to be set only by trusted server-side code (for example via Ash.Changeset.set_private_argument/3) and must not be settable from end-user input. CVE-2026-55736 fixed the non-bulk changeset path to strip private arguments from user-supplied parameter maps, but the bulk destroy and bulk update paths were not covered. Ash.Actions.Destroy.Bulk.base_changeset/5 and Ash.Actions.Update.Bulk.base_changeset/5 match every key in the caller-supplied parameter map against all of the action's arguments with no public? check, then apply the matches to the base changeset. A caller who can submit parameters to a bulk destroy or bulk update action (for example through AshJsonApi, AshGraphql, or a controller that forwards request parameters to Ash.bulk_destroy/4 or Ash.bulk_update/4) can therefore set any private argument of that action, including one referenced by an arg(...) template in the action's changes or validations. Depending on how the application uses the argument (for example an acting_user_id driving authorization or record ownership, or audit metadata), this can lead to an integrity violation or privilege escalation. The fix requires public? in the argument matching on both bulk paths; private arguments remain settable server-side via the :private_arguments option. This issue affects ash: from 2.17.15 before 3.33.11.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

90%
2.17.15 ≤ v < 3.33.112.17.158c17434803b2e91de522bdfbd0ca918e5d5898df
Vendor states this is fixed in 6b7ac53a0a2532291eb940d7beaf0fbb2da6fc4f (fixed)
Affected range stops below 3.33.11, so it looks safe — our inference, not a vendor statement

Remediation

No guide yet

No remediation guidance has been written for this CVE yet. What the record does show:

References (5)

Related
Source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
https://cna.erlef.org/cves/CVE-2026-93477.html
Vendor Advisory
Source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
https://github.com/ash-project/ash/security/advisories/GHSA-c2p4-p7q6-hr2j
Related
Source: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
https://osv.dev/vulnerability/EEF-CVE-2026-93477

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

5.9MEDIUMEEF
Vector?

Quick Info

StatusDEFERRED
CWE
CWE-915

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card