CVE-2025-54539

9.8 CRITICAL

📋 TL;DR

A deserialization vulnerability in Apache ActiveMQ NMS AMQP Client allows malicious AMQP servers to execute arbitrary code on client systems when connecting to untrusted servers. This affects all versions up to 2.3.0, and the allow/deny list protection introduced in 2.1.0 can be bypassed. Any application using the vulnerable client library to connect to external AMQP servers is at risk.

💻 Affected Systems

Products:
  • Apache ActiveMQ NMS AMQP Client
Versions: All versions up to and including 2.3.0
Operating Systems: All platforms running .NET applications
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability triggers when client connects to untrusted AMQP servers. The 2.1.0 allow/deny list mechanism is bypassable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of client system with remote code execution, potentially leading to data theft, lateral movement, or ransomware deployment.

🟠

Likely Case

Attackers hosting malicious AMQP servers could compromise clients connecting to them, particularly in supply chain attacks or when clients connect to untrusted external services.

🟢

If Mitigated

If connecting only to trusted internal AMQP servers, risk is significantly reduced but not eliminated if internal servers are compromised.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires client to connect to malicious server. No public exploit code identified in references.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.4.0

Vendor Advisory: https://lists.apache.org/thread/9k684j07ljrshy3hxwhj5m0xjmkz1g2n

Restart Required: Yes

Instructions:

1. Upgrade to Apache ActiveMQ NMS AMQP Client version 2.4.0 or later. 2. Update all applications using the library. 3. Restart affected services. 4. Consider migrating away from .NET binary serialization long-term.

🔧 Temporary Workarounds

Restrict AMQP Server Connections

all

Configure applications to connect only to trusted, internal AMQP servers. Implement network segmentation to prevent connections to untrusted external servers.

Implement Application Allowlisting

all

Use allow/deny lists for deserialization types (available in 2.1.0+ but bypassable). Configure to allow only necessary types.

🧯 If You Can't Patch

  • Isolate vulnerable systems and restrict network access to trusted AMQP servers only
  • Monitor for suspicious outbound connections to unknown AMQP servers and implement strict egress filtering

🔍 How to Verify

Check if Vulnerable:

Check application dependencies for Apache.NMS.ActiveMQ version <= 2.3.0. Review code for AMQP client usage.

Check Version:

Check package manager (NuGet) or assembly version: System.Reflection.Assembly.LoadFile("Apache.NMS.ActiveMQ.dll").GetName().Version

Verify Fix Applied:

Verify installed version is 2.4.0 or later. Test that applications can still connect to required AMQP servers.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected deserialization errors
  • Connections to unknown AMQP endpoints
  • Unusual process execution following AMQP connections

Network Indicators:

  • Outbound connections to non-standard AMQP ports (5671, 5672)
  • Suspicious AMQP traffic patterns

SIEM Query:

source="application_logs" AND ("deserialization" OR "AMQP") AND (error OR exception)

🔗 References

📤 Share & Export