CVE-2018-19362

9.8 CRITICAL

📋 TL;DR

This vulnerability in FasterXML jackson-databind allows remote code execution through polymorphic deserialization attacks targeting the jboss-common-core class. Attackers can exploit this to execute arbitrary code on affected systems. Any application using vulnerable versions of jackson-databind for JSON deserialization is potentially affected.

💻 Affected Systems

Products:
  • FasterXML jackson-databind
  • Applications using jackson-databind for JSON processing
Versions: 2.x before 2.9.8
Operating Systems: All operating systems running Java applications
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability exists when applications deserialize untrusted JSON data using jackson-databind with default polymorphic typing configurations.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete system compromise, data theft, and lateral movement within the network.

🟠

Likely Case

Remote code execution allowing attackers to run arbitrary commands with the privileges of the application process.

🟢

If Mitigated

Limited impact if proper input validation and deserialization controls are implemented, potentially reduced to denial of service.

🌐 Internet-Facing: HIGH - Exploitable remotely without authentication, affecting internet-facing applications directly.
🏢 Internal Only: MEDIUM - Still exploitable by internal attackers or through compromised internal systems.

🎯 Exploit Status

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

Exploitation requires the application to deserialize untrusted JSON data. Public proof-of-concept code exists demonstrating the vulnerability.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.9.8 or later

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

Restart Required: Yes

Instructions:

1. Update jackson-databind dependency to version 2.9.8 or later. 2. Update Maven/Gradle dependencies accordingly. 3. Rebuild and redeploy affected applications. 4. Restart application servers.

🔧 Temporary Workarounds

Disable polymorphic deserialization

all

Configure ObjectMapper to disable default typing and polymorphic deserialization features

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
mapper.enableDefaultTyping(DefaultTyping.NON_FINAL); // Avoid this

Input validation and filtering

all

Implement strict input validation and filter untrusted JSON data before deserialization

// Implement custom deserializers or filters
// Use @JsonTypeInfo with explicit type definitions only

🧯 If You Can't Patch

  • Implement network segmentation to isolate vulnerable applications from untrusted networks
  • Deploy web application firewalls (WAF) with JSON deserialization attack detection rules

🔍 How to Verify

Check if Vulnerable:

Check application dependencies for jackson-databind versions below 2.9.8. Review Maven pom.xml or Gradle build files.

Check Version:

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

Verify Fix Applied:

Verify jackson-databind version is 2.9.8 or higher in application dependencies and runtime classpath.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected deserialization errors
  • Stack traces containing jboss-common-core or related classes
  • Unusual process execution from application context

Network Indicators:

  • Malformed JSON payloads targeting deserialization endpoints
  • Unexpected outbound connections from application servers

SIEM Query:

source="application.logs" AND ("jboss-common-core" OR "deserialization error" OR "ObjectMapper")

🔗 References

📤 Share & Export