Every CVE Search/ Get API key

CVE-2021-23436

Prototype Pollution

5.6 MediumFix available

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "proto" || p === "constructor") in applyPatches_ returns false if p is ['proto'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
Low
Availability
Low

Exploit likelihood

1.80%Up 1.0 points since Sep 2, 2021
90%50%10%1%

What each source reports

CVE List Score used 5.6

Prototype Pollution

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "proto" || p === "constructor") in applyPatches_ returns false if p is ['proto'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
CVE-2021-23436
CVSS 3.1
5.6 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L/E:P/RL:O/RC:C
Updated
2026-11-02
EUVDEUVD-2021-1957 5.6

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "proto" || p === "constructor") in applyPatches_ returns false if p is ['proto'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
EUVD-2021-1957
CVSS 3.1
5.6 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L/E:P/RL:O/RC:C
Updated
2026-11-03
GitHub AdvisoriesGHSA-33f9-j839-rf8h 9.8

Prototype Pollution in immer

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "__proto__" || p === "constructor") in applyPatches_ returns false if p is ['__proto__'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
GHSA-33f9-j839-rf8h
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-843, CWE-1321
Updated
2026-11-02
NVD 5.6

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "proto" || p === "constructor") in applyPatches_ returns false if p is ['proto'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
CVE-2021-23436
CVSS 3.1
5.6 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2.0
7.5 HighAV:N/AC:L/Au:N/C:P/I:P/A:P
Weakness
CWE-843
Updated
2026-11-02
OSV 9.8

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "proto" || p === "constructor") in applyPatches_ returns false if p is ['proto'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
CVE-2021-23436
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVGHSA-33f9-j839-rf8h 9.8

Prototype Pollution in immer

This affects the package immer before 9.0.6. A type confusion vulnerability can lead to a bypass of CVE-2020-28477 when the user-provided keys used in the path parameter are arrays. In particular, this bypass is possible because the condition (p === "__proto__" || p === "constructor") in applyPatches_ returns false if p is ['__proto__'] (or ['constructor']). The === operator (strict equality operator) returns false if the operands have different type.

Record
GHSA-33f9-j839-rf8h
CVSS 3.1
9.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-1321, CWE-843
Updated
2026-11-02
OSVCLSA-2026-1792746527 No score

TuxCare security update for immer (2 CVEs)

TuxCare rebuilt immer to address 2 CVEs. Fixed in 8.0.1-tuxcare.1.

Record
CLSA-2026-1792746527
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2021-23436 No score

CVE-2021-23436 in immer - Patched by Root

Root has patched CVE-2021-23436 in the immer package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2021-23436
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
immer
npm
7.0.0 up to 9.0.6
9.0.6
immer
TuxCare:npm
From an advisory covering 2 CVEs
8.0.1-tuxcare.0 up to 8.0.1-tuxcare.1, plus listed versions
8.0.1
8.0.1-tuxcare.1
immer
Root:npm
before 8.0.1-aikido.1
8.0.1-aikido.18.0.1-aikido.2
@rootio/immer
Root:npm
before 8.0.1-root.io.1
8.0.1-root.io.18.0.1-root.io.2

History

History
RecordedChangedSources
affected, facts
aliases, publishedEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2021-23436 is a medium vulnerability (CVSS 5.6) in Immer Project Immer, published September 1, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.80%, the 78th percentile. Fixed in immer 9.0.6.

References

MoveEnter Open