CVE-2026-59879
Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
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.
- Record
CVE-2026-59879- CVSS 4.0
- 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 - Weakness
- CWE-190, CWE-400, CWE-835, CWE-1284
- Updated
- 2026-11-02
EUVDEUVD-2026-42318
8.7
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.
- Record
EUVD-2026-42318- CVSS 4.0
- 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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-v56q-mh7h-f735
8.7
Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
Summary
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)
Impact
Availability only. A reachable configuration is any endpoint that routes untrusted input into a List index or a setIn/updateIn key-path — which the extremely common state = fromJS(body); state.setIn(userPath, value) pattern does (config stores, document/collection editors, redux-immutable reducers, JSON-Patch endpoints, etc.).
No confidentiality or integrity impact, no RCE. The companion setSize bug can silently corrupt application state (wrong size) without crashing.
Reproduction (immutable 5.1.7)
import { fromJS, List } from 'immutable';
// 1) Populated List: OOM -> process abort (SIGABRT, exit 134) within ~2s
fromJS({ items: new Array(64).fill(0) }).setIn(['items', '1073741824'], 'x');
// 2) Empty List: hangs forever, uncatchable
List().set(2 ** 30, 'x');
// 3) Silent truncation
List([1, 2, 3]).setSize(2 ** 31); // => size 0
List([1, 2, 3]).setSize(2 ** 32 + 5); // => size 5
A remote 43-byte HTTP request ({"path":["items","1073741824"],"value":"x"}) is sufficient to abort a worker that applies it via state = state.setIn(path, value).
Any index in [2 ** 30, 2 ** 31) works (1073741824, 2000000000, …). An index in [2 ** 31, 2 ** 32) does not crash — it silently wraps (clearing the List) via the same root cause.
Root cause
List stores its values in a 32-wide trie (SHIFT = 5, so each level addresses 5 more bits) and uses signed 32-bit bitwise arithmetic throughout setListBounds() (src/List.js):
- Infinite loop (the hang / OOM). The level-raising loop
while (newTailOffset >= 1 << (newLevel + SHIFT)) {
newRoot = new VNode(
newRoot && newRoot.array.length ? [newRoot] : [],
owner
);
newLevel += SHIFT;
}
relies on 1 << (newLevel + SHIFT). A JavaScript shift count is taken mod 32, so once newLevel + SHIFT reaches 31 the term goes negative (1 << 31 === -2147483648) and at 32 wraps to 1 (1 << 35 === 8). The comparison then stays true forever and the loop never terminates. On a populated List, each iteration retains a new VNode ([newRoot]), so the heap fills and V8 aborts; on an empty List it spins on CPU without allocating.
- Silent wraparound (the
setSizecorruption). Thebegin |= 0/end |= 0coercion (ToInt32) silently wraps large finite values ((2 ** 31) | 0 === -2147483648,(2 ** 32 + 5) | 0 === 5), producing a wrong resulting size instead of an error.
The threshold is 2 ** 30: that is the largest size for which 1 << (newLevel + SHIFT) stays a valid positive 32-bit integer throughout the loops (newLevel + SHIFT stays ≤ 30).
Remediation
The fix is contained to setListBounds() in src/List.js:
- Validate up front, before the lossy
| 0coercion. Compute the intended origin and capacity in full precision and throw a clear, catchableRangeErrorwhen they exceed the addressable range (MAX_LIST_SIZE = 2 ** 30).…
- Record
GHSA-v56q-mh7h-f735- CVSS 4.0
- 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 - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-400, CWE-835, CWE-1284
- Updated
- 2026-11-02
NVD
8.7
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.
- Record
CVE-2026-59879- CVSS 4.0
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-190, CWE-400, CWE-835, CWE-1284
- Updated
- 2026-11-02
OSV
8.7
Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
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.
- Record
CVE-2026-59879- CVSS 4.0
- 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 - Weakness
- CWE-1284, CWE-190, CWE-400, CWE-835
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-59879
7.5
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.
- Record
DEBIAN-CVE-2026-59879- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 12 moreShow less
OSVGHSA-v56q-mh7h-f735
8.7
Immutable.js `List` 32-bit trie overflow → unrecoverable DoS
Summary
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)
Impact
Availability only. A reachable configuration is any endpoint that routes untrusted input into a List index or a setIn/updateIn key-path — which the extremely common state = fromJS(body); state.setIn(userPath, value) pattern does (config stores, document/collection editors, redux-immutable reducers, JSON-Patch endpoints, etc.).
No confidentiality or integrity impact, no RCE. The companion setSize bug can silently corrupt application state (wrong size) without crashing.
Reproduction (immutable 5.1.7)
import { fromJS, List } from 'immutable';
// 1) Populated List: OOM -> process abort (SIGABRT, exit 134) within ~2s
fromJS({ items: new Array(64).fill(0) }).setIn(['items', '1073741824'], 'x');
// 2) Empty List: hangs forever, uncatchable
List().set(2 ** 30, 'x');
// 3) Silent truncation
List([1, 2, 3]).setSize(2 ** 31); // => size 0
List([1, 2, 3]).setSize(2 ** 32 + 5); // => size 5
A remote 43-byte HTTP request ({"path":["items","1073741824"],"value":"x"}) is sufficient to abort a worker that applies it via state = state.setIn(path, value).
Any index in [2 ** 30, 2 ** 31) works (1073741824, 2000000000, …). An index in [2 ** 31, 2 ** 32) does not crash — it silently wraps (clearing the List) via the same root cause.
Root cause
List stores its values in a 32-wide trie (SHIFT = 5, so each level addresses 5 more bits) and uses signed 32-bit bitwise arithmetic throughout setListBounds() (src/List.js):
- Infinite loop (the hang / OOM). The level-raising loop
while (newTailOffset >= 1 << (newLevel + SHIFT)) {
newRoot = new VNode(
newRoot && newRoot.array.length ? [newRoot] : [],
owner
);
newLevel += SHIFT;
}
relies on 1 << (newLevel + SHIFT). A JavaScript shift count is taken mod 32, so once newLevel + SHIFT reaches 31 the term goes negative (1 << 31 === -2147483648) and at 32 wraps to 1 (1 << 35 === 8). The comparison then stays true forever and the loop never terminates. On a populated List, each iteration retains a new VNode ([newRoot]), so the heap fills and V8 aborts; on an empty List it spins on CPU without allocating.
- Silent wraparound (the
setSizecorruption). Thebegin |= 0/end |= 0coercion (ToInt32) silently wraps large finite values ((2 ** 31) | 0 === -2147483648,(2 ** 32 + 5) | 0 === 5), producing a wrong resulting size instead of an error.
The threshold is 2 ** 30: that is the largest size for which 1 << (newLevel + SHIFT) stays a valid positive 32-bit integer throughout the loops (newLevel + SHIFT stays ≤ 30).
Remediation
The fix is contained to setListBounds() in src/List.js:
- Validate up front, before the lossy
| 0coercion. Compute the intended origin and capacity in full precision and throw a clear, catchableRangeErrorwhen they exceed the addressable range (MAX_LIST_SIZE = 2 ** 30).…
- Record
GHSA-v56q-mh7h-f735- CVSS 4.0
- 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 - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1284, CWE-190, CWE-400, CWE-835
- Updated
- 2026-11-02
OSVRHSA-2026:74503
9.1
Red Hat Security Advisory: Satellite 6.19.5 Async Update
- Record
RHSA-2026:74503- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:L - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-59879
8.7
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.
- Record
UBUNTU-CVE-2026-59879- CVSS 4.0
- 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 - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1784682983 No score
TuxCare security update for immutable (1 CVE)
TuxCare rebuilt immutable to address 1 CVE. Fixed in 5.0.3-tuxcare.2.
- Record
CLSA-2026-1784682983- Updated
- 2026-11-02
OSVCLSA-2026-1784683091 No score
TuxCare security update for immutable (1 CVE)
TuxCare rebuilt immutable to address 1 CVE. Fixed in 4.3.7-tuxcare.2.
- Record
CLSA-2026-1784683091- Updated
- 2026-11-02
OSVCLSA-2026-1784769532 No score
TuxCare security update for immutable (1 CVE)
TuxCare rebuilt immutable to address 1 CVE. Fixed in 4.3.5-tuxcare.2.
- Record
CLSA-2026-1784769532- Updated
- 2026-11-02
OSVCLSA-2026-1784769615 No score
TuxCare security update for immutable (2 CVEs)
TuxCare rebuilt immutable to address 2 CVEs. Fixed in 4.1.0-tuxcare.2.
- Record
CLSA-2026-1784769615- Updated
- 2026-11-02
OSVCLSA-2026-1788775607 No score
TuxCare security update for immutable (1 CVE)
TuxCare rebuilt immutable to address 1 CVE. Fixed in 3.8.3-tuxcare.2.
- Record
CLSA-2026-1788775607- Updated
- 2026-11-02
OSVCLSA-2026-1790084679 No score
TuxCare security update for immutable (2 CVEs)
TuxCare rebuilt immutable to address 2 CVEs. Fixed in 5.1.5-tuxcare.1.
- Record
CLSA-2026-1790084679- Updated
- 2026-11-02
OSVCLSA-2026-1790866103 No score
TuxCare security update for immutable (1 CVE)
TuxCare rebuilt immutable to address 1 CVE. Fixed in 3.7.6-tuxcare.2.
- Record
CLSA-2026-1790866103- Updated
- 2026-11-02
OSVCLSA-2026-1792163804 No score
TuxCare security update for immutable (2 CVEs)
TuxCare rebuilt immutable to address 2 CVEs. Fixed in 4.3.8-tuxcare.1.
- Record
CLSA-2026-1792163804- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-59879 No score
CVE-2026-59879 in immutable - Patched by Root
Root has patched CVE-2026-59879 in the immutable package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-59879- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
immutablenpm |
5.0.0-beta.1 up to 5.1.8 | 5.1.8 |
immutablenpm |
4.0.0-rc.1 up to 4.3.9 | 4.3.9 |
immutablenpm |
before 3.8.4 | 3.8.4 |
immutableTuxCare:npm |
5.0.3-tuxcare.0 up to 5.0.3-tuxcare.2, plus listed versions 5.0.35.0.3-tuxcare.1 |
5.0.3-tuxcare.2 |
immutableTuxCare:npm |
4.3.7-tuxcare.0 up to 4.3.7-tuxcare.2, plus listed versions 4.3.74.3.7-tuxcare.1 |
4.3.7-tuxcare.2 |
immutableTuxCare:npm |
4.3.5-tuxcare.0 up to 4.3.5-tuxcare.2, plus listed versions 4.3.54.3.5-tuxcare.1 |
4.3.5-tuxcare.2 |
immutableTuxCare:npm From an advisory covering 2 CVEs |
4.1.0-tuxcare.0 up to 4.1.0-tuxcare.2, plus listed versions 4.1.04.1.0-tuxcare.1 |
4.1.0-tuxcare.2 |
immutableTuxCare:npm |
3.8.3-tuxcare.0 up to 3.8.3-tuxcare.2, plus listed versions 3.8.33.8.3-tuxcare.1 |
3.8.3-tuxcare.2 |
immutableTuxCare:npm From an advisory covering 2 CVEs |
5.1.5-tuxcare.0 up to 5.1.5-tuxcare.1, plus listed versions 5.1.5 |
5.1.5-tuxcare.1 |
immutableTuxCare:npm |
3.7.6-tuxcare.0 up to 3.7.6-tuxcare.2, plus listed versions 3.7.63.7.6-tuxcare.1 |
3.7.6-tuxcare.2 |
Show 43 moreShow less
| Package | Affected | Fixed |
|---|---|---|
immutableTuxCare:npm From an advisory covering 2 CVEs |
4.3.8-tuxcare.0 up to 4.3.8-tuxcare.1, plus listed versions 4.3.8 |
4.3.8-tuxcare.1 |
node-immutableDebian:12 |
All versions, plus listed versions 4.1.0-34.3.4-14.3.8-14.3.8-24.3.9-1 |
None known |
node-immutableDebian:13 |
All versions, plus listed versions 4.3.4-14.3.8-14.3.8-24.3.9-1 |
None known |
node-immutableDebian:14 |
before 4.3.9-1, plus listed versions 4.3.4-14.3.8-14.3.8-2 |
4.3.9-1 |
rubygem-foreman_remote_executionRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:16.5.3-2.el9sat | 0:16.5.3-2.el9sat |
rubygem-foreman_remote_execution-cockpitRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:16.5.3-2.el9sat | 0:16.5.3-2.el9sat |
foremanRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-debugRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-pcpRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foremanRed Hat:satellite_utils:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-cliRed Hat:satellite_utils:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foremanRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-cliRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-debugRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-dynflow-sidekiqRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-ec2Red Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-journaldRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-libvirtRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-openstackRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-pcpRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-postgresqlRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-redisRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-serviceRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-telemetryRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
foreman-vmwareRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0.14-1.el9sat | 0:3.18.0.14-1.el9sat |
rubygem-hammer_cliRed Hat:satellite_utils:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0-2.el9sat | 0:3.18.0-2.el9sat |
rubygem-hammer_cliRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.18.0-2.el9sat | 0:3.18.0-2.el9sat |
python3.12-dynaconfRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.2.13-2.el9pc | 0:3.2.13-2.el9pc |
python3.12-dynaconfRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.2.13-2.el9pc | 0:3.2.13-2.el9pc |
yggdrasil-worker-forwarderRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:0.1.0-2.1.el9sat | 0:0.1.0-2.1.el9sat |
python3.12-sqlparseRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:0.6.0-1.el9pc | 0:0.6.0-1.el9pc |
python3.12-sqlparseRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:0.6.0-1.el9pc | 0:0.6.0-1.el9pc |
rubygem-katelloRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:4.20.0.11-1.el9sat | 0:4.20.0.11-1.el9sat |
python3.12-gitpythonRed Hat:satellite_capsule:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.1.62-1.el9pc | 0:3.1.62-1.el9pc |
python3.12-gitpythonRed Hat:satellite:6.19::el9 From an advisory covering 31 CVEs |
before 0:3.1.62-1.el9pc | 0:3.1.62-1.el9pc |
immutableRoot:npm |
before 3.8.4-aikido.2 | 3.8.4-aikido.25.0.3-aikido.15.1.5-aikido.15.1.6-aikido.15.1.1-aikido.45.1.7-aikido.15.1.1-aikido.54.3.8-aikido.23.7.6-aikido.34.3.7-aikido.45.1.6-aikido.23.8.3-aikido.13.8.3-aikido.25.0.3-aikido.24.0.0-aikido.14.0.0-aikido.24.3.6-aikido.14.0.0-rc.12-aikido.13.7.6-aikido.43.8.4-aikido.1 |
@rootio/immutableRoot:npm |
before 3.8.4-root.io.2 | 3.8.4-root.io.25.0.3-root.io.15.1.5-root.io.15.1.6-root.io.15.1.1-root.io.45.1.7-root.io.15.1.1-root.io.54.3.8-root.io.23.7.6-root.io.34.3.7-root.io.45.1.6-root.io.23.8.3-root.io.13.8.3-root.io.25.0.3-root.io.24.0.0-root.io.14.0.0-root.io.24.3.6-root.io.14.0.0-rc.12-root.io.13.7.6-root.io.43.8.4-root.io.1 |
node-immutableUbuntu:20.04:LTS |
All versions, plus listed versions 3.8.2+dfsg-3 |
None known |
node-immutableUbuntu:22.04:LTS |
All versions, plus listed versions 3.8.2+dfsg-34.0.0-14.0.0-2 |
None known |
node-immutableUbuntu:24.04:LTS |
All versions, plus listed versions 4.1.0-34.3.4-1 |
None known |
node-immutableUbuntu:25.10 |
All versions, plus listed versions 4.3.4-1 |
None known |
node-immutableUbuntu:26.10 |
All versions, plus listed versions 4.3.8-24.3.9-1 |
None known |
node-immutableUbuntu:26.04:LTS |
All versions, plus listed versions 4.3.4-14.3.8-2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-59879 is a high vulnerability (CVSS 8.7) in Immutable-js Immutable, published July 8, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.57%, the 47th percentile. Fixed in immutable 5.1.8.
References
github.com/immutable-js/immutable-js/security/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/v4.3.9
github.com/immutable-js/immutable-js/releases/tag/v5.1.8
nvd.nist.gov/vuln/detail/CVE-2026-59879
Show 183 moreShow less
github.com/immutable-js/immutable-js/releases/tag/v3.8.4
github.com/advisories/GHSA-v56q-mh7h-f735
github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59879.json
security-tracker.debian.org/tracker/CVE-2026-59879
github.com/immutable-js/immutable-js
access.redhat.com/errata/RHSA-2026:74503
access.redhat.com/security/updates/classification
issues.redhat.com/browse/SAT-50183
issues.redhat.com/browse/SAT-50184
issues.redhat.com/browse/SAT-50185
issues.redhat.com/browse/SAT-50187
issues.redhat.com/browse/SAT-50584
issues.redhat.com/browse/SAT-50904
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_74503.json
access.redhat.com/security/cve/CVE-2026-12405
bugzilla.redhat.com/show_bug.cgi?id=2488952
cve.org/CVERecord?id=CVE-2026-12405
nvd.nist.gov/vuln/detail/CVE-2026-12405
access.redhat.com/security/cve/CVE-2026-12423
bugzilla.redhat.com/show_bug.cgi?id=2488956
cve.org/CVERecord?id=CVE-2026-12423
nvd.nist.gov/vuln/detail/CVE-2026-12423
access.redhat.com/security/cve/CVE-2026-12540
bugzilla.redhat.com/show_bug.cgi?id=2489969
cve.org/CVERecord?id=CVE-2026-12540
nvd.nist.gov/vuln/detail/CVE-2026-12540
access.redhat.com/security/cve/CVE-2026-12541
bugzilla.redhat.com/show_bug.cgi?id=2489970
cve.org/CVERecord?id=CVE-2026-12541
nvd.nist.gov/vuln/detail/CVE-2026-12541
access.redhat.com/security/cve/CVE-2026-12542
bugzilla.redhat.com/show_bug.cgi?id=2489971
cve.org/CVERecord?id=CVE-2026-12542
nvd.nist.gov/vuln/detail/CVE-2026-12542
access.redhat.com/security/cve/CVE-2026-12544
bugzilla.redhat.com/show_bug.cgi?id=2489992
cve.org/CVERecord?id=CVE-2026-12544
nvd.nist.gov/vuln/detail/CVE-2026-12544
access.redhat.com/security/cve/CVE-2026-12545
bugzilla.redhat.com/show_bug.cgi?id=2489993
cve.org/CVERecord?id=CVE-2026-12545
nvd.nist.gov/vuln/detail/CVE-2026-12545
access.redhat.com/security/cve/CVE-2026-33154
bugzilla.redhat.com/show_bug.cgi?id=2449774
cve.org/CVERecord?id=CVE-2026-33154
nvd.nist.gov/vuln/detail/CVE-2026-33154
github.com/dynaconf/dynaconf/commit/2fbb45ee36b8c0caa5b924fe19f3c1a5e8603fa7
github.com/dynaconf/dynaconf/releases/tag/3.2.13
github.com/dynaconf/dynaconf/security/advisories/GHSA-pxrr-hq57-q35p
access.redhat.com/security/cve/CVE-2026-33818
bugzilla.redhat.com/show_bug.cgi?id=2515815
cve.org/CVERecord?id=CVE-2026-33818
nvd.nist.gov/vuln/detail/CVE-2026-33818
go.dev/cl/814980
go.dev/issue/80405
groups.google.com/g/golang-announce/c/94pEornpRlI
pkg.go.dev/vuln/GO-2026-5972
access.redhat.com/security/cve/CVE-2026-42504
bugzilla.redhat.com/show_bug.cgi?id=2484204
cve.org/CVERecord?id=CVE-2026-42504
nvd.nist.gov/vuln/detail/CVE-2026-42504
go.dev/cl/774481
go.dev/issue/79217
groups.google.com/g/golang-announce/c/tKs3rmcBcKw
pkg.go.dev/vuln/GO-2026-5038
access.redhat.com/security/cve/CVE-2026-45623
bugzilla.redhat.com/show_bug.cgi?id=2507595
cve.org/CVERecord?id=CVE-2026-45623
nvd.nist.gov/vuln/detail/CVE-2026-45623
github.com/postcss/postcss/security/advisories/GHSA-6g55-p6wh-862q
access.redhat.com/security/cve/CVE-2026-54284
bugzilla.redhat.com/show_bug.cgi?id=2517527
cve.org/CVERecord?id=CVE-2026-54284
nvd.nist.gov/vuln/detail/CVE-2026-54284
github.com/andialbrecht/sqlparse/commit/939b129e24c0ad5d51368b1aa72fffcaca76f06f
github.com/andialbrecht/sqlparse/security/advisories/GHSA-pwgv-4x5q-6m9f
access.redhat.com/security/cve/CVE-2026-56097
bugzilla.redhat.com/show_bug.cgi?id=2490543
cve.org/CVERecord?id=CVE-2026-56097
nvd.nist.gov/vuln/detail/CVE-2026-56097
access.redhat.com/security/cve/CVE-2026-56098
bugzilla.redhat.com/show_bug.cgi?id=2490542
cve.org/CVERecord?id=CVE-2026-56098
nvd.nist.gov/vuln/detail/CVE-2026-56098
access.redhat.com/security/cve/CVE-2026-56858
bugzilla.redhat.com/show_bug.cgi?id=2515838
cve.org/CVERecord?id=CVE-2026-56858
nvd.nist.gov/vuln/detail/CVE-2026-56858
go.dev/cl/807100
go.dev/issue/80435
pkg.go.dev/vuln/GO-2026-6091
access.redhat.com/security/cve/CVE-2026-56860
bugzilla.redhat.com/show_bug.cgi?id=2515820
cve.org/CVERecord?id=CVE-2026-56860
nvd.nist.gov/vuln/detail/CVE-2026-56860
go.dev/cl/803681
go.dev/issue/80494
pkg.go.dev/vuln/GO-2026-6218
access.redhat.com/security/cve/CVE-2026-56862
bugzilla.redhat.com/show_bug.cgi?id=2515839
cve.org/CVERecord?id=CVE-2026-56862
nvd.nist.gov/vuln/detail/CVE-2026-56862
go.dev/cl/804261
go.dev/issue/80528
pkg.go.dev/vuln/GO-2026-6090
access.redhat.com/security/cve/CVE-2026-59879
bugzilla.redhat.com/show_bug.cgi?id=2498158
cve.org/CVERecord?id=CVE-2026-59879
access.redhat.com/security/cve/CVE-2026-59893
bugzilla.redhat.com/show_bug.cgi?id=2517523
cve.org/CVERecord?id=CVE-2026-59893
nvd.nist.gov/vuln/detail/CVE-2026-59893
github.com/andialbrecht/sqlparse/commit/d1d80602741f77ec78e5a04ce4719244cf32352e
github.com/andialbrecht/sqlparse/security/advisories/GHSA-prg7-hcfm-mfcr
access.redhat.com/security/cve/CVE-2026-71491
bugzilla.redhat.com/show_bug.cgi?id=2517518
cve.org/CVERecord?id=CVE-2026-71491
nvd.nist.gov/vuln/detail/CVE-2026-71491
github.com/andialbrecht/sqlparse/commit/ef2012a5eeb491e604dea2b00d516904a3830c87
github.com/andialbrecht/sqlparse/security/advisories/GHSA-f2ff-p2ww-7p4p
access.redhat.com/security/cve/CVE-2026-73086
bugzilla.redhat.com/show_bug.cgi?id=2514175
cve.org/CVERecord?id=CVE-2026-73086
nvd.nist.gov/vuln/detail/CVE-2026-73086
github.com/ai/nanoid/commit/7087969281cab8ba8ae3babf1894e819068b3bb4
github.com/ai/nanoid/commit/821dfed7b5db7f88e92f56c60eef32c8135077c3
github.com/ai/nanoid/commit/b0036ed60dc9facd7f1191a50dfb3076500202ac
github.com/ai/nanoid/releases/tag/3.3.12
github.com/ai/nanoid/releases/tag/5.1.11
github.com/ai/nanoid/security/advisories/GHSA-xwg4-73v4-xw9w
access.redhat.com/security/cve/CVE-2026-75899
bugzilla.redhat.com/show_bug.cgi?id=2521778
cve.org/CVERecord?id=CVE-2026-75899
nvd.nist.gov/vuln/detail/CVE-2026-75899
cna.openjsf.org/security-advisories.html
github.com/fastify/fast-uri/security/advisories/GHSA-fph4-wmhf-6fwf
access.redhat.com/security/cve/CVE-2026-75931
bugzilla.redhat.com/show_bug.cgi?id=2521777
cve.org/CVERecord?id=CVE-2026-75931
nvd.nist.gov/vuln/detail/CVE-2026-75931
github.com/fastify/fast-uri/security/advisories/GHSA-5jgf-p345-68v8
access.redhat.com/security/cve/CVE-2026-75975
bugzilla.redhat.com/show_bug.cgi?id=2521779
cve.org/CVERecord?id=CVE-2026-75975
nvd.nist.gov/vuln/detail/CVE-2026-75975
github.com/fastify/fast-uri/security/advisories/GHSA-f65p-4m7j-42xc
access.redhat.com/security/cve/CVE-2026-78679
bugzilla.redhat.com/show_bug.cgi?id=2523205
cve.org/CVERecord?id=CVE-2026-78679
nvd.nist.gov/vuln/detail/CVE-2026-78679
github.com/gitpython-developers/GitPython/security/advisories/GHSA-3wxw-xv34-2frg
vulncheck.com/advisories/gitpython-before-arbitrary-file-read-via-tagreference-create
access.redhat.com/security/cve/CVE-2026-79654
bugzilla.redhat.com/show_bug.cgi?id=2523348
cve.org/CVERecord?id=CVE-2026-79654
nvd.nist.gov/vuln/detail/CVE-2026-79654
github.com/Katello/katello/pull/11847
projects.theforeman.org/issues/39701
access.redhat.com/security/cve/CVE-2026-84292
bugzilla.redhat.com/show_bug.cgi?id=2527747
cve.org/CVERecord?id=CVE-2026-84292
nvd.nist.gov/vuln/detail/CVE-2026-84292
github.com/fastify/fast-uri/security/advisories/GHSA-qw65-cvwx-89v3
access.redhat.com/security/cve/CVE-2026-84394
bugzilla.redhat.com/show_bug.cgi?id=2527756
cve.org/CVERecord?id=CVE-2026-84394
nvd.nist.gov/vuln/detail/CVE-2026-84394
github.com/fastify/fast-uri/security/advisories/GHSA-58mr-gqgx-xq4g
access.redhat.com/security/cve/CVE-2026-87817
bugzilla.redhat.com/show_bug.cgi?id=2530744
cve.org/CVERecord?id=CVE-2026-87817
nvd.nist.gov/vuln/detail/CVE-2026-87817
github.com/gitpython-developers/GitPython/security/advisories/GHSA-239g-whfq-7xj9
vulncheck.com/advisories/gitpython-before-3.1.60-remote-code-execution-via-git-directory-impersonation
access.redhat.com/security/cve/CVE-2026-96658
bugzilla.redhat.com/show_bug.cgi?id=2534185
cve.org/CVERecord?id=CVE-2026-96658
nvd.nist.gov/vuln/detail/CVE-2026-96658
access.redhat.com/security/cve/CVE-2026-96659
bugzilla.redhat.com/show_bug.cgi?id=2536844
cve.org/CVERecord?id=CVE-2026-96659
nvd.nist.gov/vuln/detail/CVE-2026-96659
ubuntu.com/security/CVE-2026-59879
Left out here: the rest of 2 source descriptions. The JSON record has them.