{"id":"CVE-2021-23470","aliases":["GHSA-4g77-cvgw-grvw","SNYK-JS-PUTILMERGE-2391487"],"url":"https://o3.security/vulnerability/CVE-2021-23470","summary":"Prototype Pollution in putil-merge","details":"This affects the package putil-merge before 3.8.0. The merge() function does not check the values passed into the argument. An attacker can supply a malicious value by adjusting the value to include the constructor property. Note: This vulnerability derives from an incomplete fix in https://security.snyk.io/vuln/SNYK-JS-PUTILMERGE-1317077","published":"2022-02-04T20:15:08.363Z","modified":"2026-07-08T06:49:37.509092097Z","cvss":{"score":9.8,"severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"},"epss":null,"cisaKev":null,"exploitsKnown":1,"affectedPackages":[{"ecosystem":"npm","name":"putil-merge","fixedVersion":"3.8.0"}],"fix":{"url":"https://github.com/panates/putil-merge/commit/476d00078dfb2827d7c9ee0f2392c81b864f7bc5","label":"panates/putil-merge@476d000"},"references":[{"type":"FIX","url":"https://github.com/panates/putil-merge/commit/476d00078dfb2827d7c9ee0f2392c81b864f7bc5"},{"type":"EVIDENCE","url":"https://snyk.io/vuln/SNYK-JS-PUTILMERGE-2391487"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-07-08T06:49:37.509092097Z"}}