Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to AshAdmin interface
-
DeliveryIdentify resource form with file upload field
-
ExploitCraft filename with path traversal sequences (e.g., ../../../../priv/static/evil.ex)
-
ExecutionSubmit multipart upload request
-
PersistBEAM writes attacker file to traversed target path
-
ImpactOverwritten asset or config executes for RCE
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a valid authenticated session in the AshAdmin interface with access to at least one resource form that includes a file upload field. The extension allowlist defaults to :any, meaning file type restrictions are absent unless explicitly configured by the application developer, so virtually any file content can be written. The BEAM OS user's filesystem write permissions define the reachable target paths; deployments where the BEAM user owns application source directories, /etc/cron.d, or ~/.ssh directly enable RCE via the write primitive. Exploitation is limited by: the requirement for valid AshAdmin authentication (PR:L per CVSS 4.0); the need to identify writable target paths relative to the server's temp directory anchor; and deployments where the BEAM user is restricted by OS-level permissions to only its own upload directory, which would confine the impact to that sandbox. |
| Impact | The CVSS 4.0 score of 8.3 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N) accurately reflects a high-severity integrity-focused vulnerability requiring low-privilege authentication. PR:L is the primary real-world limiting factor - only users with access to the AshAdmin interface and a resource form containing a file upload field can exploit this. Attack complexity is genuinely low: no race condition, memory corruption, or cryptographic bypass is involved; the attacker simply crafts a malicious filename. The SI:H metric captures filesystem-level impact extending beyond the application's upload sandbox. No EPSS score was provided in the intelligence data and this CVE does not appear in CISA KEV, so no confirmed widespread exploitation is known at time of analysis. However, the path from upload access to arbitrary file write - and from there to RCE - is direct and requires no special tooling, making the severity well justified for organizations running AshAdmin where the BEAM OS user has broad write permissions. |
| Exploit ScenarioDerived | An authenticated AshAdmin user submits a multipart file upload through any resource form, naming the file ../../../../var/www/app/priv/static/shell.ex or a similar traversal string targeting a writable server path. AshAdmin's consume_file_uploads/1 joins this unsanitized name directly to the temp directory prefix via Path.join, resolving the traversal at the OS level, and writes the attacker's file content to the target location. If the BEAM user has write access to application source directories, cron scripts, or SSH configuration, the attacker achieves remote code execution by overwriting a file that is subsequently loaded or executed by the server or OS scheduler. No public exploit code has been identified at time of analysis, but the technique requires only a browser and knowledge of likely server directory layout. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAI
Arbitrary file write via path traversal in AshAdmin's file upload handler affects versions 0.13.7 through 1.3.0, enabling any authenticated admin user to write attacker-controlled bytes to any filesystem path writable by the BEAM process. The root cause is that browser-supplied filenames are concatenated into upload paths via Elixir's Path.join/1 without stripping directory components, so a crafted filename such as ../../../../var/www/app/priv/static/evil.ex escapes the randomized temp directory. No public exploit has been identified at time of analysis, but the primitive directly enables remote code execution by overwriting application modules, static assets, cron jobs, or SSH authorized_keys files.
RemediationAI
Upgrade ash_admin to version 1.3.1 or later, which incorporates the fix from commit 4bb41cb697f3d9be58462d727aed75aba76efc82 (https://github.com/ash-project/ash_admin/commit/4bb41cb697f3d9be58462d727aed75aba76efc82); the vendor advisory at https://github.com/ash-project/ash_admin/security/advisories/GHSA-483p-rgcq-p5j9 confirms this as the patched release. If immediate upgrade is not possible, disable all file upload fields across AshAdmin resource forms as a compensating control - this eliminates the attack surface entirely but also removes upload functionality for all admin users. As an additional defense-in-depth measure regardless of patch status, scope the BEAM process OS user's write permissions strictly to the application temp and upload directories, which limits a successful traversal to those paths and prevents overwriting application code, cron jobs, or SSH files.
Affected VersionsENISA
Affected Packages
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
AshAdmin is an administrative dashboard library for Elixir applications built on the Ash Framework, distributed as the ash_admin Hex package (CPE: cpe:2.3:a:ash-project:ash_admin). The vulnerable function AshAdmin.Components.Resource.Form.consume_file_uploads/1 handles file uploads in Phoenix LiveView resource forms. The flaw (CWE-22: Path Traversal) arises because Elixir's Path.join/1 concatenates path segments as strings without resolving or stripping '..' components - it is a pure string join, not a canonical path resolver. The browser-controlled entry.client_name field is inserted directly as a path segment before File.cp!/2 writes the file. The only defensive mechanism, an extension allowlist defaulting to :any, checks only the suffix and cannot prevent directory escape. The fix in commit 4bb41cb697f3d9be58462d727aed75aba76efc82 replaces the vulnerable join with Path.join([tmp_dir, Path.basename(entry.client_name)]), stripping all directory components from the attacker-supplied filename before path construction.
Know when Ash Admin 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
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
Network-exploitable by low-privileged authenticated users; scope changes as file writes escape the upload sandbox to arbitrary server paths; integrity-only impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
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.
Technical POC Analysis
CWE-22 (Improper Limitation of a Pathname to a Restricted Directory).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Stored XSS in ash_admin's relationship typeahead components allows an attacker with low-privilege record-creation access
Cookie shadowing via unanchored regex in AshAdmin (versions 0.9.1-1.3.0) allows an attacker who controls a sibling subdo
Atom table exhaustion in ash_admin's Phoenix LiveView event handlers allows any authenticated user reaching the admin in
Composite primary key decoding in AshAdmin (ash_admin) versions 0.1.0 through 1.3.0 can be abused by authenticated users
AshAdmin shipped a compile-time constant string ('ash_admin-Ed55GFnX') as the default CSP nonce for inline script and st
AshAdmin's Table, DataTable, and Show LiveView components constructed row-action URLs via raw Elixir string interpolatio
EUVD-2026-68331
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB