{"id":"CVE-2021-23436","aliases":["CLSA-2026-1792746527","EUVD-2021-1957","GHSA-33f9-j839-rf8h","ROOT-APP-NPM-CVE-2021-23436"],"status":"published","title":"Prototype Pollution","description":"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.","severity":{"version":"3.1","score":5.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L/E:P/RL:O/RC:C","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.01795,"percentile":0.78738,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-1321","CWE-843"],"published":"2021-09-01T17:30:09Z","modified":"2026-10-23T13:45:35Z","fixes":[{"ecosystem":"npm","package":"immer","fixed_in":["9.0.6"],"sources":["ghsa","osv"]},{"ecosystem":"Root:npm","package":"immer","fixed_in":["8.0.1-aikido.1","8.0.1-aikido.2"],"sources":["osv"]},{"ecosystem":"Root:npm","package":"@rootio/immer","fixed_in":["8.0.1-root.io.1","8.0.1-root.io.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"immer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0"},{"fixed":"9.0.6"}]}]},{"source":"osv","ecosystem":"TuxCare:npm","package":"immer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.1-tuxcare.0"},{"fixed":"8.0.1-tuxcare.1"}]}],"versions":["8.0.1"],"bundled":2},{"source":"osv","ecosystem":"npm","package":"immer","ranges":[{"type":"SEMVER","events":[{"introduced":"7.0.0"},{"fixed":"9.0.6"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"immer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-aikido.1"},{"fixed":"8.0.1-aikido.2"}]}]},{"source":"osv","ecosystem":"Root:npm","package":"@rootio/immer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.1-root.io.1"},{"fixed":"8.0.1-root.io.2"}]}]}],"products":[{"vendor":"immer_project","product":"immer"}],"references":[{"url":"https://snyk.io/vuln/SNYK-JS-IMMER-1540542","tags":["x_refsource_MISC","x_transferred","Exploit","Patch","Third Party Advisory","fix","web"]},{"url":"https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266","tags":["x_refsource_MISC","x_transferred","Exploit","Patch","Third Party Advisory","fix","web"]},{"url":"https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-23436","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-33f9-j839-rf8h"},{"url":"https://github.com/immerjs/immer","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2021-23436","title":"Prototype Pollution","description":"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.","status":"published","published":"2021-09-01T17:30:09.902Z","modified":"2024-09-16T16:28:32.515Z","cvss":[{"version":"3.1","score":5.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L/E:P/RL:O/RC:C","level":"medium","assessor":"cna"}],"updated_at":"2026-11-02T14:33:00.819444Z"}],"euvd":[{"id":"EUVD-2021-1957","description":"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.","status":"published","published":"2021-09-01T17:30:09Z","modified":"2024-09-16T16:28:32Z","cvss":[{"version":"3.1","score":5.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L/E:P/RL:O/RC:C","level":"medium"}],"updated_at":"2026-11-03T00:55:51.136895Z"}],"ghsa":[{"id":"GHSA-33f9-j839-rf8h","title":"Prototype Pollution in immer","description":"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.","status":"published","published":"2021-09-02T17:17:37Z","modified":"2024-04-30T20:26:07Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-843","CWE-1321"],"updated_at":"2026-11-02T14:37:47.338362Z"}],"nvd":[{"id":"CVE-2021-23436","description":"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.","status":"published","published":"2021-09-01T18:15:08.477Z","modified":"2026-06-17T03:38:45.597Z","cvss":[{"version":"3.1","score":5.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-843"],"updated_at":"2026-11-02T14:06:58.05696Z"}],"osv":[{"id":"CVE-2021-23436","description":"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.","status":"published","published":"2021-09-01T18:15:08.477Z","modified":"2026-10-20T10:54:32.236759422Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:18.778776Z"},{"id":"GHSA-33f9-j839-rf8h","title":"Prototype Pollution in immer","description":"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.","status":"published","published":"2021-09-02T17:17:37Z","modified":"2025-01-14T09:12:14.521021Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-1321","CWE-843"],"updated_at":"2026-11-02T15:46:35.050232Z"},{"id":"CLSA-2026-1792746527","title":"TuxCare security update for immer (2 CVEs)","description":"TuxCare rebuilt immer to address 2 CVEs. Fixed in 8.0.1-tuxcare.1.","status":"published","published":"2026-10-23T09:08:47Z","modified":"2026-10-23T13:45:35.178704601Z","updated_at":"2026-11-02T15:43:54.981307Z"},{"id":"ROOT-APP-NPM-CVE-2021-23436","title":"CVE-2021-23436 in immer - Patched by Root","description":"Root has patched CVE-2021-23436 in the immer package for Root:npm. Multiple fixed versions available.","status":"published","published":"2026-09-02T06:57:26Z","modified":"2026-09-02T08:00:04.804995843Z","updated_at":"2026-11-02T15:53:27.362922Z"}]}}
