CVE-2026-59879: Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
(updated )
List#set, List#setSize, List#setIn, List#updateIn (and the functional set / setIn / updateIn) mishandle an index or size in the range [2 ** 30, 2 ** 31):
- On an empty
Listthe operation enters an uncatchable infinite loop (a tight CPU spin; a surroundingtry/catchnever regains control). Only killing the worker recovers it. - On a populated
List(≥ 32 elements — i.e. any array of ≥ 32 items turned into aListbyfromJS) the loop allocates without bound → heap exhaustion → the process aborts (SIGABRT, exit134, or kernel OOM-kill137). A real crash, not a recoverable error.
The index may be a numeric string, so it can come straight from a request body, URL, or key-path. A single small unauthenticated request is enough.
There is also a companion silent data-corruption issue in setSize:
List([1, 2, 3]).setSize(2 ** 31); // before fix => size 0 (silently cleared)
List([1, 2, 3]).setSize(2 ** 32 + 5); // before fix => size 5 (huge value wraps to 5)
References
- github.com/advisories/GHSA-v56q-mh7h-f735
- github.com/immutable-js/immutable-js/commit/a1a1ee412dcaa380ab325196283d06594ffe4b84
- github.com/immutable-js/immutable-js/commit/f0bc997d8eb9886aff2236635aa210a95a04304a
- github.com/immutable-js/immutable-js/releases/tag/v3.8.4
- github.com/immutable-js/immutable-js/releases/tag/v4.3.9
- github.com/immutable-js/immutable-js/releases/tag/v5.1.8
- github.com/immutable-js/immutable-js/security/advisories/GHSA-v56q-mh7h-f735
- nvd.nist.gov/vuln/detail/CVE-2026-59879
Code Behaviors & Features
Detect and mitigate CVE-2026-59879 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →