CVE-2020-11998

9.8 CRITICAL

📋 TL;DR

This vulnerability in Apache ActiveMQ allows remote attackers to execute arbitrary code by exploiting a JMX re-bind regression. Attackers can bypass authentication and use MLet MBeans to load malicious code from arbitrary URLs. All ActiveMQ installations with JMX enabled are affected.

💻 Affected Systems

Products:
  • Apache ActiveMQ
Versions: Versions prior to 5.15.13
Operating Systems: All operating systems running Java
Default Config Vulnerable: ⚠️ Yes
Notes: Requires JMX to be enabled (default in many 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 install malware, create backdoors, or disrupt messaging services.

🟢

If Mitigated

Limited impact if JMX is disabled or properly secured with authentication and network restrictions.

🌐 Internet-Facing: HIGH - Internet-facing ActiveMQ instances are directly exploitable without authentication.
🏢 Internal Only: HIGH - Internal instances remain vulnerable to attackers who gain network access.

🎯 Exploit Status

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

Exploitation is straightforward once network access to JMX port is obtained.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Apache ActiveMQ 5.15.13

Vendor Advisory: http://activemq.apache.org/security-advisories.data/CVE-2020-11998-announcement.txt

Restart Required: Yes

Instructions:

1. Download ActiveMQ 5.15.13 or later from Apache website. 2. Stop the ActiveMQ service. 3. Backup configuration files. 4. Replace the installation with the new version. 5. Restore configurations. 6. Start the service.

🔧 Temporary Workarounds

Disable JMX

all

Disable JMX management interface to prevent exploitation.

Edit activemq.xml and set useJmx="false" in the broker configuration

Restrict JMX Network Access

linux

Use firewall rules to restrict access to JMX port (default 1099).

iptables -A INPUT -p tcp --dport 1099 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 1099 -j DROP

🧯 If You Can't Patch

  • Disable JMX entirely in ActiveMQ configuration
  • Implement strict network segmentation and firewall rules to block all external access to JMX port

🔍 How to Verify

Check if Vulnerable:

Check ActiveMQ version: grep 'ActiveMQ' activemq.log or check web console. If version is below 5.15.13 and JMX is enabled, system is vulnerable.

Check Version:

java -jar activemq.jar version or check web console at http://localhost:8161

Verify Fix Applied:

Verify version is 5.15.13 or higher and test JMX connectivity is properly secured.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized JMX connection attempts
  • MLet MBean creation in JMX logs
  • Unexpected Java class loading from external URLs

Network Indicators:

  • Unusual traffic to JMX port (default 1099) from unauthorized sources
  • Outbound connections to suspicious URLs initiated by ActiveMQ process

SIEM Query:

source="activemq.log" AND ("JMX" OR "MLet" OR "unauthorized connection")

🔗 References

📤 Share & Export