CVE-2023-46604

Apache ActiveMQ, Apache ActiveMQ Legacy OpenWire Module: Unbounded deserialization causes ActiveMQ to be vulnerable to a remote code execution (RCE) attack

Description

The Java OpenWire protocol marshaller is vulnerable to Remote Code Execution. This vulnerability may allow a remote attacker with network access to either a Java-based OpenWire broker or client to run arbitrary shell commands by manipulating serialized class types in the OpenWire protocol to cause either the client or the broker (respectively) to instantiate any class on the classpath. Users are recommended to upgrade both brokers and clients to version 5.15.16, 5.16.7, 5.17.6, or 5.18.3 which fixes this issue.

Response & Mitigation

Why act now?

Prioritisation rationale

CVE-2023-46604 scores CVSS 9.8 (AV:N/AC:L/PR:N/UI:N) — unauthenticated, network-reachable, zero interaction required — and sits at the 100th EPSS percentile, meaning virtually every scoring model considers exploitation near-certain. CISA has flagged it with known ransomware campaign use, indicating that ransomware operators are actively leveraging this vulnerability for initial access and lateral movement within victim environments. Organisations running internet-exposed ActiveMQ brokers or unpatched Atlassian Bamboo, Bitbucket, Confluence, or Crucible instances face the highest immediate risk, since those products ship ActiveMQ as an embedded component. For NIS2-scoped KRITIS organisations, patching or full network isolation of the broker must be treated as a mandatory emergency measure — a compromised message broker can serve as a pivot point across the entire middleware and integration layer.

Runbook · Step 1

Immediate response (0-24 h)

  • Apply the vendor patch immediately: Upgrade Apache ActiveMQ to 5.15.16, 5.16.7, 5.17.6, or 5.18.3 depending on your release branch. Both brokers and clients must be updated — both sides are exploitable.
  • Restrict the OpenWire port (TCP/61616) at the network boundary: Allow inbound connections only from authorised internal application servers; block all external and unverified sources at the perimeter firewall or security group.
  • Patch Atlassian products: Bamboo Data Center (LTS 12.1.10 / 10.2.22), Bitbucket Data Center (10.4.2 / LTS 10.2.6 / LTS 9.4.23), Confluence Data Center (LTS 10.2.15 / LTS 9.2.23), and Crucible (4.9.13) all bundle ActiveMQ internally — update to the listed target versions.
  • Isolate broker hosts: Until patching is complete, move ActiveMQ brokers into a dedicated VLAN or enforce host-based firewall rules that restrict inbound OpenWire connections to known source IPs only.
  • Hunt for post-exploitation artefacts: On broker hosts, look for unexpected child processes spawned by the ActiveMQ JVM (bash, sh, curl, wget, powershell) and for newly created files in temp directories or the ActiveMQ data directory.
  • Rotate credentials: Treat all passwords and API keys stored on systems with access to the ActiveMQ broker as potentially compromised and rotate them immediately.

Runbook · Step 2

Mitigation layers

  • Network segmentation: Ensure OpenWire (TCP/61616), AMQP (TCP/5672), STOMP (TCP/61613), MQTT (TCP/1883), and the web console (TCP/8161) are reachable only via strictly controlled internal network paths. No direct internet exposure to the broker.
  • Enable IPS/IDS signatures: Deploy Snort/Suricata rules for CVE-2023-46604 — publicly available signatures detect the abused ExceptionResponse packet carrying the ClassInfo type 0x1f in the OpenWire protocol header. Check and activate the relevant Emerging Threats (ET EXPLOIT) rule IDs.
  • Harden the Java classpath: Remove unnecessary classes and libraries from the ActiveMQ classpath. Review activemq.xml for unused transports and plugins and disable them.
  • Least-privilege service account: Run the ActiveMQ service under a dedicated, low-privilege account (not root or local administrator). Apply AppArmor or SELinux profiles to the broker process to limit what a successful exploit can reach.
  • Reverse-proxy the web console: Place an authenticating reverse proxy with an IP allowlist in front of the ActiveMQ web console (port 8161); remove any direct external exposure.
  • Temporarily isolate unpatched Atlassian instances: If Atlassian products cannot be patched immediately, restrict inbound connections to known internal sources and disable external access via reverse proxy until the patch is applied.

Runbook · Step 3

Detection rules

  • Process ancestry (EDR / Sysmon EID 1): Alert on child processes of activemq.jar/java.exe with image names such as cmd.exe, powershell.exe, bash, sh, curl, wget. KQL: DeviceProcessEvents | where InitiatingProcessCommandLine has "activemq" and FileName in ("cmd.exe","powershell.exe","bash","sh","curl","wget")
  • Network telemetry (Zeek / Suricata): Log and alert on inbound TCP connections to port 61616 from non-RFC-1918 addresses. Flag packets with an unusually short payload containing the byte sequence 0x1f in the OpenWire header as anomalous.
  • Filesystem activity (auditd / Sysmon EID 11): Alert on new executable files or scripts created in /tmp, /var/tmp, the ActiveMQ data directory, or %TEMP% by the java process. Auditd rule: -a always,exit -F arch=b64 -S execve -F ppid=$(pgrep activemq) -k activemq_rce
  • Web console access log: Monitor HTTP requests to port 8161 from unknown source IPs or unusual user agents. SPL: index=webserver dest_port=8161 | stats count by src_ip, http_user_agent | where count > 10
  • Sigma rule shape (process anomaly):
    title: ActiveMQ RCE Child Process (CVE-2023-46604)
    logsource: {category: process_creation, product: windows}
    detection:
      selection:
        ParentImage|endswith: 'java.exe'
        ParentCommandLine|contains: 'activemq'
        Image|endswith:
          - 'cmd.exe'
          - 'powershell.exe'
          - 'curl.exe'
      condition: selection
    

Metrics

Severity
critical
Actively exploited
actively exploited (KEV)
10.0
Source: cna-v3
100.0 %
Critical — this CVE ranks in the top fifth of all CVEs scored today (rank ≥ 80%).
99.7 %
High — model estimates ≥ 50% chance of real-world exploitation within 30 days.
Published
2025-12-03 14:35 UTC
CWE-502

Weakness classes (CWE)

  • CWE-502Base

    Deserialization of Untrusted Data

    The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

    cwe.mitre.org →

Affected operating systems

  • linux

    debian / debian_linux10.0

  • linux

    debian / debian_linux11.0

Affected products

Products and version ranges extracted from the vendor/CERT advisory. A range like „<4.14.6“ implies the update recommendation „upgrade to 4.14.6 or later“.

  • bitnami

    activemq5.16.0

  • bitnami

    activemq5.17.0

  • bitnami

    activemq5.18.0

Public exploit references

Public proof-of-concepts and detection templates for this vulnerability. Maturity ranges from reported PoCs through working detection scripts up to fully weaponized exploit modules. NEOSEC mirrors the code internally for forensic analysis; externally we only link to the original sources.

References & sources

IDCVE-2023-46604