CVE-2026-82724: Broken access control in AshPhoenix SubdomainHook via a nil tenant in handle_subdomain

Published Aug 31, 2026
·
Updated

Incorrect Authorization vulnerability in ash-project ashphoenix 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.onmount/4 attached a handleparams hook to assign the tenant and then immediately called handlesubdomain in the same onmount. The tenant assign is only written when LiveView later runs handleparams, strictly after onmount returns, so handlesubdomain 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 handlesubdomain inside the handleparams hook with the real tenant on every navigation.

This issue affects ashphoenix: from 2.1.26 before 2.3.25.

Affected Software

1 affected component
AshPhoenix ash-project ash_phoenix>2.1.26<=2.3.25

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade ash-project ash_phoenix to a version that resolves this vulnerability.

    Fixed in 2.3.25
  2. Configuration

    Update the SubdomainHook implementation so that handle_subdomain is called from handle_params using the real tenant assign (not from on_mount), ensuring authorization/access checks always receive a non-nil tenant.

    AshPhoenix.LiveView.SubdomainHook handle_subdomain invocation timing = Execute handle_subdomain inside handle_params (with real tenant) on every navigation

Event History

Aug 31, 2026
CVE Published
via MITRE·03:07 AM
Data Sourced
via MITRE·03:07 AM
DescriptionWeakness

Frequently Asked Questions

1

Which applications are exposed to this issue?

Applications using ash_phoenix versions from 2.1.26 before 2.3.25 are affected if they use AshPhoenix.LiveView.SubdomainHook and rely on its authorization callback to enforce tenant-scoped access.

2

What conditions are required for exploitation?

An attacker needs to reach a LiveView route where the SubdomainHook-derived tenant is used by an authorization callback. The risk depends on how the consumer callback handles a nil tenant: it may crash, or it may allow access through a permissive nil-handling branch.

3

Does the issue persist after the initial page load or navigation?

Yes. The affected behavior did not re-run the authorization handling once the real subdomain tenant was assigned, including on later navigations. As a result, tenant-scoped checks could continue to operate without the intended tenant value.

4

How can I determine whether my authorization logic is vulnerable?

Review callbacks invoked by SubdomainHook for behavior when their tenant argument is nil. A callback that permits access, falls back to a non-tenant-scoped decision, or otherwise does not explicitly deny nil tenants can create an authorization bypass.

5

What is the available remediation?

Upgrade ash_phoenix to version 2.3.25 or later. The fix runs handle_subdomain from the handle_params hook using the real tenant on every navigation.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203