CVE-2026-49270

Information Exposure
Affects
ActiveMQ
in
Apache ActiveMQ
No items found.
Versions
<5.19.7, >=6.0.0 <6.2.6

Patch Available.

Exclamation circle icon
Patch Available

This Vulnerability has been fixed in the Never-Ending Support (NES) version offered by HeroDevs.

Overview

Apache ActiveMQ (ActiveMQ Classic) is an open-source message broker maintained by the Apache Software Foundation. It supports the OpenWire, STOMP, AMQP 1.0 and MQTT protocols, fully supports JMS 1.1 with partial support for JMS 2.0 and Jakarta Messaging 3.1, and can connect brokers together into networks of brokers. Its modules are published as Maven artifacts under org.apache.activemq.

An information exposure vulnerability (CVE-2026-49270) has been identified in the ActiveMQ broker's network connector durable subscription synchronization, which allows unauthenticated attackers to obtain a list of all durable topic subscriptions on the broker, including client identifiers, subscription names, topic destinations, and JMS selector expressions. The Apache advisory identifies brokers configured with a network connector that has syncDurableSubs set to true as affected.

Per OWASP: Access control enforces policy such that users cannot act outside of their intended permissions. Failures typically lead to unauthorized information disclosure, modification, or destruction of all data or performing a business function outside the user's limits.

This issue affects multiple versions of ActiveMQ, all versions before 5.19.7, and from 6.0.0 up to but not including 6.2.6.

Details

Module Info

Vulnerability Info

This Medium-severity vulnerability is found in the org.apache.activemq:activemq-broker package in multiple versions of ActiveMQ, and is also shipped in the activemq-all and apache-activemq distributions.

Brokers in a network of brokers exchange a BrokerInfo command when a connection is set up. When the broker receives a BrokerInfo that marks the connection as a network connection, TransportConnection.processBrokerInfo builds a NetworkBridgeConfiguration from the network properties carried in that BrokerInfo and, if syncDurableSubs is enabled in it and the peer advertises a recent enough OpenWire protocol version, immediately sends back a BrokerSubscriptionInfo command. That command carries the broker's durable topic subscriptions: client IDs, subscription names, destinations and selectors. The same logic runs for one-way and duplex network connections:

@Override
public Response processBrokerInfo(BrokerInfo info) {
    if (info.isSlaveBroker()) {
        LOG.error(" Slave Brokers are no longer supported - slave trying to attach is: {}", info.getBrokerName());
    } else if (info.isNetworkConnection() && !info.isDuplexConnection()) {
        try {
            NetworkBridgeConfiguration config = getNetworkConfiguration(info);
            if (config.isSyncDurableSubs() && protocolVersion.get() >= CommandTypes.PROTOCOL_VERSION_DURABLE_SYNC) {
                LOG.debug("SyncDurableSubs is enabled, Sending BrokerSubscriptionInfo");
                dispatchSync(NetworkBridgeUtils.getBrokerSubscriptionInfo(this.broker.getBrokerService(), config));
            }
        } catch (Exception e) {
            LOG.error("Failed to respond to network bridge creation from broker {}", info.getBrokerId(), e);
            return null;
        }
    } else if (info.isNetworkConnection() && info.isDuplexConnection()) {
        try {
            NetworkBridgeConfiguration config = getNetworkConfiguration(info);
            config.setBrokerName(broker.getBrokerName());

            if (config.isSyncDurableSubs() && protocolVersion.get() >= CommandTypes.PROTOCOL_VERSION_DURABLE_SYNC) {
                LOG.debug("SyncDurableSubs is enabled, Sending BrokerSubscriptionInfo");
                dispatchSync(NetworkBridgeUtils.getBrokerSubscriptionInfo(this.broker.getBrokerService(), config));
            }
            // ...

The broker authenticates a connection when it handles that connection's ConnectionInfo command, which passes the credentials through broker.addConnection() and the configured security plugins. processBrokerInfo does not check whether that has happened. It does not require a ConnectionInfo to have been accepted, and it does not check that the connection is registered. So a remote client that opens a transport connection and sends a crafted BrokerInfo before, or instead of, a valid ConnectionInfo receives the broker's durable subscription list without ever presenting credentials.

Mitigation

Only recent versions of ActiveMQ are community-supported. Older release lines are End-of-Life and will not receive public updates to address this issue. For more information see here.

Users of the affected components should apply one of the following mitigations:

  • Upgrade to a currently supported ActiveMQ release line (5.19.x or 6.3.x) that contains the fix.
  • Leverage a commercial support partner like HeroDevs for post-EOL security support.

Credits

  • Basel Khaled (finder)
Vulnerability Details
Severity
Level
CVSS Assessment
Low
>=0 <4
Medium
>=4 <6
High
>=6 <8
Critical
>=8 <10
Medium
ID
CVE-2026-49270
PROJECT Affected
ActiveMQ
Versions Affected
<5.19.7, >=6.0.0 <6.2.6
NES Versions Affected
Published date
October 8, 2026
≈ Fix date
October 13, 2026
Category
Information Exposure
Vex Document
Download VEXHow do I use it?
Sign up for the latest vulnerability alerts fixed in
NES for Apache ActiveMQ
Rss feed icon
Subscribe via RSS
or

By submitting the form I acknowledge receipt of our Privacy Policy.

Thanks for signing up for our Newsletter! We look forward to connecting with you.
Oops! Something went wrong while submitting the form.