Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish malicious Hex package with crafted app field
-
DeliveryVictim depends on it directly or transitively
-
Exploitrebar3 get-deps reads unvalidated name (parse_deps)
-
ExecutionTraversal resolves path outside _build
-
Impactrm -rf deletes target and extracts package files
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 | Requires a malicious or compromised Hex package release whose dependency 'app' field contains path-traversal sequences (e.g. ../../../../target), AND a victim project that depends on that release directly or transitively, AND a developer/CI action that fetches dependencies (rebar3 get-deps). Affects only rebar3 3.7.0-rc1 through 3.27.1. Limiting factors: exploitation happens before the dependency's rebar.config.script runs and get-deps compiles nothing, so this is file deletion/overwrite rather than immediate code execution; the public hexpm registry restricted the field as of 2026-10-12, so the primary residual exposure is private/self-hosted Hex registries lacking that restriction and any already-published malicious releases. |
| Impact | This is a supply-chain path traversal (CWE-22) in rebar3, the de facto build tool for the Erlang/OTP ecosystem. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:A, score 7.5) correctly captures the key tensions: the attack reaches the victim over the network via the Hex registry (AV:N) and needs no privileges on the victim's machine (PR:N), BUT it requires two conditions outside the attacker's direct control - an attack requirement (AT:P) that the victim actually depend, directly or transitively, on the malicious release, and active user interaction (UI:A) where a developer runs dependency fetching (rebar3 get-deps). These prerequisites meaningfully lower real-world likelihood versus a drive-by RCE. No EPSS score, no CISA KEV listing, and no public exploit were provided, so there is no evidence of active or at-scale exploitation - treat the risk as credible supply-chain abuse potential rather than an imminent widespread threat. A critical mitigating signal: the description states hex.pm server-side restricted the vulnerable 'app' field as of 2026-10-12 (today), so the public hexpm registry no longer accepts malicious values; residual risk concentrates on private/self-hosted Hex registries and any already-published malicious releases. Note a signal to verify: the input 4.0 vector marks confidentiality impact VC:H, but the described behavior is directory deletion (rm -rf) and arbitrary file write, not disclosure - the realistic impact is integrity/availability, which lowers the effective confidentiality component. |
| Exploit ScenarioDerived | A malicious actor publishes a Hex package whose release metadata sets the OTP application 'app' field to a path-traversal value such as '../../../../target'. A developer adds that package (or unknowingly pulls it transitively) and runs rebar3 get-deps; rebar3 resolves the dependency directory from the unvalidated name, deletes the attacker-chosen directory with rm -rf, and extracts the package contents there - enabling destruction of arbitrary developer/CI directories and planting of attacker files outside the _build sandbox. No public exploit code was identified in the provided data, though the mechanism is fully described in the advisory and patch commit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
A path traversal flaw in rebar3, the standard build and dependency-management tool for Erlang/OTP, lets a malicious Hex package publisher cause rebar3 to delete an arbitrary directory and write package files into it whenever a developer or CI job fetches that package's dependencies. The attack abuses an unvalidated 'app' field in Hex registry dependency metadata: rebar3 treats that field as the dependency directory name, so a value such as '../../../../target' resolves outside the project's _build tree and is then removed with rm -rf before the fetched package is moved into place. Only rebar3 3.7.0-rc1 through 3.27.1 is affected, exploitation requires user interaction (a developer running rebar3 get-deps against a project that pulls in the malicious release, directly or transitively), and because the deletion occurs before the dependency's rebar.config.script is evaluated and get-deps compiles nothing, the practical impact is destructive file deletion and overwrite rather than immediate code execution; no public exploit code has been identified at time of analysis, and the public hex.pm registry added validation for the field on 2026-10-12, leaving private or self-hosted Hex registries as the main residual exposure.
RemediationAI
Upgrade rebar3 to version 3.27.2 or later, which is the vendor-released fix line and contains the validation and resource-handling changes made in commits 56b7d88975aa8da6446857cfd92de0825024bf63 and e35282b26e499b1d9e8f30bba9dccd71cd8b02ba; consult the GitHub security advisory at https://github.com/erlang/rebar3/security/advisories/GHSA-6ggr-r7mh-2mv8 and the EEF advisory at https://cna.erlef.org/cves/CVE-2026-103060.html for the authoritative guidance. Because the tool is often installed as a standalone escript, update it wherever it is pinned - developer workstations as well as CI runner images and container base layers - and rotate or re-pin any lock files only after the tool itself is patched. If an immediate upgrade is not possible, the effective compensating controls are: point private or self-hosted Hex registries at an implementation that validates the dependency 'app' field to a bare application name (rejecting '/', '..', and absolute paths) the same way the public hex.pm registry has since 2026-10-12, since this removes the injection vector at its source; restrict dependency resolution to vetted registries and mirror only curated package sets rather than allowing arbitrary publishers, accepting that this slows dependency acquisition and requires ongoing curation; and, as a last resort for high-value build hosts, run dependency fetching in a disposable container or sandbox with a bind-mounted, non-sensitive working directory and no access to user home or deployment directories, so that an rm -rf outside _build lands on throwaway storage - the trade-off being added CI complexity and loss of incremental build state. Note that the public exploit status is limited: no public exploit code has been identified at time of analysis, and the impact is directory deletion and file overwrite rather than code execution, so remediation priority should be weighted toward build environments where an out-of-tree rm -rf could destroy source, credentials, or deployment artifacts.
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
This is a classic CWE-22 'Improper Limitation of a Pathname to a Restricted Directory' issue arising from trust in third-party package metadata. In the Hex package ecosystem, each published release lists its dependencies with an 'app' field naming the dependency's OTP application. rebar3 parses that field in rebar_packages:parse_deps/1 and uses it directly as the dependency's name, then constructs the on-disk dependency directory from it in rebar_app_utils:dep_to_app/7, without normalizing or validating that the resulting path stays inside the project's _build directory. Later, rebar_fetch:download_source_online/2 removes that directory with rm -rf and moves the fetched package contents into it. Because a publisher controls the 'app' value, a traversal sequence escapes the confined directory and redirects both the recursive deletion and the subsequent extraction to a path of the attacker's choosing. The attacker's leverage is bounded by execution order: the deletion and extraction happen before the dependency's own rebar.config.script runs, and rebar3 get-deps performs no compilation, so this is a destructive file-loss/overwrite primitive rather than a direct code-execution path - although overwriting files that are later consumed by a build could have secondary effects. The CPE entries (cpe:2.3:a:erlang:rebar3) confirm the affected component is rebar3 itself, and fixes were landed in commits 56b7d88975aa8da6446857cfd92de0825024bf63 and e35282b26e499b1d9e8f30bba9dccd71cd8b02ba.
Know when Erlang 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:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Delivered via network registry (AV:N) but needs victim to depend on the malicious package and run get-deps, so AC:H/UI:R; writes/deletes files outside the _build sandbox (S:C), giving I:H/A:H with no disclosure (C:N).
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') vulnerability in erlang rebar3 allows a malicious package publisher to delete a directory outside the project's _build directory and extract package files into it when a developer fetches dependencies.
A package release's dependencies in a Hex registry carry an app field that names the dependency's OTP application. rebar3 uses this field as the dependency's name without validating it (rebar_packages:parse_deps/1) and builds the dependency's directory from that name (rebar_app_utils:dep_to_app/7). rebar_fetch:download_source_online/2 deletes that directory with rm -rf and moves the fetched package into it. hex.pm didn't restrict the field to a directory name before 2026-10-12, so a publisher could set it to a value such as ../../../../target. When a project depends on such a release directly or transitively, rebar3 get-deps deletes the directory the name resolves to and writes the dependency's files there. This happens before the dependency's own rebar.config.script is evaluated, and get-deps compiles nothing.
This issue affects rebar3: from 3.7.0-rc1 before 3.27.2.
Executive ViewAI
A path traversal vulnerability in rebar3 (versions 3.7.0-rc1 through 3.27.1), the standard build and dependency-management tool for Erlang/OTP, allows a malicious Hex package to delete arbitrary directories and overwrite files when developers or CI jobs fetch dependencies. This creates a risk of data loss and build disruption across engineering environments, and leadership should prioritize remediation because the attack requires only routine dependency resolution. No public exploit identified at time of analysis.
Apply vendor patch.
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.
Erlang/OTP SSH server allows unauthenticated remote code execution by exploiting a flaw in SSH protocol message handling
The Erlang otp TLS server answers with different TLS alerts to different error types in the RSA PKCS #1 1.5 padding. Rat
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
Rebar3 versions 3.0.0-beta.3 to 3.13.2 are vulnerable to OS command injection via URL parameter of dependency specificat
Multiple CRLF injection vulnerabilities in the FTP module in Erlang/OTP R15B03 allow context-dependent attackers to inje
A local privilege escalation vulnerability was discovered in Erlang/OTP prior to version 23.2.3. Rated high severity (CV
An issue was discovered in Erlang/OTP 18.x. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitab
In Erlang/OTP before 23.3.4.15, 24.x before 24.3.4.2, and 25.x before 25.0.2, there is a Client Authentication Bypass in
Erlang/OTP's ssl application in affected releases (OTP 22.2 through the fixed 27.3.4.18, 28.5.0.7 and 29.1.1) will compl
RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b
TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged
An on-path attacker can force an Erlang/OTP TLS 1.2 or DTLS client to accept an anonymous cipher suite not offered by th
EUVD-2026-97510
NVD
CVE.org
EPSS
GitHub
Exploit-DB