CVE-2024-14020

5.0 MEDIUM

📋 TL;DR

This CVE describes a prototype pollution vulnerability in carboneio carbone's Formatter Handler component. Attackers can remotely modify object prototype attributes, potentially leading to code execution or data manipulation. Only NodeJS applications using vulnerable carbone versions are affected.

💻 Affected Systems

Products:
  • carboneio carbone
Versions: All versions up to fbcd349077ad0e8748be73eab2a82ea92b6f8a7e (pre-3.5.6)
Operating Systems: Any OS running NodeJS
Default Config Vulnerable: ⚠️ Yes
Notes: Exploitation requires the parent NodeJS application to have the same security issue; carbone alone may not be sufficient for full compromise.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise if combined with other vulnerabilities in the parent NodeJS application.

🟠

Likely Case

Data manipulation, denial of service, or privilege escalation within the carbone application context.

🟢

If Mitigated

Limited impact to carbone functionality with no escalation to underlying system.

🌐 Internet-Facing: MEDIUM - Attack can be launched remotely but requires high complexity and specific conditions.
🏢 Internal Only: MEDIUM - Same exploitation requirements apply regardless of network exposure.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: HIGH

Attack characterized as high complexity and difficult exploitability; requires specific conditions in parent application.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.5.6

Vendor Advisory: https://github.com/carboneio/carbone/releases/tag/3.5.6

Restart Required: Yes

Instructions:

1. Update package.json to require carbone version 3.5.6 or higher. 2. Run 'npm update carbone' or 'yarn upgrade carbone'. 3. Restart your NodeJS application.

🔧 Temporary Workarounds

Input validation and sanitization

all

Implement strict input validation for all data passed to carbone formatter functions

Object.freeze on prototypes

all

Use Object.freeze() to prevent modification of Object.prototype and other base prototypes

Object.freeze(Object.prototype);
Object.freeze(Array.prototype);

🧯 If You Can't Patch

  • Isolate carbone to separate network segment with strict egress filtering
  • Implement web application firewall rules to detect and block prototype pollution patterns

🔍 How to Verify

Check if Vulnerable:

Check package.json for carbone dependency version below 3.5.6 or examine node_modules/carbone/package.json

Check Version:

npm list carbone | grep carbone

Verify Fix Applied:

Confirm carbone version is 3.5.6 or higher in package.json and verify commit 04f9feb24bfca23567706392f9ad2c53bbe4134e is present

📡 Detection & Monitoring

Log Indicators:

  • Unusual carbone formatter errors
  • Unexpected object property modifications
  • Prototype-related JavaScript errors

Network Indicators:

  • Unusual HTTP requests to carbone endpoints with nested object patterns

SIEM Query:

source="application.log" AND ("carbone" AND ("prototype" OR "__proto__" OR "constructor"))

🔗 References

📤 Share & Export