Skip to main content

Hex EUVDEUVD-2026-97508

| CVE-2026-96612 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 release with '../../target' app label
  2. Delivery
    Victim project depends on release directly or transitively
  3. Exploit
    Developer runs mix deps.get or deps.update
  4. Execution
    Hex rm_rf! and unpacks outside deps/
  5. Impact
    Target directory deleted and attacker files planted

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 that the victim's Mix project depend - directly or transitively - on a Hex package release that the attacker controls or has compromised, and whose requirement entry carries a malicious OTP application label (e.g., '../../target'); hex.pm only length-checks this label, so traversal sequences pass. A developer must then actively run mix deps.get or mix deps.update, which triggers File.rm_rf! on the resolved out-of-tree path and extraction of the package there before any dependency code compiles. Affects hex versions from 0.6.0 up to (not including) 2.5.2. Limiting factors: the attacker must get a malicious release into a registry/repository the victim consumes AND the victim must choose to depend on it, and exploitation only fires on explicit developer dependency-fetch actions (UI required) - there is no server-side or unauthenticated-victim trigger. No authentication is required on the victim side; impact lands on the developer/CI host performing the fetch.

Impact

This is a supply-chain path traversal in Hex, the package manager for the Elixir/Erlang (Mix) ecosystem, rated CVSS 7.5 under the vendor's 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H). The network attack vector is real in the sense that the malicious payload travels through the public/private Hex registry, but exploitation is gated by two significant conditions the raw score partially captures: AT:P (the victim must depend, directly or transitively, on a release the attacker controls) and UI:A (a developer must actively run mix deps.get / mix deps.update). It is therefore not a drive-by remote exploit against a listening service - it is a build-time/developer-workstation attack requiring victim action and a dependency relationship. No EPSS score, CISA KEV listing, or public POC was provided in the input, so exploitation status is 'no public exploit identified at time of analysis'; absence of these signals is not evidence of safety, but it argues against widespread opportunistic exploitation and toward targeted, trust-abuse scenarios. The vendor's VC:H (confidentiality high) rating is debatable - the described primitive is arbitrary directory deletion plus arbitrary file extraction (integrity/availability), not information disclosure - so this signal should be verified rather than taken as confirmed. Overall this is a genuine, patch-worthy supply-chain integrity flaw for any Elixir shop, but its real-world priority is moderated by the dependency and user-interaction prerequisites rather than being an internet-facing critical.

Exploit ScenarioDerived

A malicious or compromised package publisher pushes a Hex release whose dependency requirement carries a crafted OTP application label such as '../../target'. When a developer whose project depends on that release (directly or transitively) runs mix deps.get, Hex trusts the registry-supplied label, resolves the checkout path to deps/../../target, runs File.rm_rf! on it, and unpacks the attacker's package files into that location before any code is compiled. No public POC was provided, but the primitive enables deletion of arbitrary directories and planting of attacker-controlled files on the developer's machine.

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

Path traversal in the Hex package manager for the Elixir/Erlang (Mix) ecosystem, versions 0.6.0 through 2.5.1, lets a malicious package publisher delete a directory outside the project's deps/ folder and write the package's files into that location when a developer runs mix deps.get or mix deps.update. The attacker abuses a dependency's OTP application label, which Hex copies from the signed registry without validation and Mix joins onto deps/ as the checkout path, so a crafted label such as '../../target' escapes the project tree through File.rm_rf!/1 before any dependency code is compiled. Exploitation requires the victim project to depend directly or transitively on the attacker-controlled release and the developer to explicitly fetch dependencies, so no victim-side authentication is needed (PR:N) but user interaction is required; no public exploit identified at time of analysis, and the vendor rates it CVSS 7.5.

RemediationAI

Upgrade Hex to 2.5.2 or later - vendor-released patched version 2.5.2 is the authoritative fix, and its upstream changes also migrate the lockfile format, so review regenerated mix.lock entries after upgrading; details are in GHSA-2vjj-c5hr-6xc3, https://cna.erlef.org/cves/CVE-2026-96612.html and the patch commits 1b3e2ae8f0dd7273a2c2625b9e50b6c67c8568fb and 72279a8e2004b32b20d8767ff010c117193dd02c. Until upgrading, inspect dependency metadata and mix.lock for application labels or dependency names containing path separators or '..' and refuse to fetch any release carrying them, and only pull packages from a registry you trust (trade-off: switching to a curated private mirror or pinning to vetted releases reduces exposure but forgoes convenient access to new public packages). Because the destructive File.rm_rf!/1 executes during dependency resolution and can target any path reachable as deps/<label> - including sibling directories to the project root - run mix deps.get in a disposable container or ephemeral CI workspace that mounts only a scratch copy of the repository, and keep the project and adjacent directories under version control or on snapshotted storage so an unintended deletion is recoverable; note these mitigations limit blast radius rather than prevent the traversal itself, and sandboxing offers no protection if the project directory is bind-mounted from the host.

Affected VersionsENISA

hex 0.6.0 <2.5.2
hex 380f87054e1bc08ee13d2b5311bc01f98dad2fc6 <*

Affected Packages

euvd hex fix: 2.5.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

Hex is the package manager for Erlang/Elixir and is consumed through Mix, which fetches dependencies from the hex.pm registry or a mirror/private repository. The flaw is CWE-22 path traversal caused by trust placed in metadata: a package release's requirements carry an OTP application label that Hex reads from the repository's signed registry and uses directly as the dependency's application name in Hex.RemoteConverger.deps/2 and Hex.Mix.to_lock/1. Mix derives the checkout directory as deps/<app>, and Hex.SCM.update/1 calls File.rm_rf!/1 on that path and unpacks the package into it, so a label containing traversal sequences resolves to an arbitrary directory relative to the project root; hex.pm only validated the label's length, so values like '../../target' passed. The upstream fix (commits 380f87054e1bc08ee13d2b5311bc01f98dad2fc6, 1b3e2ae8f0dd7273a2c2625b9e50b6c67c8568fb, 72279a8e2004b32b20d8767ff010c117193dd02c) separates the package name from the OTP application label throughout the registry reader, resolver and lockfile format (requirement tuples gain a distinct name/app split and the lock entry becomes {:hex, name, version}), which removes the unchecked mapping from publisher-supplied label to filesystem path. The vendor's CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) and the independent CVSS 3.1 assessment (AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H) agree on unauthenticated network reach and high integrity/availability impact confined to the developer or CI host performing the fetch, not to the registry or to other consumers; the AT:P and AC:H ratings reflect the prerequisite of publishing/adopting a malicious release. Affected product is catalogued as cpe:2.3:a:hexpm:hex:*:*:*:*:*:*:*:*.

Know when Hexpm 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 6.8 MEDIUM

Payload traverses the registry (AV:N) but needs the victim to depend on the attacker release and fetch it, so AC:H and UI:R; arbitrary file write/deletion gives I:H/A:H with no disclosure (C:N).

3.1 AV:N/AC:H/PR:N/UI:R/S:U/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 hexpm hex allows a malicious package publisher to delete a directory outside the project's deps directory and extract package files into it when a developer fetches dependencies.

A package release's requirements carry an app label that names the dependency's OTP application. Hex takes this label from the repository's signed registry and uses it as the dependency's application name without validating it (Hex.RemoteConverger.deps/2, Hex.Mix.to_lock/1). Mix derives the dependency's checkout directory as deps/<app>, and Hex.SCM.update/1 runs File.rm_rf!/1 on that directory and unpacks the package into it. hex.pm only checks the label's length, so a publisher can set it to a value such as ../../target. When a project depends on such a release directly or transitively, mix deps.get or mix deps.update deletes the directory the label resolves to and writes the labelled package's files there. This happens before any dependency code is compiled.

This issue affects hex: from 0.6.0 before 2.5.2.

Executive ViewAI

Why It Matters

Organizations using the Elixir/Erlang Mix toolchain with Hex versions 0.6.0 through 2.5.1 face a high-severity supply-chain risk that could allow a hostile dependency to damage files outside the intended dependencies area during routine dependency retrieval. This affects developers and CI/CD pipelines, where an incident could cause lost work, disrupted builds, or unauthorized changes to project or system files. No public exploit identified at time of analysis, but leadership should prioritize patching because the vulnerability can compromise software delivery integrity and operational continuity.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Medium
sole package manager for Elixir/Erlang, a sizable but non-ubiquitous ecosystem
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 Hexpm

View all
CVE-2026-21622 CRITICAL
9.5 Mar 05

Insufficient session expiration in hexpm. Password reset tokens never expire, enabling persistent account takeover.

CVE-2026-32148 HIGH
8.9 Apr 30

Silent dependency checksum bypass in hexpm/hex package manager (versions 0.16.0 through 2.4.1) allows attackers to subst

CVE-2026-21618 HIGH
8.5 Jan 19

Improper input sanitization in hexpm's SharedAuthorizationView module allows unauthenticated attackers to inject malicio

CVE-2026-75542 HIGH
8.3 Aug 24

Incorrect authorization in the hex.pm OAuth `client_credentials` endpoint allows any API key bearing the `repositories`

CVE-2026-105668 HIGH
7.1 Oct 12

Hex, the package manager used by Elixir and Erlang projects, fails to properly scope its 'release-age cooldown' protecti

CVE-2026-23940 HIGH
7.1 Mar 13

An uncontrolled resource consumption vulnerability in the Hex.pm package manager allows authenticated attackers to cause

CVE-2026-21621 HIGH
7.0 Mar 05

Hexpm's OAuth implementation fails to enforce read-only API key restrictions during token exchange, allowing an attacker

CVE-2026-105280 MEDIUM
6.9 Oct 12

Integrity-check bypass in the Hex package manager (hexpm hex) allows a compromised or attacker-controlled package mirror

CVE-2026-23939 MEDIUM
6.9 Feb 26

Path traversal in hexpm's Local Storage backend allows unauthenticated attackers to read sensitive files through relativ

CVE-2026-103502 MEDIUM
5.9 Oct 12

Improper TLS server-certificate validation in hex_core (0.1.0 through versions before 0.20.0) lets an attacker who alrea

CVE-2026-103503 MEDIUM
5.9 Oct 12

Improper certificate validation in Hex (the Elixir/Erlang package manager client, versions 0.20.2 through 2.5.1) allows

CVE-2026-96596 MEDIUM
5.9 Oct 14

Denial of service in Erlang OTP's stdlib erl_tar module (OTP 29.0 before 29.1.2, stdlib 8.0 before 8.1.1) allows an atta

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