ZeroHour

CVE-2026-82673

niche

Path Traversal in AshAdmin enables arbitrary file write in Elixir Ash apps

CVSS 4.0
8.3 high
EPSS
<1%p46
Published
()
Modified
AI analysis

AshAdmin, the admin dashboard component for the Elixir Ash Framework, contains a path traversal flaw (CWE-22) in its file-upload handling: AshAdmin.Components.Resource.Form.consume_file_uploads/1 builds the destination as Path.join([tmp_dir, entry.client_name]) using the browser-supplied filename without sanitization, and Path.join/1 does not normalize '..' segments. An authenticated user of the admin panel can upload a file with a crafted name such as '../../../../var/www/app/priv/static/x.png', escaping the random temp directory and writing attacker-controlled bytes to any path the BEAM process user can write. This allows arbitrary file write and potentially remote code execution by overwriting application assets, configuration, cron or SSH files; the only guard is an extension allowlist that defaults to :any and checks just the extension. All ash_admin releases from 0.13.7 up to but not including 1.3.1 are affected, in Phoenix/Ash applications that expose AshAdmin's resource upload forms. No public proof-of-concept or in-the-wild exploitation is known; EPSS estimates a 0.6% probability of exploitation within 30 days.

What to do: Upgrade to ash_admin 1.3.1 or later, which strips path components from the client-supplied filename with Path.basename/1 before joining. As interim mitigations, tighten the upload extension allowlist away from :any, restrict the BEAM user's OS write permissions outside the application directory, and sanitize client-supplied filenames in any custom upload code. Audit servers for unexpected files written outside the temp upload directory, especially in priv/static, configuration paths, cron directories and ~/.ssh.

Affected
ash-project ash_admin>= 0.13.7 and < 1.3.1 (fixed in 1.3.1)
Estimated exposure
nicheon the order of hundreds to a few thousand Elixir/Ash application deployments (estimate) — AshAdmin is an optional admin UI for the niche Elixir Ash Framework and only deployments using its resource upload form are exposed, so the affected base is far below mainstream web-framework install counts.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Improper Limitation of a Pathname to a Restricted Directory (Path Traversal) vulnerability in ash-project ash_admin allows writing attacker-controlled bytes to arbitrary paths on the server. AshAdmin.Components.Resource.Form.consume_file_uploads/1 builds the destination as Path.join([tmp_dir, entry.client_name]) and writes it with File.cp!/2. entry.client_name is the browser-supplied filename and is not sanitized, and Path.join/1 does not normalize ... An upload named ../../../../var/www/app/priv/static/x.png therefore escapes the random temp directory and lands anywhere the BEAM user can write, enabling arbitrary file write and potentially remote code execution by overwriting application assets, configuration, or cron/ssh files. The only guard is an extension allowlist defaulting to :any that checks only the extension. The fix strips path components with Path.basename/1 before joining. This issue affects ash_admin: from 0.13.7 before 1.3.1.

Weakness
CWE-22
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/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 news

No ingested article mentions this CVE yet.