chore(deps): update dependency ash_phoenix to v2.3.25 [security] - autoclosed #575
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
high priority
invalid
L
low priority
M
medium priority
needs refinement
optional
question
S
security
technical improvement
UX Improvement
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
local-it/mitgliederverwaltung!575
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/hex-ash_phoenix-vulnerability"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
2.3.22→2.3.25Broken access control in AshPhoenix SubdomainHook via a nil tenant in handle_subdomain
CVE-2026-82724 / EEF-CVE-2026-82724 / GHSA-39c8-xcwr-gqff
More information
Details
Summary
Incorrect Authorization vulnerability in ash-project ash_phoenix invokes the
SubdomainHookauthorization callback with aniltenant, so tenant-scoped access checks never see the tenant they are meant to enforce.AshPhoenix.LiveView.SubdomainHook.on_mount/4attached ahandle_paramshook to assign the tenant and then immediately calledhandle_subdomainin the sameon_mount. The tenant assign is only written when LiveView later runshandle_params, strictly afteron_mountreturns, sohandle_subdomainread an unset assign and ran asapply(m, f, [socket, nil | a]). A consumer gate that halts when the user does not belong to the tenant instead evaluatednil, 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 runshandle_subdomaininside thehandle_paramshook with the real tenant on every navigation.This issue affects ash_phoenix: from 2.1.26 before 2.3.25.
Configurations
The application uses
AshPhoenix.LiveView.SubdomainHookwith ahandle_subdomaincallback as a tenant-scoped authorization gate.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
AshPhoenix FilterForm allows filtering across non-public relationships, disclosing private related data
CVE-2026-82725 / EEF-CVE-2026-82725 / GHSA-7xhg-xphm-f458
More information
Details
Summary
Authorization Bypass Through User-Controlled Key vulnerability in ash-project ash_phoenix lets an attacker who controls filter form parameters filter across relationships the resource author marked non-public, turning the returned rows into a boolean oracle over private related data.
AshPhoenix.FilterFormresolved every relationship hop in the user-suppliedpathwithAsh.Resource.Info.related/2, which traverses private relationships, and only checked the terminal field for publicity.parse_path_and_field/2also rewrote afieldnaming a relationship into an extra path segment, sofield=some_private_relwas accepted too. Bothpathandfieldcome straight from form params, and the resulting ref went toAsh.Query.do_filter/2without the public-only enforcement ofAsh.Filter.parse_input/2. The fix resolves each hop withAsh.Resource.Info.public_relationship/2, rejecting the first non-public hop, and requires the terminal field to be public.This issue affects ash_phoenix: from 0.6.0-rc.1 before 2.3.25.
Configurations
The resource exposes an
AshPhoenix.FilterFormwhose params the attacker controls, and has a non-public relationship to data that should not be filterable.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
AshPhoenix get_subdomain maps a crafted or differently-cased Host header to an arbitrary tenant
CVE-2026-82726 / EEF-CVE-2026-82726 / GHSA-rpf8-q9jh-qxrr
More information
Details
Summary
Permissive Regular Expression vulnerability in ash-project ash_phoenix lets a remote client select the tenant an Ash application uses, or degrade the request, by sending a crafted
Hostheader.AshPhoenix.Helpers.get_subdomain/2stripped the root domain withString.replace(host, ~r/.?#{root_host}/, ""). The root host was interpolated raw, so each.became a wildcard and any metacharacter a pattern, and the replace was global and unanchored, so a match was removed from anywhere in the string. Withroot_hostexample.com,Host: foo.exampleXcom.attacker.netreturned the tenantfoo.attacker.net. A metacharacter-bearing ornilroot host degraded the pattern or raised on every request. The comparison was also case-sensitive, soTENANT.EXAMPLE.COMandEXAMPLE.COMslipped past the root-host allowlist.conn.hostcomes from the clientHostheader. The fix matches the root host case-insensitively and only as an exact trailing suffix.This issue affects ash_phoenix: from 2.1.26 before 2.3.25.
Configurations
The application uses subdomain-based multitenancy via
AshPhoenix.Helpers.get_subdomain/2(for example throughAshPhoenix.LiveView.SubdomainHook) to select the tenant from the request host.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
AshPhoenix Form.Auto leaks submitted params in an unknown _union_type error message
CVE-2026-82727 / EEF-CVE-2026-82727 / GHSA-5xf4-hgcq-xw7v
More information
Details
Summary
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_phoenix writes the entire raw submitted param map into an exception message, so secrets submitted alongside a union form field leak into logs, crash reports and the dev error page.
When
AshPhoenix.Form.Autobuilds a union sub-form and the submitted_union_typedoes not match a configured type, both raise sites built the message withinspect(params, pretty: true), embedding the full untrusted param map, and also inspected the internal unionconstraints[:types]. Because the message is constructed by the library rather than Phoenix's parameter logger,config :phoenix, :filter_parametersnever redacts it. An attacker controls both the trigger and the contents: submitting%{"_union_type" => "nope", "password" => "..."}puts the password verbatim in the raised message. The fix reports only the offending_union_typeand the valid type names, dropping the param and constraints dumps.This issue affects ash_phoenix: from 1.2.17 before 2.3.25.
Configurations
The application renders an
AshPhoenix.Formwith a union field, and submitted params (which may carry secrets) reach logs, crash reports or the error page.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
Release Notes
ash-project/ash_phoenix (ash_phoenix)
v2.3.25Compare Source
Bug Fixes:
remove deprecated page_from_params/3 (client-controlled count) by @zachdaniel
don't leak submitted params in unknown _union_type error (CVE-2026-82727) by @zachdaniel
match root host case-insensitively and as an exact suffix in get_subdomain (CVE-2026-82726) by @zachdaniel
reject filtering across non-public relationships in FilterForm (CVE-2026-82725) by @zachdaniel
run handle_subdomain with the real tenant in handle_params (cross-tenant) (CVE-2026-82724) by @zachdaniel
propagate actor, scope and tenant to a single nested form built from existing data (#483) by Johannes Welebil (#483)
don't use
negated?for filter generation by @zachdanielprevent false PendingCodegen when the check races the code reloader (#482) by @Malian (#482)
resolve actor and tenant from scope before building nested forms (#480) by @Valian (#480)
v2.3.24Compare Source
Bug Fixes:
v2.3.23Compare Source
Bug Fixes:
unwrap
NewTypein auto-formmap_type?check (#475) by sevenseacat (#475)Skip embed form standalone validation (#474) by sevenseacat (#474)
propagate shared context to nested forms in add_form and validate (#472) by @nallwhy (#472)
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
ea649a3b0dc398297ccec398297cce29512c9f3929512c9f3932398b265a32398b265aae8dd0ba5cchore(deps): update dependency ash_phoenix to v2.3.25 [security]to chore(deps): update dependency ash_phoenix to v2.3.25 [security] - autoclosedPull request closed