CVE-2019-10744

9.1 CRITICAL

📋 TL;DR

CVE-2019-10744 is a prototype pollution vulnerability in lodash versions below 4.17.12. Attackers can manipulate the defaultsDeep function to modify Object.prototype, potentially leading to denial of service, remote code execution, or privilege escalation. This affects any application using vulnerable lodash versions, particularly Node.js applications and web applications with lodash dependencies.

💻 Affected Systems

Products:
  • lodash
  • Node.js applications using lodash
  • Web applications with lodash dependencies
Versions: All versions below 4.17.12
Operating Systems: All platforms running affected software
Default Config Vulnerable: ⚠️ Yes
Notes: Any application importing and using lodash's defaultsDeep function is vulnerable by default.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data exfiltration, or persistent backdoor installation.

🟠

Likely Case

Denial of service, application crashes, or privilege escalation within the application context.

🟢

If Mitigated

Limited impact with proper input validation, sandboxing, and security controls in place.

🌐 Internet-Facing: HIGH - Web applications using lodash are directly exposed to crafted payloads.
🏢 Internal Only: MEDIUM - Internal applications are still vulnerable but have reduced attack surface.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Public proof-of-concept code exists and exploitation requires minimal technical skill.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.17.12 and later

Vendor Advisory: https://snyk.io/vuln/SNYK-JS-LODASH-450202

Restart Required: Yes

Instructions:

1. Update lodash to version 4.17.12 or higher using npm update lodash. 2. Restart all affected applications. 3. Verify no dependencies are pulling in older versions.

🔧 Temporary Workarounds

Input validation and sanitization

all

Implement strict input validation to reject malicious payloads before they reach defaultsDeep function.

Object.freeze on Object.prototype

all

Prevent prototype pollution by freezing Object.prototype (may break legitimate functionality).

Object.freeze(Object.prototype)

🧯 If You Can't Patch

  • Implement Web Application Firewall (WAF) rules to block prototype pollution payloads.
  • Isolate affected applications in containers or VMs with strict network segmentation.

🔍 How to Verify

Check if Vulnerable:

Check package.json or run npm list lodash to see installed version.

Check Version:

npm list lodash | grep lodash

Verify Fix Applied:

Confirm lodash version is 4.17.12 or higher and test application functionality.

📡 Detection & Monitoring

Log Indicators:

  • Unusual application crashes
  • Unexpected property modifications in logs
  • Suspicious input patterns

Network Indicators:

  • HTTP requests with crafted JSON payloads targeting lodash endpoints

SIEM Query:

source="application.log" AND "defaultsDeep" AND ("crash" OR "error")

🔗 References

📤 Share & Export