CVE-2026-59879

Immutable.js `List` 32-bit trie overflow → unrecoverable DoS

Published Jul 8, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, List#set, List#setSize, List#setIn, List#updateIn, and the functional set, setIn, and updateIn mishandle an index or size in the range 2 ** 30 to 2 ** 31 in setListBounds in src/List.js, causing an empty List to enter an uncatchable infinite loop, a populated List to allocate without bound until process abort, or setSize to silently wrap large values. This issue is fixed in versions 4.3.9 and 5.1.8.

Analysis

AI-generated

Technical impact

A 32‑bit trie overflow in Immutable.js’s List implementation is triggered when List methods such as set, setSize, setIn, updateIn, or their functional equivalents receive an index or size between 2^30 and 2^31. The bad handling causes an empty List to enter an infinite loop or a populated List to allocate memory without bound until the process aborts, resulting in a denial of service. The flaw is expressed by Integer Overflow (CWE‑190), Unbounded Resource Consumption (CWE‑400), and infinite loop conditions (CWE‑835).

Affected Systems

The vulnerability affects the immutable-js:immutable-js package in any Node.js, browser, or JavaScript environment that imports an unpatched version of the library. Versions earlier than 4.3.9 in the 4.x series and earlier than 5.1.8 in the 5.x series are susceptible. Any application that calls List#set, List#setSize, List#setIn, List#updateIn, or the functional set, setIn, updateIn functions with indices or sizes in the vulnerable range is at risk.

Risk and Exploitability

The CVSS base score of 8.7 marks the flaw as high severity, yet the EPSS score of < 1% indicates a very low likelihood of real‑world exploitation, and the vulnerability is not listed in CISA’s KEV catalog. Attackers would need to supply a large index or size to the vulnerable List operations; a crafted payload that forces a List to use a value between 2^30 and 2^31 can trigger resource exhaustion or an infinite loop, causing the application to become unavailable. If an application sanitizes or limits such values, the risk is substantially reduced, but the high CVSS score still warrants prompt remediation.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade immutable-js to version 4.3.9 or later of the 4.x line, or to version 5.1.8 or later of the 5.x line, to apply the security fix.
  • Add application‑level validation to reject any index or size passed to List methods that meets or exceeds 2^30.
  • Ensure that any external data used as a List index or size is sanitized or constrained before being supplied to List operations.

Generated by OpenCVE AI on August 1, 2026 at 15:59 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-v56q-mh7h-f735 Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Immutable-js
Immutable-js immutable-js
Vendors & Products Immutable-js
Immutable-js immutable-js
Type Values Removed Values Added
Description Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, List#set, List#setSize, List#setIn, List#updateIn, and the functional set, setIn, and updateIn mishandle an index or size in the range 2 ** 30 to 2 ** 31 in setListBounds in src/List.js, causing an empty List to enter an uncatchable infinite loop, a populated List to allocate without bound until process abort, or setSize to silently wrap large values. This issue is fixed in versions 4.3.9 and 5.1.8.
Title Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
Weaknesses CWE-1284
CWE-190
CWE-400
CWE-835
References
Metrics cvssV4_0

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

Weaknesses
  • CWE-1284

    Improper Validation of Specified Quantity in Input

  • CWE-190

    Integer Overflow or Wraparound

  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 8, 2026, 7:41 PM
Reserved
Jul 7, 2026, 4:40 PM
Status
Analyzed
Published
Jul 8, 2026, 5:17 PM
Modified
Jul 10, 2026, 6:48 PM