Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify endpoint ingesting user objects into Immutable Map
-
DeliveryCraft many keys colliding on 32-bit hash
-
ExploitSubmit oversized colliding payload
-
ExecutionForce linear scans in HashCollisionNode
-
PersistExhaust CPU and stall event loop
-
ImpactDenial of service
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
|
| Exploitation Conditions | Exploitation requires that attacker-controlled data be used to create keys in an Immutable.Map or Immutable.Set - specifically via one of the named ingestion paths Immutable.Map(obj), Immutable.fromJS(obj), state.merge(userObject), or mergeDeep - on a vulnerable version (<4.3.9 or <5.1.8), and the attacker must supply enough distinct keys sharing the same 32-bit hash to inflate a HashCollisionNode. What LIMITS exploitation: the application must actually route untrusted input into Map/Set keys (apps using only trusted or internal keys are not reachable), and the attacker benefits from knowing the hash algorithm to craft collisions; there is no authentication or user-interaction requirement (PR:N/UI:N), and impact is confined to availability (CPU/event-loop exhaustion) with no data exposure. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes an unauthenticated, low-complexity, network-reachable attack, and the impact metrics are honest: VC:N/VI:N with VA:H, i.e. pure availability loss with no confidentiality or integrity impact - consistent with a CPU-exhaustion DoS rather than the 'Information Disclosure' tag on the record, which appears mislabeled and should be disregarded. There is no CISA KEV listing and no POC referenced in the provided sources, so this is a real but not urgently-exploited issue; EPSS was not supplied, so likelihood cannot be quantified. Real-world risk is highly deployment-dependent: the flaw is only reachable when untrusted input is used to build Map/Set keys, so a service that funnels user JSON through fromJS/merge is meaningfully exposed, whereas an app that only stores trusted internal keys is not. Given the enormous install base of Immutable.js, aggregate exposure is significant even though any single deployment may not be reachable - the vector implies network reachability but exploitability depends on application data flow, which should be verified before prioritizing. |
| Exploit ScenarioDerived | An attacker submits a large JSON object to an API endpoint whose handler calls Immutable.fromJS() or state.merge() on the request body; the object contains hundreds or thousands of keys deliberately chosen to collide on Immutable.js's 32-bit hash. Each insert and subsequent lookup triggers a linear scan of the growing collision bucket, so a single moderately-sized request pegs a CPU core and stalls the event loop, denying service to other users. No authentication or user interaction is required (PR:N/UI:N), and although no public POC is referenced, the hash-flooding technique is well understood. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 08, 2026
Uncontrolled resource consumption in Immutable.js prior to 4.3.9 and 5.1.8 lets an attacker who controls keys inserted into an Immutable.Map or Immutable.Set exhaust CPU by supplying many keys that share the same 32-bit hash. Because collisions are stored in a HashCollisionNode bucket that is scanned linearly, insertion and lookup degrade from near-constant to quadratic time, producing a denial of service. No public exploit identified at time of analysis and no active exploitation is indicated, but the CVSS 4.0 score of 8.7 reflects an easy, unauthenticated, network-reachable availability impact wherever user-supplied objects reach these structures.
RemediationAI
Upgrade Immutable.js to 4.3.9 (4.x users) or 5.1.8 (5.x users), the vendor-released patched versions per GitHub releases v4.3.9 and v5.1.8 and advisory GHSA-xvcm-6775-5m9r; also update any transitive dependencies that pin an older immutable version by adjusting the lockfile or using npm overrides. If you cannot upgrade immediately, reduce the attack surface by not building Map/Set keys directly from untrusted input: avoid passing raw user objects to Immutable.Map(obj), Immutable.fromJS(obj), state.merge(userObject), or mergeDeep, and instead validate, whitelist, or bound the number of keys accepted from external sources (trade-off: added input-handling code and possible rejection of legitimate large payloads). Enforcing request size and field-count limits plus per-request CPU/time budgets at the API gateway or application layer also blunts the DoS, at the cost of tuning thresholds so they do not break legitimate heavy workloads.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Immutable.js is a widely used JavaScript library providing persistent immutable data structures (Map, Set, List, etc.), commonly paired with React/Redux on the front end and Node.js on the server. Internally, Map/Set use a Hash Array Mapped Trie (HAMT) keyed on a 32-bit hash of each key. When two distinct keys produce the same 32-bit hash they are placed together in a HashCollisionNode, whose entries are compared one-by-one in a linear scan. This is a textbook CWE-407 (Inefficient/Excessive Algorithmic Complexity) issue: the average O(1) hash-lookup guarantee collapses to O(n) per operation within a collision bucket, so an attacker who can predict or reproduce the hash function can deliberately manufacture large numbers of colliding keys. The affected component is the immutable-js package itself (cpe:2.3:a:immutable-js:immutable-js), and any ingestion path that turns external input into keys - Immutable.Map(obj), Immutable.fromJS(obj), state.merge(userObject), or mergeDeep - is a trigger surface.
Know when Immutable Js 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:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Untrusted keys can reach Map/Set over the network without auth or interaction (AV:N/PR:N/UI:N), collisions are easy to craft against a known hash (AC:L), and impact is CPU-exhaustion DoS only (A:H, C:N/I:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Immutable.js provides many Persistent Immutable data structures. Prior to 4.3.9 and 5.1.8, Immutable.Map and Immutable.Set keep keys that share the same 32-bit hash in a HashCollisionNode collision bucket that is scanned linearly, allowing an attacker who controls keys inserted into a Map, such as through Immutable.Map(obj), Immutable.fromJS(obj), state.merge(userObject), or mergeDeep, to craft many colliding keys and degrade insertion and lookup to consume disproportionate CPU. This issue is fixed in versions 4.3.9 and 5.1.8.
Executive ViewAI
Immutable.js versions before 4.3.9 and 5.1.8 contain a denial-of-service vulnerability allowing unauthenticated attackers to exhaust server CPU through hash collision attacks on Map and Set structures. Organizations using this library in production applications risk service disruption affecting customers and business operations. With a CVSS score of 8.7 and easy exploitability, this requires immediate patching across all affected systems.
Apply vendor patch.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Immutable Js
View allDenial of service in the Immutable.js JavaScript library (versions before 4.3.9 and 5.1.8) allows attackers who can infl
Immutable.js provides many Persistent Immutable data structures. versions up to 3.8.3 is affected by improperly controll
EUVD-2026-42315
GHSA-xvcm-6775-5m9r
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB