Skip to main content

Elixir Hex EUVDEUVD-2026-97512

| CVE-2026-81856 LOW
Improper Neutralization of Escape, Meta, or Control Sequences (CWE-150)
2026-10-12 EEF
2.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Publish package with embedded ANSI/OSC payload
  2. Exploit
    Victim runs mix hex.info or hex.search
  3. Execution
    Hex prints attacker fields unneutralized to terminal
  4. Impact
    Forge displayed URLs/commands, hide output, or write clipboard

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Escape character neutralization
Exploitation Conditions

Exploitation requires the victim to invoke a specific Mix task that renders attacker-controlled repository data: mix hex.info, mix hex.package search, mix hex.search, mix hex.user, mix hex.policy, owner/organization listings, publish/sponsor URL output, or any Hex.Utils.print_error_result/1 error body. The attacker must either publish a malicious package the victim then queries, or control a hostile repository server. Limiting factors: the victim must run one of these interactive commands (UI:P), the victim's terminal emulator must interpret ANSI/OSC/bidi control sequences for the effect to land, and the attacker must induce the victim to look up the malicious package or configure Hex against the hostile repo. Impact is limited to output forgery and clipboard writes - no code execution, file access, or privilege gain. Fixed in Hex 2.5.2.

Impact

This is a genuinely low-priority issue despite affecting a core ecosystem tool. All exploitation signals point the same direction: the vendor CVSS 4.0 score is 2.3 (Low) with VI:L as the ONLY impact (VC:N/VA:N) - purely an output-integrity/spoofing problem, not code execution, data theft, or denial of service. Exploitation status is 'no public exploit identified at time of analysis' (no CISA KEV listing, no POC reference, no EPSS score provided). The vector requires UI:P (the victim must actively run a Mix hex task) and AT:P (a specific attack requirement - the victim must query the attacker's package or point Hex at a hostile repo), both of which materially reduce real-world likelihood. PR:N is accurate: an attacker only needs to publish a package, requiring no privileged position. There is no conflict between the signals here - low CVSS, no exploitation evidence, and meaningful preconditions all agree this is a hardening/hygiene defect rather than an urgent threat. One caveat: CWE-150 (terminal escape injection) combined with OSC 52 clipboard writes and forged 'suggested commands' can be a stepping stone to social-engineering a developer into running attacker-chosen shell commands, so treat it as a low-severity enabler, not pure cosmetic noise.

Exploit ScenarioDerived

An attacker publishes a Hex package whose metadata (description, links, owner/organization names) embeds ANSI escape, carriage-return, OSC 52 clipboard, or Unicode bidi-override sequences. When a developer runs 'mix hex.info <pkg>', 'mix hex.search', or similar, Hex prints those fields verbatim via Hex.Shell.info/error, so the terminal renders forged URLs and suggested install commands, hides real output, or silently loads the clipboard with an attacker-chosen string. No public exploit identified at time of analysis.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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

Terminal-output injection in the Elixir Hex package manager (all versions from 0.0.1 up to, but not including, 2.5.2) allows a malicious package publisher or a hostile repository server to smuggle ANSI escape sequences and Unicode bidirectional overrides into what Mix prints, forging displayed URLs, package descriptions and suggested commands, hiding real output, or writing attacker-chosen text to the victim's clipboard via OSC 52. Exploitation is unauthenticated (CVSS:4.0 PR:N) but requires the victim to run one of the affected interactive Mix tasks - such as mix hex.info, mix hex.package search, mix hex.search, mix hex.user or mix hex.policy - against data the attacker controls, and it depends on the victim's terminal emulator interpreting the injected sequences; impact is confined to output forgery and clipboard manipulation, with no code execution, file access or privilege gain, and the assessed severity is low (CVSS 4.0 base 2.3). No public exploit code was identified at time of analysis and there is no indication of active exploitation; the vendor has released a fix in Hex 2.5.2.

RemediationAI

Vendor-released patch: upgrade to Hex 2.5.2 or later - run 'mix local.hex --force' (or 'mix archive.install hex hex 2.5.2') and confirm with 'mix hex.info' showing 2.5.2+, as documented in the advisory at https://github.com/hexpm/hex/security/advisories/GHSA-fpmj-3cxg-p766. No vendor workaround is published, so until every developer workstation and CI image is updated, apply targeted compensating controls: restrict the repositories Hex is configured to query to trusted, internally controlled mirrors and avoid running mix hex.info, mix hex.package search, mix hex.search, mix hex.user, mix hex.policy or owner/organization/publish-output tasks against untrusted or third-party repositories, accepting that this reduces the convenience of browsing the public ecosystem; review unfamiliar package metadata out-of-band (for example in a browser or by fetching the registry JSON into a file and inspecting it with a viewer that escapes control characters) before trusting anything Mix printed, at the cost of extra manual steps; and where the terminal supports it, disable OSC 52 clipboard handling in the emulator profile (e.g. turn off clipboard write permissions in the terminal's security settings), which prevents clipboard overwrites but breaks legitimate copy-on-select/remote-copy workflows. Note that piping output through a control-character stripper is not a complete fix for interactive use because the visual-forgery effect is realized by the terminal emulator itself, and the injected bidi overrides are valid Unicode that generic sanitizers may pass through.

Affected VersionsENISA

hex 211303e3f68f5d3ce06450c1ff1a7a770a9ab236 <dd3305ddf0032f6d0b468fd40dbbc3072bfcb8b8
hex 0.0.1 <2.5.2

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

The issue is CWE-150, improper neutralization of escape, meta, or control sequences, rooted in Hex's presentation layer rather than its package-resolution logic. Hex.Shell.info/1 and Hex.Shell.error/1 are thin wrappers that forward strings straight to the terminal, and Hex.Utils.print_error_result/1 does the same for API error bodies, so any text that originated from the package repository or the documentation search service reaches the terminal byte-for-byte. Data flows into these sinks from package metadata and configuration snippets shown by mix hex.info, search results from mix hex.package search and mix hex.search, owner and organization listings, publish and sponsor URLs, the authenticated username displayed by mix hex.user, policy identities in mix hex.policy, and raw API error responses. Because the strings are never sanitized, an attacker who controls a package listing or the repository endpoint can embed cursor-movement, line-erase and carriage-return sequences, OSC 52 clipboard-write sequences, or Unicode bidi override characters that visually reorder text. The net effect is a terminal-level spoofing primitive: the rendered text can differ from the actual data, which could mislead a developer into believing a dependency resolves to a trusted source, that a command suggestion is legitimate, or that a lookup failed when it did not. The affected product is identified by CPE cpe:2.3:a:hexpm:hex for the hexpm Hex client, and the upstream patch commit (dd3305ddf0032f6d0b468fd40dbbc3072bfcb8b8) is referenced alongside the GitHub security advisory GHSA-fpmj-3cxg-p766.

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 2.3 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.3 MEDIUM

Attacker only publishes a package (PR:N) over the network (AV:N), but the victim must run a Mix hex task (UI:R); impact is limited to forged/spoofed terminal output (I:L), with no confidentiality or availability effect.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:N/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
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Improper Neutralization of Escape, Meta, or Control Sequences vulnerability in hexpm hex allows a malicious package publisher or a hostile repository server to inject terminal control sequences into the output of Mix tasks.

Hex prints strings supplied by the package repository and the documentation search service straight to the terminal through Hex.Shell.info/1 and Hex.Shell.error/1, neutralizing no control characters. Affected sinks span package metadata and configuration snippets in mix hex.info, search results in mix hex.package search and mix hex.search, owner and organization listings, publish and sponsor URLs, the authenticated username in mix hex.user, policy identities in mix hex.policy, and API error bodies rendered by Hex.Utils.print_error_result/1. A malicious package can embed ANSI escape sequences (cursor movement, line erase, carriage returns, OSC 52 clipboard writes) or Unicode bidirectional overrides in any of those fields, so the bytes reach the terminal unchanged, forging displayed URLs, package descriptions and suggested commands, concealing real output, or writing to the clipboard. No authentication or privileged position is required; only publishing a package.

This issue affects hex: from 0.0.1 before 2.5.2.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
Medium
standard package manager for the Elixir/Erlang ecosystem; moderate adoption
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 LOW
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

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-96612 HIGH
7.5 Oct 12

Path traversal in the Hex package manager for the Elixir/Erlang (Mix) ecosystem, versions 0.6.0 through 2.5.1, lets a ma

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

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