Prototype pollution là lỗ hổng khi dữ liệu người dùng ghi vào Object.prototype (qua key như __proto__, constructor, prototype).
Hậu quả: nhiều object khác trong app bị ảnh hưởng ngoài ý muốn.
javascript
// Attack vector (lodash merge vulnerability - CVE-2018-3721):
const malicious = JSON.parse('{"__proto__":{"isAdmin":true}}');
_.merge({}, malicious); // lodash < 4.17.5: deep merge đi vào __proto__ → ghi lên Object.prototype
console.log({}.isAdmin); // true — bất kỳ object nào cũng bị ảnh hưởng!
// Object.assign({}, malicious) thì KHÔNG làm bẩn: nó chỉ đổi prototype của object mớiCách phòng tránh: chặn key nguy hiểm, không deep-merge input mù quáng, dùng Object.create(null) hoặc Map, cập nhật thư viện merge lên bản an toàn.