CVE-2026-57215 Overview
CVE-2026-57215 is an authorization vulnerability in RabbitMQ, the widely deployed open-source messaging and streaming broker maintained by Broadcom. The flaw allows foreign bindings to amq.rabbitmq.reply-to destinations because volatile direct-reply-to queues can be accepted at bind and route time. When Khepri is used as the metadata store, these queues are missing from deletion checks, leaving persistent route entries after unbind. The issue affects RabbitMQ versions prior to 3.13.15, 4.0.20, 4.1.11, and 4.2.6. The vulnerability is classified under CWE-863: Incorrect Authorization.
Critical Impact
Authenticated attackers with low privileges can create persistent foreign bindings to Direct Reply-to queues, intercepting confidential reply messages intended for other clients across virtual hosts.
Affected Products
- Broadcom RabbitMQ Server versions prior to 3.13.15
- Broadcom RabbitMQ Server versions prior to 4.0.20, 4.1.11
- Broadcom RabbitMQ Server versions prior to 4.2.6
Discovery Timeline
- 2026-07-10 - CVE-2026-57215 published to NVD
- 2026-07-13 - Last updated in NVD database
Technical Details for CVE-2026-57215
Vulnerability Analysis
RabbitMQ implements a request/reply pattern using the amq.rabbitmq.reply-to pseudo-destination. Clients declare a volatile direct-reply-to queue to receive a single response without needing to create a durable queue. These queues are per-connection and short-lived by design.
The vulnerability stems from RabbitMQ accepting bind and route operations against these volatile queues from foreign connections. Under the Khepri metadata store backend, the deletion path fails to remove associated route entries. Persistent bindings remain in the routing topology even after the original client unbinds or disconnects. An authenticated attacker can then receive reply traffic destined for another client's reply-to queue, breaking the confidentiality boundary between messaging clients.
Root Cause
The root cause is missing authorization and lifecycle checks on volatile direct-reply-to queues. The rabbit_amqp_session and rabbit_channel modules did not verify whether a binding destination was a volatile queue before creating the binding. The Khepri-backed deletion logic did not account for volatile queue routes, allowing stale entries to persist.
Attack Vector
An attacker authenticated to RabbitMQ with low privileges submits a binding request that targets an amq.rabbitmq.reply-to.* destination belonging to another connection. The broker accepts the binding at bind time and continues to route matching messages to the attacker-controlled endpoint. Because unbind cleanup is incomplete on Khepri, the malicious route entry persists across normal broker operations.
// Patch from deps/rabbit/src/rabbit_amqp_session.erl
XNameBin = unicode:characters_to_binary(XNameList),
XName = exchange_resource(Vhost, XNameBin),
QName = queue_resource(Vhost, QNameBin),
- Binding = #binding{source = XName,
- destination = QName,
- key = RoutingKey},
- PermCache2 = check_resource_access(QName, write, User, PermCache1),
- PermCache = check_resource_access(XName, read, User, PermCache2),
- {ok, X} = rabbit_exchange:lookup(XName),
- TopicPermCache = check_read_permitted_on_topic(
- X, User, RoutingKey, TopicPermCache0),
- case rabbit_binding:add(Binding, Username) of
- ok ->
- {ok, QName, PermCache, TopicPermCache};
- {error, _} = Err ->
- Err
+ case rabbit_volatile_queue:is(QNameBin) of
+ true ->
+ {error, {volatile_queue_not_bindable, QNameBin}};
+ false ->
+ Binding = #binding{source = XName,
+ destination = QName,
+ key = RoutingKey},
+ PermCache2 = check_resource_access(QName, write, User, PermCache1),
+ PermCache = check_resource_access(XName, read, User, PermCache2),
+ {ok, X} = rabbit_exchange:lookup(XName),
+ TopicPermCache = check_read_permitted_on_topic(
+ X, User, RoutingKey, TopicPermCache0),
+ case rabbit_binding:add(Binding, Username) of
+ ok ->
// Source: https://github.com/rabbitmq/rabbitmq-server/commit/9055500d10ca7629dd2b051c6dc7a4b0bb8f6734
The patch adds an explicit rabbit_volatile_queue:is/1 check and returns volatile_queue_not_bindable when the destination is a direct-reply-to queue. A companion helper reject_volatile_queue_as_binding_target/2 raises an access_refused protocol error in rabbit_channel. See the GitHub Security Advisory GHSA-5cq3-v9jx-p3x3 for the coordinated disclosure record.
Detection Methods for CVE-2026-57215
Indicators of Compromise
- Binding declarations targeting destinations that match the amq.rabbitmq.reply-to.* pattern from connections that did not originate the reply-to queue.
- Unexpected route entries in Khepri metadata referencing volatile direct-reply-to queues after client disconnects.
- RabbitMQ audit logs showing queue.bind or AMQP 1.0 attach operations against reply-to destinations from unusual user accounts.
Detection Strategies
- Enable RabbitMQ management plugin logging and inspect binding operations for volatile queue names.
- Query the Khepri store for lingering bindings whose destination queue no longer has an active consumer or owning connection.
- Correlate authentication events with binding creation to identify low-privilege accounts issuing atypical bind operations.
Monitoring Recommendations
- Alert on any queue.bind operations where the destination begins with amq.rabbitmq.reply-to.
- Track binding table growth over time; a steady rise in bindings without corresponding consumers indicates the leak condition.
- Forward RabbitMQ logs and AMQP protocol telemetry to a centralized analytics platform for cross-tenant correlation.
How to Mitigate CVE-2026-57215
Immediate Actions Required
- Upgrade RabbitMQ to 3.13.15, 4.0.20, 4.1.11, or 4.2.6 depending on the deployed major version.
- Audit existing bindings and remove any that target amq.rabbitmq.reply-to destinations from unauthorized users.
- Review RabbitMQ user permissions and remove configure and write privileges from accounts that do not require them.
Patch Information
Broadcom released fixes in RabbitMQ 3.13.15, 4.0.20, 4.1.11, and 4.2.6. The relevant commits are 9055500d and c84f3c88, merged through PR #15935 and PR #15938. Release artifacts are available in the v4.2.6 release notes.
Workarounds
- Restrict RabbitMQ authentication to trusted service accounts and enforce per-vhost isolation until patching is complete.
- Disable exposure of the RabbitMQ AMQP listener to untrusted networks using firewall rules or network policies.
- Rotate credentials for any accounts suspected of being used to create foreign bindings against reply-to destinations.
# Upgrade RabbitMQ on Debian/Ubuntu to a patched release
sudo apt-get update
sudo apt-get install --only-upgrade rabbitmq-server=4.2.6-1
sudo systemctl restart rabbitmq-server
# Verify the running version matches a patched release
sudo rabbitmqctl version
# Audit bindings for reply-to destinations
sudo rabbitmqctl list_bindings source_name destination_name routing_key | grep 'amq.rabbitmq.reply-to'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

