CVE-2026-82724
nicheIncorrect Authorization in ash_phoenix SubdomainHook permits cross-tenant access
CVE-2026-82724 is an incorrect-authorization flaw (CWE-863) in ash_phoenix, the Phoenix LiveView integration for the Ash Framework, where AshPhoenix.LiveView.SubdomainHook.on_mount/4 calls handle_subdomain before the tenant assign it is meant to read has been set. Because the tenant assign is only written later in handle_params, strictly after on_mount returns, the hook runs with a nil tenant (apply(m, f, [socket, nil | a])), so tenant-scoped authorization callbacks in the consumer gate never see the tenant they are supposed to enforce. Depending on how a given gate treats nil, it either crashes or takes a permissive branch, and the check is never re-run once the real subdomain tenant is assigned or on later navigations, so an attacker could gain cross-tenant access in applications where the gate fails open. Only applications built with ash_phoenix 2.1.26 up to (but not including) 2.3.25 that attach the SubdomainHook for subdomain-based multi-tenancy are affected; the flaw is network-reachable with high confidentiality and integrity impact but requires low privileges and no user interaction per its CVSS 4.0 score of 7.6. No public proof-of-concept, no CISA KEV listing, and a low EPSS probability of 0.2% (16th percentile) indicate no exploitation has been observed.
What to do: Upgrade to ash_phoenix 2.3.25 or later, which runs handle_subdomain inside the handle_params hook with the real tenant on every navigation. Until you upgrade, audit consumer gates invoked via SubdomainHook to confirm they halt (fail closed) on a nil tenant rather than taking a permissive branch, and identify which LiveViews attach the hook. Because the check was never re-run after the tenant was assigned on affected versions, consider re-validating tenant membership for sessions that passed through vulnerable builds.
| Ash Framework (ash-project) ash_phoenix | >= 2.1.26, < 2.3.25 (fixed in 2.3.25) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Incorrect Authorization vulnerability in ash-project ash_phoenix invokes the SubdomainHook authorization callback with a nil tenant, so tenant-scoped access checks never see the tenant they are meant to enforce. AshPhoenix.LiveView.SubdomainHook.on_mount/4 attached a handle_params hook to assign the tenant and then immediately called handle_subdomain in the same on_mount. The tenant assign is only written when LiveView later runs handle_params, strictly after on_mount returns, so handle_subdomain read an unset assign and ran as apply(m, f, [socket, nil | a]). A consumer gate that halts when the user does not belong to the tenant instead evaluated nil, either crashing or taking a permissive branch, and it was never re-run once the real subdomain was assigned or on later navigations. The fix runs handle_subdomain inside the handle_params hook with the real tenant on every navigation. This issue affects ash_phoenix: from 2.1.26 before 2.3.25.
- Weakness
- CWE-863
- Vector
- CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.