Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPublish package with embedded ANSI/OSC payload
-
ExploitVictim runs mix hex.info or hex.search
-
ExecutionHex prints attacker fields unneutralized to terminal
-
ImpactForge 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
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
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Insufficient session expiration in hexpm. Password reset tokens never expire, enabling persistent account takeover.
Silent dependency checksum bypass in hexpm/hex package manager (versions 0.16.0 through 2.4.1) allows attackers to subst
Improper input sanitization in hexpm's SharedAuthorizationView module allows unauthenticated attackers to inject malicio
Incorrect authorization in the hex.pm OAuth `client_credentials` endpoint allows any API key bearing the `repositories`
Path traversal in the Hex package manager for the Elixir/Erlang (Mix) ecosystem, versions 0.6.0 through 2.5.1, lets a ma
Hex, the package manager used by Elixir and Erlang projects, fails to properly scope its 'release-age cooldown' protecti
An uncontrolled resource consumption vulnerability in the Hex.pm package manager allows authenticated attackers to cause
Hexpm's OAuth implementation fails to enforce read-only API key restrictions during token exchange, allowing an attacker
Integrity-check bypass in the Hex package manager (hexpm hex) allows a compromised or attacker-controlled package mirror
Path traversal in hexpm's Local Storage backend allows unauthenticated attackers to read sensitive files through relativ
Improper TLS server-certificate validation in hex_core (0.1.0 through versions before 0.20.0) lets an attacker who alrea
Improper certificate validation in Hex (the Elixir/Erlang package manager client, versions 0.20.2 through 2.5.1) allows
EUVD-2026-97512
NVD
CVE.org
EPSS
GitHub
Exploit-DB