CVE-2025-48044: Ash has authorization bypass when bypass policy condition evaluates to true
8.1
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
-
CWE
Published
10/17/2025
Updated
10/17/2025
KEV Status
No
Technology
Erlang
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| ash | erlang | >= 3.6.3, <= 3.7.0 | 3.7.1 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability is an authorization bypass in the ash Elixir library. The provided patch clearly shows the modification in the lib/ash/policy/policy.ex file within the Ash.Policy.Policy.expression/2 function. The change from b(cond_expr or one_condition_matches) to b(complete_expr or one_condition_matches) fixes the bug where a bypass policy's condition being true would incorrectly satisfy the authorization check, even if the policy's authorization checks failed. The vulnerable function is therefore Ash.Policy.Policy.expression, as it contains the flawed logic that leads to the authorization bypass.
Vulnerable functions
Ash.Policy.Policy.expressionlib/ash/policy/policy.ex
The vulnerability lies in the `expression` function, specifically in how it handles bypass policies. The logic incorrectly used the policy's condition (`cond_expr`) to determine if at least one policy condition matched, rather than the complete expression (`complete_expr`), which also includes the authorization checks. This allowed a request to be authorized if a bypass policy's condition was met, even if the authorization checks within that policy failed.