{"id":"CVE-2021-23436","state":"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.","publishedAt":"2021-09-01T17:30:09.902Z","updatedAt":"2024-09-16T16:28:32.515Z","severity":{"score":5.6,"label":"Medium","version":"3.1","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","source":"snyk"},"assigner":"snyk","products":["n/a immer"],"affected":[{"vendor":"n/a","product":"immer","versions":[{"version":"unspecified","status":"affected","lessThan":"9.0.6","versionType":"custom"}]}],"references":["https://snyk.io/vuln/SNYK-JS-IMMER-1540542","https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266","https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237"],"weaknesses":[],"ingestedAt":"2026-10-29T19:48:04.982Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2021/23xxx/CVE-2021-23436.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.1","cveMetadata":{"cveId":"CVE-2021-23436","state":"PUBLISHED","datePublished":"2021-09-01T17:30:09.902Z","dateUpdated":"2024-09-16T16:28:32.515Z","assignerShortName":"snyk","assignerOrgId":"bae035ff-b466-4ff4-94d0-fc9efd9e1730","dateReserved":"2021-01-08T00:00:00.000Z"},"containers":{"cna":{"title":"Prototype Pollution","descriptions":[{"lang":"en","value":"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."}],"affected":[{"vendor":"n/a","product":"immer","versions":[{"version":"unspecified","status":"affected","lessThan":"9.0.6","versionType":"custom"}]}],"references":[{"url":"https://snyk.io/vuln/SNYK-JS-IMMER-1540542","tags":["x_refsource_MISC"]},{"url":"https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266","tags":["x_refsource_MISC"]},{"url":"https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"LOW","baseScore":5.6,"baseSeverity":"MEDIUM","confidentialityImpact":"LOW","exploitCodeMaturity":"PROOF_OF_CONCEPT","integrityImpact":"LOW","privilegesRequired":"NONE","remediationLevel":"OFFICIAL_FIX","reportConfidence":"CONFIRMED","scope":"UNCHANGED","temporalScore":5.1,"temporalSeverity":"MEDIUM","userInteraction":"NONE","vectorString":"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","version":"3.1"}}],"problemTypes":[{"descriptions":[{"description":"Prototype Pollution","lang":"en","type":"text"}]}],"providerMetadata":{"shortName":"snyk","dateUpdated":"2021-09-01T17:30:09.000Z","orgId":"bae035ff-b466-4ff4-94d0-fc9efd9e1730"},"credits":[{"lang":"en","value":"Alessio Della Libera of Snyk Research Team"}],"datePublic":"2021-09-01T00:00:00.000Z","x_legacyV4Record":{"CVE_data_meta":{"ASSIGNER":"report@snyk.io","DATE_PUBLIC":"2021-09-01T17:28:18.037848Z","ID":"CVE-2021-23436","STATE":"PUBLIC","TITLE":"Prototype Pollution"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"immer","version":{"version_data":[{"version_affected":"<","version_value":"9.0.6"}]}}]},"vendor_name":"n/a"}]}},"credit":[{"lang":"eng","value":"Alessio Della Libera of Snyk Research Team"}],"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"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."}]},"impact":{"cvss":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"LOW","baseScore":5.6,"baseSeverity":"MEDIUM","confidentialityImpact":"LOW","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"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","version":"3.1"}},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Prototype Pollution"}]}]},"references":{"reference_data":[{"name":"https://snyk.io/vuln/SNYK-JS-IMMER-1540542","refsource":"MISC","url":"https://snyk.io/vuln/SNYK-JS-IMMER-1540542"},{"name":"https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266","refsource":"MISC","url":"https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266"},{"name":"https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237","refsource":"MISC","url":"https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237"}]}}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://snyk.io/vuln/SNYK-JS-IMMER-1540542","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1579266","tags":["x_refsource_MISC","x_transferred"]},{"url":"https://github.com/immerjs/immer/commit/fa671e55ee9bd42ae08cc239102b665a23958237","tags":["x_refsource_MISC","x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-03T19:05:55.905Z"}}]}}}