CVE-2020-24616

8.1 HIGH

📋 TL;DR

This is a deserialization vulnerability in FasterXML jackson-databind that allows remote code execution when processing untrusted JSON data. It affects applications using jackson-databind 2.x before 2.9.10.6 with default polymorphic typing enabled and the Anteros-DBCP library in classpath.

💻 Affected Systems

Products:
  • FasterXML jackson-databind
  • Applications using jackson-databind with Anteros-DBCP
Versions: 2.x before 2.9.10.6
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires polymorphic typing enabled (defaultObjectMapper.enableDefaultTyping() or similar) and Anteros-DBCP library in classpath.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution with the privileges of the application, potentially leading to complete system compromise.

🟠

Likely Case

Remote code execution allowing attackers to execute arbitrary commands on the server.

🟢

If Mitigated

No impact if polymorphic typing is disabled or untrusted data is not processed.

🌐 Internet-Facing: HIGH - Internet-facing applications processing JSON from untrusted sources are highly vulnerable.
🏢 Internal Only: MEDIUM - Internal applications could still be exploited through compromised internal systems or malicious insiders.

🎯 Exploit Status

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

Exploitation is straightforward when conditions are met. Multiple public PoCs exist demonstrating RCE.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.9.10.6 or later

Vendor Advisory: https://github.com/FasterXML/jackson-databind/issues/2814

Restart Required: Yes

Instructions:

1. Update jackson-databind to version 2.9.10.6 or later. 2. Update dependencies in your build system (Maven, Gradle, etc.). 3. Rebuild and redeploy your application. 4. Restart affected services.

🔧 Temporary Workarounds

Disable polymorphic typing

all

Disable default typing features if not required for your application.

ObjectMapper mapper = new ObjectMapper(); // Do NOT call enableDefaultTyping()

Block Anteros-DBCP class

all

Add AnterosDBCPDataSource to the default deny list in jackson-databind.

System.setProperty("com.fasterxml.jackson.databind.type.mapping", "br.com.anteros.dbcp.AnterosDBCPDataSource")

🧯 If You Can't Patch

  • Disable polymorphic typing in ObjectMapper configuration
  • Implement input validation and sanitization for all JSON inputs

🔍 How to Verify

Check if Vulnerable:

Check your project's dependency tree for jackson-databind versions before 2.9.10.6 and presence of Anteros-DBCP library.

Check Version:

mvn dependency:tree | grep jackson-databind OR gradle dependencies | grep jackson-databind

Verify Fix Applied:

Verify jackson-databind version is 2.9.10.6 or later in your dependencies and no vulnerable configurations exist.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected deserialization errors
  • ClassNotFoundExceptions for AnterosDBCPDataSource
  • Unusual process spawning

Network Indicators:

  • Malformed JSON payloads containing serialized gadget chains
  • Unexpected outbound connections from application

SIEM Query:

source="application.logs" AND ("AnterosDBCPDataSource" OR "jackson.databind" AND error)

🔗 References

📤 Share & Export