Miggo Logo

CVE-2025-48044: Ash has authorization bypass when bypass policy condition evaluates to true

8.1

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
10/17/2025
Updated
10/17/2025
KEV Status
No
Technology
TechnologyErlang

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
asherlang>= 3.6.3, <= 3.7.03.7.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot 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.expression
lib/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.

WAF Protection Rules

WAF Rule

### Summ*ry *yp*ss poli*i*s in*orr**tly *ut*oriz* r*qu*sts w**n t**ir *on*ition *v*lu*t*s to tru* *ut t**ir *ut*oriz*tion ****ks **il *n* no ot**r poli*i*s *pply. ### Imp**t R*sour**s wit* *yp*ss poli*i*s **n ** ****ss** wit*out prop*r *ut*oriz*tion

Reasoning

T** vuln*r**ility is *n *ut*oriz*tion *yp*ss in t** `*s*` *lixir li*r*ry. T** provi*** p*t** *l**rly s*ows t** mo*i*i**tion in t** `li*/*s*/poli*y/poli*y.*x` *il* wit*in t** `*s*.Poli*y.Poli*y.*xpr*ssion/*` *un*tion. T** ***n** *rom `*(*on*_*xpr or o