CVE-2020-11972

9.8 CRITICAL

📋 TL;DR

Apache Camel RabbitMQ component has insecure default configuration that enables Java deserialization, allowing remote code execution. This affects Apache Camel versions 2.22.x through 2.25.0 and 3.0.0 through 3.1.0. Attackers can exploit this to execute arbitrary code on affected systems.

💻 Affected Systems

Products:
  • Apache Camel
Versions: 2.22.x, 2.23.x, 2.24.x, 2.25.0, 3.0.0 up to 3.1.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems using the RabbitMQ component. The vulnerability exists in the default configuration that enables Java deserialization.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote unauthenticated attacker gains full control of the system, leading to data theft, ransomware deployment, or complete system compromise.

🟠

Likely Case

Remote code execution leading to application compromise, data exfiltration, and lateral movement within the network.

🟢

If Mitigated

If proper network segmentation and access controls are in place, impact may be limited to the specific application instance.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploitation requires sending malicious serialized objects to the RabbitMQ endpoint. Public proof-of-concept code exists.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.25.1 for 2.x, 3.2.0 for 3.x

Vendor Advisory: https://camel.apache.org/security/CVE-2020-11972.html

Restart Required: Yes

Instructions:

1. Identify Apache Camel version. 2. For 2.x: Upgrade to 2.25.1 or later. 3. For 3.x: Upgrade to 3.2.0 or later. 4. Restart the application.

🔧 Temporary Workarounds

Disable Java deserialization in RabbitMQ component

all

Configure the RabbitMQ component to disable Java object deserialization

Set 'allowSerializedHeaders' to false in RabbitMQ component configuration

Network segmentation

all

Restrict network access to RabbitMQ endpoints

Configure firewall rules to limit access to RabbitMQ ports (default 5672, 5671)

🧯 If You Can't Patch

  • Implement strict network access controls to limit exposure of RabbitMQ endpoints
  • Monitor for suspicious deserialization attempts and Java process spawning

🔍 How to Verify

Check if Vulnerable:

Check Apache Camel version and RabbitMQ component configuration. If using affected versions and RabbitMQ component with default settings, system is vulnerable.

Check Version:

Check application logs or configuration files for Apache Camel version. For Maven projects: mvn dependency:tree | grep camel-core

Verify Fix Applied:

Verify Apache Camel version is 2.25.1+ (2.x) or 3.2.0+ (3.x) and RabbitMQ component has 'allowSerializedHeaders' set to false.

📡 Detection & Monitoring

Log Indicators:

  • Java deserialization errors
  • Unexpected Java class loading
  • Suspicious process spawning from Camel application

Network Indicators:

  • Unusual traffic to RabbitMQ ports (5672, 5671)
  • Malformed serialized objects in network traffic

SIEM Query:

source="camel.logs" AND ("deserialization" OR "ClassNotFoundException" OR "InvalidClassException")

🔗 References

📤 Share & Export