Skip to main content

rebar3 CVE-2026-103060

| EUVDEUVD-2026-97510 HIGH
Path Traversal (CWE-22)
2026-10-12 EEF
7.5
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Publish malicious Hex package with crafted app field
  2. Delivery
    Victim depends on it directly or transitively
  3. Exploit
    rebar3 get-deps reads unvalidated name (parse_deps)
  4. Execution
    Traversal resolves path outside _build
  5. Impact
    rm -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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

rebar3 3.7.0-rc1 <3.27.2
rebar3 56b7d88975aa8da6446857cfd92de0825024bf63 <e35282b26e499b1d9e8f30bba9dccd71cd8b02ba

Affected Packages

euvd rebar3 fix: 3.27.2

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

Vendor (EEF) PRIMARY 7.5 HIGH
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
vuln.today AI 8.0 HIGH

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).

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:N/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Medium
standard Erlang/OTP build tool, but Erlang has a niche footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

More in Erlang

View all
CVE-2025-32433 CRITICAL POC
10.0 Apr 16

Erlang/OTP SSH server allows unauthenticated remote code execution by exploiting a flaw in SSH protocol message handling

CVE-2017-1000385 MEDIUM POC
5.9 Dec 12

The Erlang otp TLS server answers with different TLS alerts to different error types in the RSA PKCS #1 1.5 padding. Rat

CVE-2023-48795 MEDIUM POC
5.9 Dec 18

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot

CVE-2020-13802 CRITICAL POC
9.8 Sep 02

Rebar3 versions 3.0.0-beta.3 to 3.13.2 are vulnerable to OS command injection via URL parameter of dependency specificat

CVE-2014-1693 HIGH POC
7.5 Dec 08

Multiple CRLF injection vulnerabilities in the FTP module in Erlang/OTP R15B03 allow context-dependent attackers to inje

CVE-2021-29221 HIGH POC
7.0 Apr 09

A local privilege escalation vulnerability was discovered in Erlang/OTP prior to version 23.2.3. Rated high severity (CV

CVE-2016-10253 CRITICAL
9.8 Mar 18

An issue was discovered in Erlang/OTP 18.x. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitab

CVE-2022-37026 CRITICAL
9.8 Sep 21

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

CVE-2026-89422 CRITICAL
9.3 Sep 22

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

CVE-2026-67404 CRITICAL
9.2 Sep 23

RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b

CVE-2026-67231 CRITICAL
9.1 Sep 23

TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged

CVE-2026-55953 CRITICAL
9.1 Jul 27

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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy