Skip to main content

Immutable.js CVE-2026-59880

| EUVDEUVD-2026-42315 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-07-08 GitHub_M GHSA-xvcm-6775-5m9r
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify endpoint ingesting user objects into Immutable Map
  2. Delivery
    Craft many keys colliding on 32-bit hash
  3. Exploit
    Submit oversized colliding payload
  4. Execution
    Force linear scans in HashCollisionNode
  5. Persist
    Exhaust CPU and stall event loop
  6. Impact
    Denial 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

immutable-js 5.0.0-beta.1, < 5.1.8
immutable-js < 4.3.9

Affected Packages

npm immutable fix: 3.8.4, 4.3.9, 5.1.8
euvd immutable_js fix: 4.3.9
euvd immutable_js_5_0_0_beta_1 fix: 5.1.8

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

Vendor (GitHub_M) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

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).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Jul 08, 2026 - 17:01 EUVD

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
High
extremely popular JavaScript immutable-data library across React/Redux and Node apps
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

64
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy