Skip to main content

ash_phoenix CVE-2026-82724

| EUVDEUVD-2026-68336 HIGH
Incorrect Authorization (CWE-863)
2026-08-31 EEF
7.6
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege tenant user
  2. Delivery
    Navigate to LiveView page with SubdomainHook
  3. Exploit
    on_mount calls handle_subdomain with nil tenant
  4. Execution
    Authorization callback evaluates nil, takes permissive path
  5. Impact
    Read or modify cross-tenant data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires three specific conditions: (1) the target application uses ash_phoenix 2.1.26 through 2.3.24 with AshPhoenix.LiveView.SubdomainHook attached in on_mount; (2) the application has implemented a consumer SubdomainHook authorization callback that enforces tenant-scoped access checks (applications that use SubdomainHook only for tenant assignment without an authorization gate are not exposed to the authorization bypass, though they may experience nil-related crashes); (3) the attacker holds a valid authenticated session to reach the protected LiveView endpoint, consistent with PR:L in the CVSS 4.0 vector. The key limiting factors are: the Elixir/Ash ecosystem deployment requirement narrows the exposed population; authentication is required, ruling out unauthenticated internet-scale exploitation; and the bypass is only triggered at the LiveView connection and navigation level, not through arbitrary HTTP requests. Applications whose SubdomainHook callback crashes unhandled on nil rather than branching permissively present reduced cross-tenant data access risk, but may still expose error information.

Impact

The CVSS 4.0 score of 7.6 with vector AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N reflects a network-exploitable flaw moderated by AT:P - the specific precondition that the application deploys SubdomainHook with tenant-scoped authorization callbacks. For any application that does meet that condition, however, the bypass is total and systematic: every authenticated user bypasses all tenant isolation checks on initial LiveView connection and retains that bypass for the full session. High confidentiality and integrity impacts (VC:H/VI:H) are well-calibrated given the cross-tenant data read and write potential. EPSS data is absent from the provided intelligence, which limits probabilistic exploitation forecasting. The vulnerability is not listed in CISA KEV and no public exploit code has been identified at time of analysis, suggesting opportunistic mass exploitation is not currently occurring. Real-world priority should be governed by whether the application relies on SubdomainHook for compliance-grade tenant isolation - even a mid-sized municipal IT team in swidnica operating a multi-tenant Ash Framework SaaS would be well-advised to treat this as urgent given that the bypass is unconditional once the deployment condition is met, and the fix is a straightforward library upgrade with no breaking API changes.

Exploit ScenarioDerived

An authenticated user in a multi-tenant application built on ash_phoenix connects to a LiveView page protected by SubdomainHook. On initial mount, on_mount invokes the tenant authorization callback with a nil tenant; the callback's consumer gate evaluates nil and either crashes with a handled error or takes a permissive branch, granting the session access to resources outside the attacker's assigned tenant. Because the check is not re-run on subsequent in-session navigations, the attacker retains cross-tenant access for the lifetime of the LiveView connection, able to read and modify other tenants' data through the application's normal UI.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAI

Tenant authorization bypass in ash_phoenix's SubdomainHook allows an authenticated user to cross tenant boundaries and access or modify data belonging to other tenants. The flaw is rooted in a LiveView lifecycle ordering error: AshPhoenix.LiveView.SubdomainHook.on_mount/4 called the consumer-defined authorization callback before Phoenix LiveView's handle_params phase had run, guaranteeing the callback always received a nil tenant and either crashed or silently permitted the request. Critically, the flawed check was never re-evaluated on subsequent in-session navigations, so the bypass persisted for the lifetime of the LiveView connection. No public exploit has been identified at time of analysis, but the bypass is systematic and total for all affected deployments using SubdomainHook with tenant-scoped authorization callbacks.

RemediationAI

Upgrade ash_phoenix to version 2.3.25 or later, which restructures SubdomainHook so that both tenant assignment and the handle_subdomain authorization callback run inside handle_params on every navigation, ensuring the real tenant is always present when authorization is evaluated. The fix commit is b396e1aa5c6bdec39255f19cf938b539e6d28b71 and the vendor advisory is at https://github.com/ash-project/ash_phoenix/security/advisories/GHSA-39c8-xcwr-gqff. If an immediate upgrade is not possible, the most effective compensating control is to replace SubdomainHook with a manual implementation that performs both tenant assignment and authorization exclusively inside handle_params callbacks - this eliminates the lifecycle race entirely but requires reimplementing subdomain resolution logic. Alternatively, adding a redundant tenant authorization check inside handle_params as a defence-in-depth measure reduces risk without removing SubdomainHook, though it does not fully close the nil-evaluation path on initial mount. There is no known configuration-level toggle to disable the vulnerable code path while retaining SubdomainHook's functionality.

Affected VersionsENISA

ash_phoenix 2.1.26 <2.3.25
ash_phoenix 9a5ea4d377bc263de321d79574872a3dfc4fb541 <b396e1aa5c6bdec39255f19cf938b539e6d28b71

Affected Packages

euvd ash_phoenix fix: 2.3.25

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

ash_phoenix is an Elixir library that integrates the Ash Framework with Phoenix LiveView, providing multi-tenancy primitives including AshPhoenix.LiveView.SubdomainHook, which resolves a tenant from the request subdomain and enforces tenant-scoped authorization. The root cause (CWE-863 Incorrect Authorization) is a misunderstanding of the Phoenix LiveView callback lifecycle: on_mount runs before handle_params, but the original code attached a handle_params hook to assign the tenant and then immediately called handle_subdomain within the same on_mount. The socket assign for the tenant was therefore always unset at the moment handle_subdomain executed, causing apply(m, f, [socket, nil | a]) to invoke the consumer authorization callback with a nil tenant. Consumer gates expecting a valid tenant evaluated nil instead - either crashing or branching permissively - and the check was never repeated on later navigation events within the session. The commit diff at b396e1aa5c6bdec39255f19cf938b539e6d28b71 confirms the fix: a single handle_params hook now resolves the subdomain, writes the tenant assign, and calls handle_subdomain with the real tenant value on every navigation, closing both the initial bypass and the no-re-evaluation gap. CPE cpe:2.3:a:ash-project:ash_phoenix identifies the affected package.

Know when Ash Phoenix gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (EEF) PRIMARY 7.6 HIGH
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
vuln.today AI 8.2 HIGH

AC:H because exploitation requires the specific deployment condition of SubdomainHook with tenant auth callbacks; S:C because the impact crosses tenant security boundaries; PR:L per CVSS 4.0 input confirming authenticated access required.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Technical POC Analysis

CWE-863 (Incorrect Authorization): a Phoenix LiveView lifecycle ordering error that makes a tenant authorization gate structurally incapable of seeing the tenant.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Low
niche Elixir/Ash Framework library with specialized user base
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy