PT-2026-51581 · Ash · Ash
CVSS v4.0
5.9
Medium
| Vector | AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N |
Name of the Vulnerable Software and Affected Versions
ash-project ash versions 3.0.0 through 3.29.2
Description
An issue exists where users can set the value of a private action argument intended to be controlled exclusively by trusted server-side code. Action arguments declared with
public?: false are meant for internal settings, such as those via Ash.Changeset.set private argument/3, and should not be settable via end-user input. However, filtering of these private arguments is incomplete when a changeset is built from a parameter map. In regular changeset paths (for create, for update, for destroy), private arguments are only stripped if the parameter key is an atom; if the key is a binary (string), which is common for user-supplied parameters, the argument is retained. In the atomic path (Ash.Changeset.fully atomic changeset/4, including atomic and bulk updates), private arguments are not stripped regardless of the key type. This allows an attacker to inject values into private arguments, potentially leading to privilege escalation or integrity violations, especially if arguments like acting user id are used for authorization or record ownership.Recommendations
Update ash-project ash to version 3.29.3 or later.
Exploit
Fix
LPE
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Ash