CVE-2020-28268
📋 TL;DR
This CVE describes a prototype pollution vulnerability in the 'controlled-merge' npm package versions 1.0.0 through 1.2.0. Attackers can manipulate object prototypes to cause denial of service or potentially achieve remote code execution. Anyone using affected versions of this package in their Node.js applications is vulnerable.
💻 Affected Systems
- controlled-merge npm package
📦 What is this software?
Controlled Merge by Controlled Merge Project
⚠️ Risk & Real-World Impact
Worst Case
Remote code execution allowing complete system compromise and data exfiltration.
Likely Case
Denial of service through application crashes or resource exhaustion.
If Mitigated
Limited impact with proper input validation and sandboxing in place.
🎯 Exploit Status
Prototype pollution vulnerabilities are well-understood and relatively easy to exploit with available proof-of-concepts.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.2.1 and later
Vendor Advisory: https://github.com/hlfshell/controlled-merge/commit/5a4b2e9ffe5a0be7f8843d4ab038599d3ae5f9d4
Restart Required: Yes
Instructions:
1. Update package.json to require 'controlled-merge' version '^1.2.1'. 2. Run 'npm update controlled-merge'. 3. Restart your Node.js application.
🔧 Temporary Workarounds
Input validation and sanitization
allImplement strict input validation to reject objects with prototype pollution patterns.
Use Object.create(null)
allCreate objects without prototype inheritance where possible to prevent pollution.
🧯 If You Can't Patch
- Implement strict input validation and sanitization for all user-controlled objects
- Isolate the vulnerable component in a sandboxed environment with limited permissions
🔍 How to Verify
Check if Vulnerable:
Check package.json or run 'npm list controlled-merge' to see installed version.
Check Version:
npm list controlled-merge
Verify Fix Applied:
Verify version is 1.2.1 or higher with 'npm list controlled-merge' and test with known exploit payloads.
📡 Detection & Monitoring
Log Indicators:
- Application crashes, unexpected object property modifications, memory exhaustion
Network Indicators:
- Unusual HTTP requests with nested object payloads
SIEM Query:
source="application.log" AND ("prototype" OR "__proto__") AND ("controlled-merge" OR "merge")
🔗 References
- https://github.com/hlfshell/controlled-merge/commit/5a4b2e9ffe5a0be7f8843d4ab038599d3ae5f9d4
- https://www.whitesourcesoftware.com/vulnerability-database/CVE-2020-28268
- https://github.com/hlfshell/controlled-merge/commit/5a4b2e9ffe5a0be7f8843d4ab038599d3ae5f9d4
- https://www.whitesourcesoftware.com/vulnerability-database/CVE-2020-28268