Description
Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in hexpm hex_core allows an untrusted repository mirror, or a server answering hex_core's API requests, to exhaust the memory of the Erlang VM running hex_core. The same code is vendored in Hex (mix_hex_repo, mix_hex_api) and rebar3 (r3_hex_repo, r3_hex_api).

hex_repo:get_names/1, hex_repo:get_versions/1, hex_repo:get_package/2 and hex_repo:get_policy/2 decompress the registry response with zlib:gunzip/1 and decode the signed envelope before verifying its signature. A mirror doesn't have the repository's private key, but it chooses the compressed bytes, so a small response decompresses into an envelope of any size before the signature check rejects it.

hex_api decodes responses with the application/vnd.hex+erlang content type through hex_safe_binary_to_term:safe_binary_to_term/1, which calls binary_to_term(Binary, [safe]). The safe option prevents atom creation, but it accepts compressed terms and doesn't limit the size of the decoded term, and the check that rejects functions and ports runs after the term has been built. The fix for CVE-2026-21619 added the safe option and that check without bounding the decoded size.

This issue affects rebar3: from 3.9.1 before 3.27.3; hex: from 2.1.0 before 2.5.2; hex_core: from 0.1.0 before 0.20.0.
Published: 2026-10-12
Score: 2.1 Low
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Update Packages
AI Analysis

Impact

hex_core, Hex, and rebar3 allow an attacker controlling an untrusted repository mirror or an API server to send a highly compressed payload that expands into a large binary inside the Erlang VM. The code decompresses registry or Erlang term responses before signature verification and without size limits. As a result, the decompressed data can consume the available memory, leading to a denial‑of‑service that may exhaust the process or system resources.

Affected Systems

Erlang rebar3 from 3.9.1 before 3.27.3, Hex from 2.1.0 before 2.5.2, and hex_core from 0.1.0 before 0.20.0 are affected. The vendors are Erlang for rebar3 and hexpm for both Hex and hex_core. The fix is in hex_core 0.20.0, which is incorporated into Hex 2.5.2.

Risk and Exploitability

The CVSS score is 2.1, indicating low severity. No EPSS data is available, and the vulnerability is not in the CISA KEV catalog. The attack vector is primarily through an untrusted or malicious mirror or API server that a user can host or compromise. While random exploitation is unlikely, organizations that rely on third‑party mirrors or consume packages from unknown sources should consider the risk of a resource exhaustion attack and implement safeguards.

Generated by OpenCVE AI on October 12, 2026 at 19:55 UTC.

Remediation

Vendor Solution

Upgrade hex_core to 0.20.0 or later. Registry resources larger than 16 MiB after decompression are rejected with {too_big_uncompressed, MaxSize}, configurable with registry_max_uncompressed_size. Upgrade Hex to 2.5.2 or later, which vendors hex_core 0.20.0. No rebar3 release vendors hex_core 0.20.0 yet.


Vendor Workaround

Point repository URLs at repo.hex.pm or a mirror you operate, and the API URL at hex.pm.


OpenCVE Recommended Actions

  • Upgrade hex_core to 0.20.0 or later
  • Upgrade Hex to 2.5.2 or later, which packages hex_core 0.20.0
  • Reconfigure repository URLs to point to the official repo.hex.pm or to a mirror you control, and set the API URL to hex.pm to avoid untrusted sources

Generated by OpenCVE AI on October 12, 2026 at 19:55 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 15 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 14 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 3.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L'}

threat_severity

Low


Mon, 12 Oct 2026 18:45:00 +0000

Type Values Removed Values Added
Description Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in hexpm hex_core allows an untrusted repository mirror, or a server answering hex_core's API requests, to exhaust the memory of the Erlang VM running hex_core. The same code is vendored in Hex (mix_hex_repo, mix_hex_api) and rebar3 (r3_hex_repo, r3_hex_api). hex_repo:get_names/1, hex_repo:get_versions/1, hex_repo:get_package/2 and hex_repo:get_policy/2 decompress the registry response with zlib:gunzip/1 and decode the signed envelope before verifying its signature. A mirror doesn't have the repository's private key, but it chooses the compressed bytes, so a small response decompresses into an envelope of any size before the signature check rejects it. hex_api decodes responses with the application/vnd.hex+erlang content type through hex_safe_binary_to_term:safe_binary_to_term/1, which calls binary_to_term(Binary, [safe]). The safe option prevents atom creation, but it accepts compressed terms and doesn't limit the size of the decoded term, and the check that rejects functions and ports runs after the term has been built. The fix for CVE-2026-21619 added the safe option and that check without bounding the decoded size. This issue affects rebar3: from 3.9.1 onward; hex: from 2.1.0 before 2.5.2; hex_core: from 0.1.0 before 0.20.0. Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in hexpm hex_core allows an untrusted repository mirror, or a server answering hex_core's API requests, to exhaust the memory of the Erlang VM running hex_core. The same code is vendored in Hex (mix_hex_repo, mix_hex_api) and rebar3 (r3_hex_repo, r3_hex_api). hex_repo:get_names/1, hex_repo:get_versions/1, hex_repo:get_package/2 and hex_repo:get_policy/2 decompress the registry response with zlib:gunzip/1 and decode the signed envelope before verifying its signature. A mirror doesn't have the repository's private key, but it chooses the compressed bytes, so a small response decompresses into an envelope of any size before the signature check rejects it. hex_api decodes responses with the application/vnd.hex+erlang content type through hex_safe_binary_to_term:safe_binary_to_term/1, which calls binary_to_term(Binary, [safe]). The safe option prevents atom creation, but it accepts compressed terms and doesn't limit the size of the decoded term, and the check that rejects functions and ports runs after the term has been built. The fix for CVE-2026-21619 added the safe option and that check without bounding the decoded size. This issue affects rebar3: from 3.9.1 before 3.27.3; hex: from 2.1.0 before 2.5.2; hex_core: from 0.1.0 before 0.20.0.
References

Mon, 12 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
Description Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in hexpm hex_core allows an untrusted repository mirror, or a server answering hex_core's API requests, to exhaust the memory of the Erlang VM running hex_core. The same code is vendored in Hex (mix_hex_repo, mix_hex_api) and rebar3 (r3_hex_repo, r3_hex_api). hex_repo:get_names/1, hex_repo:get_versions/1, hex_repo:get_package/2 and hex_repo:get_policy/2 decompress the registry response with zlib:gunzip/1 and decode the signed envelope before verifying its signature. A mirror doesn't have the repository's private key, but it chooses the compressed bytes, so a small response decompresses into an envelope of any size before the signature check rejects it. hex_api decodes responses with the application/vnd.hex+erlang content type through hex_safe_binary_to_term:safe_binary_to_term/1, which calls binary_to_term(Binary, [safe]). The safe option prevents atom creation, but it accepts compressed terms and doesn't limit the size of the decoded term, and the check that rejects functions and ports runs after the term has been built. The fix for CVE-2026-21619 added the safe option and that check without bounding the decoded size. This issue affects rebar3: from 3.9.1 onward; hex: from 2.1.0 before 2.5.2; hex_core: from 0.1.0 before 0.20.0.
Title hex_core decompresses registry and Erlang term API responses without size limits
First Time appeared Erlang
Erlang rebar3
Hexpm
Hexpm hex
Hexpm hex Core
Weaknesses CWE-409
CPEs cpe:2.3:a:erlang:rebar3:*:*:*:*:*:*:*:*
cpe:2.3:a:hexpm:hex:*:*:*:*:*:*:*:*
cpe:2.3:a:hexpm:hex_core:*:*:*:*:*:*:*:*
Vendors & Products Erlang
Erlang rebar3
Hexpm
Hexpm hex
Hexpm hex Core
References
Metrics cvssV4_0

{'score': 2.1, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-10-15T18:05:12.446Z

Reserved: 2026-10-10T13:00:02.355Z

Link: CVE-2026-105274

cve-icon Vulnrichment

Updated: 2026-10-15T17:51:42.437Z

cve-icon NVD

Status : Deferred

Published: 2026-10-12T17:17:12.457

Modified: 2026-10-15T19:17:15.367

Link: CVE-2026-105274

cve-icon Redhat

Severity : Low

Publid Date: 2026-10-12T16:43:58Z

Links: CVE-2026-105274 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-12T22:00:16Z

Weaknesses
  • CWE-409

    Improper Handling of Highly Compressed Data (Data Amplification)