CVE-2026-82726: AshPhoenix Package Vulnerability Allows Arbitrary Tenant Selection via Host Header
Summary
CVE-2026-82726: AshPhoenix get_subdomain maps a crafted or differently-cased Host header to an arbitrary tenant. Affects ash_phoenix across 2 version ranges.
>= 2.1.26, < 2.3.25
>= 9a5ea4d377bc263de321d79574872a3dfc4fb541, < 8306f29e77526840c89f3cd244996ce7c0fa2cda
Fixed in 2.3.25. How to fix ↓
Check if this vulnerability affects your application
Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.
No signup required · Results in about 60 seconds
Background
AshPhoenix is a web framework that facilitates the development of multi-tenant applications using subdomains. It leverages the Elixir programming language and is designed to provide a robust structure for building scalable applications. However, a recent vulnerability has been identified that allows attackers to manipulate the tenant selection process by crafting specific Host headers, potentially leading to unauthorized access to tenant data.
Vulnerability Detail
The vulnerability arises from a permissive regular expression in the AshPhoenix.Helpers.get_subdomain/2 function, which processes the Host header from incoming requests. The root domain is stripped using a global and unanchored replace operation, allowing attackers to craft Host headers that can select arbitrary tenants. For instance, sending a Host header like 'foo.exampleXcom.attacker.net' could result in the application interpreting it as 'foo.attacker.net'. Additionally, the case-sensitive nature of the comparison allows for bypassing the root-host allowlist, further exacerbating the issue. This vulnerability affects versions of AshPhoenix from 2.1.26 to 2.3.25.
How To Fix
Latest published version: 2.3.25 as of 22 Oct 2026
The newest release already contains this fix.
Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →
Workaround
As a temporary workaround, developers can implement a custom function to validate the Host header before passing it to the get_subdomain function. This function should ensure that the Host header matches the expected format and does not contain any malicious patterns. For example:
def validate_host_header(conn) do
host = conn.host
# Add validation logic here
# Ensure host matches expected format
end
Conclusion
The vulnerability identified as CVE-2026-82726 in the AshPhoenix package poses a significant risk by allowing unauthorized tenant selection through manipulated Host headers. It is crucial for developers using affected versions to update to the latest patched version and implement necessary security measures to protect their applications.
See every vulnerability recorded for ash_phoenix →
FAQ
CVE-2026-82726 is a vulnerability in the AshPhoenix package that allows attackers to manipulate tenant selection through crafted Host headers.
The vulnerability affects AshPhoenix versions from 2.1.26 to 2.3.25.
You can use the Vulert playground at Vulert Scanner to check if your application is affected by this vulnerability without needing to sign up.
The CVSS score for this vulnerability is 6.3, indicating a medium severity level.
To secure your application, update the AshPhoenix package to version 2.3.25 or later and consider implementing additional validation for Host headers.
Related vulnerabilities
Recent vulnerabilities recorded for ash_phoenix.