VersionDrift
Product

RabbitMQ 4.2.7 → 4.4.0

11 releases · 9 breaking changes · 63 security fixes · 33 advisories fixed

63security9breaking5deprecated154feature165fix

Vulnerabilities fixed by this upgrade

  • 4.9 GHSA-j6hc-926v-qwq2 RabbitMQ STOMP consumers retain OAuth queue access after JWT expiration
  • 2.3 GHSA-6jvc-jx8w-m757 RabbitMQ Stream Publisher Management API Discloses Unauthorized Vhost and Stream Existence
  • 2.3 GHSA-342v-cj47-c9g8 Cross-vhost Stream consumer virtual-host existence disclosure
  • 4.5 CVE-2026-67421 Stored HTML Injection in RabbitMQ Management OAuth Error Handling
  • 6.0 GHSA-6gmw-wxch-cvvc Shovel URI credentials disclosed to read-only monitoring users via the shovel management HTTP API
  • 2.3 GHSA-27gv-h5q6-cpwg RabbitMQ policymaker RCE through federation-management nonmember RPC and distribution reflection
  • 5.9 GHSA-3526-xvv4-q9mr RabbitMQ administrator RCE through reflected Erlang distribution authentication
  • 6.3 GHSA-6xpg-rfmh-grhq STOMP pre-authentication frame size limit is not enforced
  • 2.3 GHSA-pj8f-mw2q-3xjj RabbitMQ consistent-hash exchange: empty array crashes DLX queue processes
  • 2.3 GHSA-4826-gphh-vw3x MQTT 5.0: Receive Maximum zero disables delivery credit
  • 6.0 GHSA-6chv-gv3h-cvcj RabbitMQ direct reply-to: forged suffix fanout causes quadratic mailbox memory
  • 8.2 GHSA-cfqc-c682-93mm RabbitMQ Web STOMP: compressed pre-authentication messages exhaust broker memory
  • 2.3 CVE-2026-67418 MQTT 5.0: inapplicable PUBLISH property disconnects matching subscribers
  • 2.3 CVE-2026-67420 RabbitMQ OAuth credential refresh retains revoked runtime tags
  • 5.3 CVE-2026-67416 AMQP 1.0 symbolic body descriptor prefix collisions bypass validation
  • 6.0 CVE-2026-67414 RabbitMQ AMQP 1.0 parser: amplification memory-exhaustion DoS via zero-width array aggregation
  • 5.9 CVE-2026-67415 Shovel Management Atom Exhaustion Allows Persistent Broker-Wide Denial of Service
  • 7.1 CVE-2026-67408 Stream Management Super-Stream Binding Keys Allocation Allows Low-Privilege Node Denial of Service
  • 8.2 CVE-2026-67409 JWKS Fetch Ignores HTTP Response Status Code - Signing Key Destruction Causes Authentication DoS (CWE-252)
  • 6.3 CVE-2026-61837 AMQP 1.0 management `GET /bindings` exposes full binding topology to any authenticated AMQP user without resource/management permission checks
  • 6.0 CVE-2026-67413 Authenticated RabbitMQ JMS Topic Selector Users Can Consume Broker CPU with an Unbounded LIKE Regular Expression
  • 6.0 CVE-2026-67412 Federation upstream in RabbitMQ skips vhost authorization allowing cross-vhost message access
  • 8.2 CVE-2026-67410 OAuth2 Client Secret Exposed via Unauthenticated JavaScript Endpoint (CWE-200)
  • 4.6 CVE-2026-67406 Shovel does not format state logged by the crash reporter and can leave unencrypted credentials in a crash dump file
  • 5.1 CVE-2026-67407 Incomplete fix for CVE-2026-44838: `escape_regex_char/1` does not escape `-`, leaving room for an MQTT topic permission bypass
  • 6.0 CVE-2026-67411 (Web) MQTT with PROXY Protocol enabled: a loopback-only user permission bypass
  • high CVE-2026-67239 Stored XSS via TLS peer-certificate DN in stream-management UI (sibling of V-11)
  • medium CVE-2026-67242 OAuth2 is_integer(Exp) guard skips token-expiry checks for float exp
  • medium CVE-2026-67223 LDAP DN injection via unescaped substitution
  • medium CVE-2026-67241 AMQP 1.0 management exchange.declare skips alternate-exchange permission check
  • high CVE-2026-67237 Reflected XSS via the OAuth bootstrap JS endpoint
  • low CVE-2026-67234 Non-RFC-conformant cookie name when clearing the auth-mechanism preference
  • high CVE-2026-67236 Plaintext username:password stored in an insecure cookie after successful POST /login

Breaking changes

  • breaking The following AMQP 0-9-1 headers are no longer parsed: x-amqp-1.0-properties x-amqp-1.0-app-properties x-amqp-1.0-message-annotations x-amqp-1.0-footer RabbitMQ 3.13 and earlier used them to carry the AMQP 1.0 sections of a message received over AMQP 1.0. Nothing has written them since 4.0, so… in 4.4.0
  • breaking Likewise, the x-basic-delivery-mode, x-basic-priority and x-basic-expiration message annotations are no longer parsed. They were written before 4.0 when an AMQP 0-9-1 message was encoded as AMQP 1.0 for a stream, so only a stream entry written by a 3.13 or earlier node carries them, and reading it… in 4.4.0
  • breaking OpenID Connect discovery responses are now validated more strictly. A deployment whose identity provider serves non-HTTPS (http://) endpoints, or whose issuer claim does not match the discovery endpoint used to retrieve it, will fail discovery validation after the upgrade. This is known to affect… in 4.4.0
  • breaking GET /api/auth/hash_password/{password} was replaced with another endpoint, POST /api/auth/hash_password. The new endpoint consumes a POST body with JSON document with one key {"password": "..."} in 4.4.0
  • breaking cluster_partition_handling in 4.3.0
  • breaking cluster_partition_handling.pause_if_all_down.recover in 4.3.0
  • breaking cluster_partition_handling.pause_if_all_down.nodes.$name in 4.3.0
  • breaking x-queue-mode set to any value in 4.3.0
  • breaking x-queue-version set to 1 in 4.3.0

Security changes

  • security Fixes GHSA-j6hc-926v-qwq2: RabbitMQ STOMP consumers retain OAuth queue access after JWT expiration in 4.3.6
  • security Fixes GHSA-6jvc-jx8w-m757: RabbitMQ Stream Publisher Management API Discloses Unauthorized Vhost and Stream Existence in 4.3.6
  • security Fixes GHSA-342v-cj47-c9g8: Cross-vhost Stream consumer virtual-host existence disclosure in 4.3.6
  • security Fixes GHSA-cfqc-c682-93mm: RabbitMQ Web STOMP: compressed pre-authentication messages exhaust broker memory in 4.3.5
  • security Fixes CVE-2026-67419: Consecutive topic wildcards cause combinatorial routing work in 4.3.5
  • security Fixes GHSA-6xpg-rfmh-grhq: STOMP pre-authentication frame size limit is not enforced in 4.3.5
  • security Fixes GHSA-5jgm-jxp7-gwjh: MQTT retained message store has no size or count limit and is never reclaimed in 4.3.5
  • security Fixes GHSA-6gmw-wxch-cvvc: Shovel URI credentials disclosed to read-only monitoring users via the shovel management HTTP API in 4.3.5
  • security Fixes GHSA-6chv-gv3h-cvcj: RabbitMQ direct reply-to: forged suffix fanout causes quadratic mailbox memory in 4.3.5
  • security Fixes GHSA-3526-xvv4-q9mr: RabbitMQ administrator RCE through reflected Erlang distribution authentication in 4.3.5
  • security Fixes GHSA-6588-rqcr-59pw: AMQP 1.0 post-body properties bypass user-ID validation and reach consumers in 4.3.5
  • security Fixes CVE-2026-67421: Stored HTML Injection in RabbitMQ Management OAuth Error Handling in 4.3.5
  • security Fixes GHSA-27gv-h5q6-cpwg: RabbitMQ policymaker RCE through federation-management nonmember RPC and distribution reflection in 4.3.5
  • security Fixes GHSA-pj8f-mw2q-3xjj: RabbitMQ consistent-hash exchange: empty array crashes DLX queue processes in 4.3.5
  • security Fixes GHSA-4826-gphh-vw3x: MQTT 5.0: Receive Maximum zero disables delivery credit in 4.3.5
  • security Fixes CVE-2026-67418: MQTT 5.0: inapplicable PUBLISH property disconnects matching subscribers in 4.3.5
  • security Fixes CVE-2026-67420: RabbitMQ OAuth credential refresh retains revoked runtime tags in 4.3.5
  • security Fixes CVE-2026-67414: RabbitMQ AMQP 1.0 parser: amplification memory-exhaustion DoS via zero-width array aggregation in 4.3.4
  • security Fixes CVE-2026-67416: AMQP 1.0 symbolic body descriptor prefix collisions bypass validation in 4.3.4
  • security Fixes CVE-2026-67409: JWKS Fetch Ignores HTTP Response Status Code - Signing Key Destruction Causes Authentication DoS (CWE-252) in 4.3.3
  • security Fixes CVE-2026-67410: OAuth2 Client Secret Exposed via Unauthenticated JavaScript Endpoint (CWE-200) in 4.3.3
  • security Fixes CVE-2026-67408: Stream Management Super-Stream Binding Keys Allocation Allows Low-Privilege Node Denial of Service in 4.3.3
  • security Fixes CVE-2026-61837: AMQP 1.0 management `GET /bindings` exposes full binding topology to any authenticated AMQP user without resource/management permission checks in 4.3.3
  • security Fixes CVE-2026-67413: Authenticated RabbitMQ JMS Topic Selector Users Can Consume Broker CPU with an Unbounded LIKE Regular Expression in 4.3.3
  • security Fixes CVE-2026-67412: Federation upstream in RabbitMQ skips vhost authorization allowing cross-vhost message access in 4.3.3
  • security Fixes CVE-2026-67411: (Web) MQTT with PROXY Protocol enabled: a loopback-only user permission bypass in 4.3.3
  • security Fixes CVE-2026-67415: Shovel Management Atom Exhaustion Allows Persistent Broker-Wide Denial of Service in 4.3.3
  • security Fixes CVE-2026-67407: Incomplete fix for CVE-2026-44838: `escape_regex_char/1` does not escape `-`, leaving room for an MQTT topic permission bypass in 4.3.3
  • security Fixes CVE-2026-67406: Shovel does not format state logged by the crash reporter and can leave unencrypted credentials in a crash dump file in 4.3.3
  • security Fixes CVE-2026-67239: Stored XSS via TLS peer-certificate DN in stream-management UI (sibling of V-11) in 4.3.3
  • security Fixes CVE-2026-67242: OAuth2 is_integer(Exp) guard skips token-expiry checks for float exp in 4.3.3
  • security Fixes CVE-2026-67223: LDAP DN injection via unescaped substitution in 4.3.3
  • security Fixes CVE-2026-67241: AMQP 1.0 management exchange.declare skips alternate-exchange permission check in 4.3.3
  • security Fixes CVE-2026-67237: Reflected XSS via the OAuth bootstrap JS endpoint in 4.3.2
  • security Fixes CVE-2026-67234: Non-RFC-conformant cookie name when clearing the auth-mechanism preference in 4.3.2
  • security Fixes CVE-2026-67236: Plaintext username:password stored in an insecure cookie after successful POST /login in 4.3.2
  • security Fixes CVE-2026-67240: ReDoS via AMQP 1.0 SQL filter LIKE wildcard in 4.3.1
  • security Fixes CVE-2026-67227: Atom exhaustion: to_atom on global-parameter :name in 4.3.1
  • security Fixes CVE-2026-66072: Atom table exhaustion via stream `chunk_selector` in 4.3.1
  • security Fixes CVE-2026-67233: Monitoring-tag user can DELETE shovels in 4.3.1
  • security Fixes CVE-2026-66075: Monitoring-tag user can restart federation links in 4.3.1
  • security Fixes CVE-2026-67224: Admin path-traversal write via trace name in 4.3.1
  • security Fixes CVE-2026-67228: Atom exhaustion: to_atom on runtime-parameter component in 4.3.1
  • security Fixes CVE-2026-66071: Atom exhaustion: OAuth2 JWT tag: scope values in 4.3.1
  • security Fixes CVE-2026-67238: Atom-table exhaustion via reply-to queue name decoding in 4.3.1
  • security Fixes CVE-2026-66067: Stream protocol skips per vhost per user connection limits in 4.3.1
  • security Fixes CVE-2026-67409: JWKS Fetch Ignores HTTP Response Status Code - Signing Key Destruction Causes Authentication DoS (CWE-252) in 4.2.9
  • security Fixes CVE-2026-67410: OAuth2 Client Secret Exposed via Unauthenticated JavaScript Endpoint (CWE-200) in 4.2.9
  • security Fixes CVE-2026-67408: Stream Management Super-Stream Binding Keys Allocation Allows Low-Privilege Node Denial of Service in 4.2.9
  • security Fixes CVE-2026-61837: AMQP 1.0 management `GET /bindings` exposes full binding topology to any authenticated AMQP user without resource/management permission checks in 4.2.9
  • security Fixes CVE-2026-67413: Authenticated RabbitMQ JMS Topic Selector Users Can Consume Broker CPU with an Unbounded LIKE Regular Expression in 4.2.9
  • security Fixes CVE-2026-67412: Federation upstream in RabbitMQ skips vhost authorization allowing cross-vhost message access in 4.2.9
  • security Fixes CVE-2026-67411: (Web) MQTT with PROXY Protocol enabled: a loopback-only user permission bypass in 4.2.9
  • security Fixes CVE-2026-67415: Shovel Management Atom Exhaustion Allows Persistent Broker-Wide Denial of Service in 4.2.9
  • security Fixes CVE-2026-67407: Incomplete fix for CVE-2026-44838: `escape_regex_char/1` does not escape `-`, leaving room for an MQTT topic permission bypass in 4.2.9
  • security Fixes CVE-2026-67406: Shovel does not format state logged by the crash reporter and can leave unencrypted credentials in a crash dump file in 4.2.9
  • security Fixes CVE-2026-67239: Stored XSS via TLS peer-certificate DN in stream-management UI (sibling of V-11) in 4.2.9
  • security Fixes CVE-2026-67242: OAuth2 is_integer(Exp) guard skips token-expiry checks for float exp in 4.2.9
  • security Fixes CVE-2026-67223: LDAP DN injection via unescaped substitution in 4.2.9
  • security Fixes CVE-2026-67241: AMQP 1.0 management exchange.declare skips alternate-exchange permission check in 4.2.9
  • security Fixes CVE-2026-67237: Reflected XSS via the OAuth bootstrap JS endpoint in 4.2.8
  • security Fixes CVE-2026-67234: Non-RFC-conformant cookie name when clearing the auth-mechanism preference in 4.2.8
  • security Fixes CVE-2026-67236: Plaintext username:password stored in an insecure cookie after successful POST /login in 4.2.8

Deprecations

  • deprecated amqp_address_v1 in 4.3.0
  • deprecated amqp_filter_set_bug in 4.3.0
  • deprecated global_qos in 4.3.0
  • deprecated queue_master_locator in 4.3.0
  • deprecated transient_nonexcl_queues in 4.3.0

Every release in between

breakingThe following AMQP 0-9-1 headers are no longer parsed: x-amqp-1.0-properties x-amqp-1.0-app-properties x-amqp-1.0-message-annotations x-amqp-1.0-footer RabbitMQ 3.13 and earlier used them to carry the AMQP 1.0 sections of a message received over AMQP 1.0. Nothing has written them since 4.0, so…
breakingLikewise, the x-basic-delivery-mode, x-basic-priority and x-basic-expiration message annotations are no longer parsed. They were written before 4.0 when an AMQP 0-9-1 message was encoded as AMQP 1.0 for a stream, so only a stream entry written by a 3.13 or earlier node carries them, and reading it…
breakingOpenID Connect discovery responses are now validated more strictly. A deployment whose identity provider serves non-HTTPS (http://) endpoints, or whose issuer claim does not match the discovery endpoint used to retrieve it, will fail discovery validation after the upgrade. This is known to affect…
breakingGET /api/auth/hash_password/{password} was replaced with another endpoint, POST /api/auth/hash_password. The new endpoint consumes a POST body with JSON document with one key {"password": "..."}
featureThis version fully supports Erlang 28 and 29 series for both new clusters and rolling upgrade scenarios, assuming that . Important: in cases where RabbitMQ is upgraded to 4.4.0 and Erlang is upgraded to 28+ at the same time, we highly recommend first upgrading to 4.3.7 or a later patch, a 4.3…
featureQuorum queues now support delayed messages. A message with an x-opt-delivery-time annotation or header set to a future time, in milliseconds since the Unix epoch, is routed and enqueued immediately but only delivered to consumers once that time is reached. AMQP 1.0 clients set it as a message…
featureAMQP 1.0 clients can now request sole (exclusive) ownership of a container ID. In case of a conflict, the server either refuses the new connection or closes the existing one, depending on what the client requested, per the AMQP 1.0 Connection Uniqueness protocol extension. GitHub issue:
featureA new, optional x-name-prefix queue argument sets the prefix used for a server-named queue's generated name, capped at 64 bytes. The default prefix remains amq.gen. This feature is specific to AMQP 0-9-1. GitHub issue:
featureThe classic queue shared message store gained a new v2 on-disk file format (.sqs). New files are written in v2 automatically. Existing v1 files (.rdq) are left as-is. Note that a node with v2 files present cannot be downgraded to 4.3.x or earlier. GitHub issue:
featureClassic queues now perform compaction more efficiently. GitHub issue:
featurex-modulus-hash exchange routing is now stable: assuming a topology that does not change, messages carrying the same routing key are now routed to the same bound destination. Note: the exchange type has been moved from rabbitmq_sharding to the core, so it is now available even when said plugin is…
featureA change to the delivery-limit policy key now takes effect for existing quorum queues. Previously the delivery limit could not be updated from a policy. Now quorum queues reconfigure their delivery-limit value when a policy is added or updated. When the policy is removed the queue goes back to the…
featureA passive declaration of a queue or an exchange (a check that it exists) requires any one of the configure, write or read permissions on that queue or exchange. This applies to queue.declare and exchange.declare with passive set to true in AMQP 0-9-1, and to queue lookups in AMQP 1.0 management.…
featureReduce boot time of blank (brand new) nodes. GitHub issue:
featureEncrypted value support for the definitions.https.url key in rabbitmq.conf. GitHub issue:
featurePassword salts for internal users are now generated using a cryptographically secure pseudorandom number generator (CPRNG). GitHub issue:
featureA topic exchange binding key can now contain at most two multi-segment (#) wildcards. GitHub issue:
featureRedeclaring a stream with an x-max-age value that is equal to the existing one but written in different units, for example 1D as 24h, is no longer rejected as having non-equivalent arguments. GitHub issues:
featureA stream can now start at an offset other than 0, set with the new x-stream-initial-offset optional queue argument. While the stream is empty, the first and next offset specifications resolve to this offset. The stream protocol accepts the same value as the stream-initial-offset argument of the…
featureMultiple stream coordinator efficiency improvements. For example, the stream coordinator now retries failed stream member actions sooner, with keeping a related stream partition process blocked for the retry delay. Failed operations are now retried after a short randomised delay, and actions that…
featureCertain classic queue recovery scenarios now avoid a counterproductive timeout of 60s. GitHub issue:
featureReduce CPU use of mostly idle quorum queues that do not have any queue decorators configured (which is the common, baseline case). GitHub issues:
featurePBKDF2-HMAC-SHA256 now can be used for password hashing: ini password_hashing_module = rabbit_password_hashing_pbkdf2_sha256 GitHub issue:
featureAMQP listeners can now bind to a Unix domain socket, using the same listeners.tcp.* settings as a TCP listener: ini listeners.tcp.1 = unix:/var/run/rabbitmq/rabbitmq.sock:0 GitHub issue:
featureconnection_max and channel_max were renamed to max_connections and max_channels, respectively, in rabbitmq.conf. The original names are still supported. GitHub issue:
featureMessages are now converted from AMQP 0-9-1 to AMQP 1.0 as a single data section, unless its payload consists of valid AMQP 1.0 body sections. An expiration value that cannot be parsed is now ignored during that conversion. GitHub issue:
featureClient connection listener startup now can be delayed by a configurable number of seconds (default: no additional delay): ini listeners.startup_delay = 10 GitHub issues:
featureInternal peer discovery improvements. GitHub issue:
featureTwo new commands, rabbitmqctl sole_connection_status and rabbitmqctl sole_connection_force_delete, inspect and manage AMQP 1.0 sole connections. GitHub issue:
featureCLI commands that accept sensitive values as interactive input now suppress terminal echoing where possible. This behavior is specific to Erlang 28 and 29. GitHub issue:
featurestream.max_connections is a new rabbitmq.conf setting that limits the concurrent number of RabbitMQ Stream Protocol client connections. GitHub issue:
featurestream.max_super_stream_partitions is a new rabbitmq.conf setting that limits the number of partitions a super stream can have. GitHub issue:
featureA new endpoint, GET /api/init, cuts the number of blocking requests the UI has to make with certain authentication and login flows. GitHub issue:
featureThe Referrer-Policy response header value of the HTTP API and the UI can now be configured using the management.headers.referrer_policy key. GitHub issue:
featureSupport for multiple listeners for all HTTP-based protocols and the HTTP API. GitHub issues:
featuremqtt.max_connections is a new rabbitmq.conf setting that limits the concurrent number of MQTT client connections. GitHub issue:
featureMQTT 5.0: a Receive Maximum value of 0 is now rejected per the protocol spec. GitHub issue:
featureThe MQTT retained message store now has per-virtual host limits on the number of retained messages and their total size. A message that would exceed either limit is not retained. The defaults are 100,000 messages and 1 GiB. Both can be changed, or set to infinity: ini…
featureFollowing the footsteps of AMQP 1.0 and MQTT in previous years, the STOMP is now a standardlone protocol, that is, it is no longer built on AMQP 0-9-1. GitHub issue:
featureGitHub issue:
+35 more items in the release notes
fixThe basic.cancel notification sent on a consumer delivery timeout now properly clears consumer state even if the client does not respond with basic.cancel-ok. Most clients do not respond, and nodes older than 4.3.0 do not accept a client-sent basic.cancel-ok at all. The server now advertises…
fixClassic queue expiration (x-expires) timestamps were lost on node restart, so the queue TTL timer did not fire when it was supposed to if the TTL outlived the restart. GitHub issues:
fixRouting to queues now handles concurrent queue deletion gracefully in more places, avoiding confusing (and also non-actionable) exceptions. This also avoids unnecessary publisher confirm noise, most visible with transient exclusive queues bound to a topic exchange. GitHub issues:
fixA quorum queue declaration that timed out waiting for a remote Khepri projection left the queue metadata behind and prevented a retry with the same name. Contributed by @chenshi5012. GitHub issue:
fixMessage conversion between AMQP 1.0 and AMQP 0-9-1 no longer fails on AMQP 1.0 values that AMQP 0-9-1 cannot represent. GitHub issue:
fixDefinition import now rejects a binding with an unrecognised destination_type. GitHub issue:
fixAMQP 0-9-1 content headers are validated more strictly. GitHub issue:
featuressl_options.supported_groups can now be used in rabbitmq.conf to restrict the named groups offered for TLS 1.3 key exchange. GitHub issue:
featureCLI commands that accept sensitive values as interactive input now suppress terminal echoing where possible. This behavior is specific to Erlang 28 and 29. GitHub issue:
fixPagination bug fixes for stream connections. GitHub issues:
fixA 404 for a virtual host the user has no permissions on is now identical to the 404 for a virtual host that does not exist. GitHub issue:
fixThe OAuth 2 token proxy responded with a 500 to some malformed JSON documents. GitHub issue:
fixThe default Content-Security-Policy value now includes base-uri 'none'. GitHub issue:
featureAMQP 1.0 consumers now link directly to their connection in the management UI. GitHub issues:
fixWhen the destination rejects a message, for example because the destination queue has x-overflow set to reject-publish and has reached its maximum length, the shovel now returns the message to the source queue as a failed delivery. A quorum source queue therefore dead-letters the message once it…
fixA shovel with an AMQP 1.0 destination did not settle a message at the source when the destination rejected or released it, and eventually stopped forwarding messages. GitHub issue:
fixA shovel with an AMQP 1.0 source could restart and forward some messages twice when the destination confirmed messages out of order. GitHub issue:
fixA shovel with an AMQP 1.0 source could settle messages incorrectly after more than 4 billion deliveries. With a local destination, it could acknowledge a message at the source before the destination confirmed it. GitHub issue:
fixThe AMQP 0-9-1 shovel now ignores publisher confirms for unknown delivery tags. GitHub issues:
fixFederation links now ignore publisher confirms for unknown delivery tags. GitHub issues:
fixAn exchange federation link now handles amqp_connection:open_channel/1 returning closing instead of {error, Reason}. GitHub issue:
fixQoS 0 consumer queue deletion now retries in more scenarios. GitHub issue:
fixMessage selectors with arithmetic expressions now validate numerical arguments more thoroughly. GitHub issue:
featureThe client now responds to a server-sent basic.cancel with basic.cancel-ok only when the server advertises support for it. GitHub issue:
featureThe auth_mechanism query parameter of an AMQP 0-9-1 URI is now restricted to the mechanisms the client actually supports (plain, amqplain, external, crdemo), and an unsupported value is now rejected when the URI is parsed rather than when the connection is established. This also applies to the…
featureLikewise, the verify query parameter of an AMQP 0-9-1 URI now only accepts verify_peer or verify_none, and an unsupported value is rejected when the URI is parsed rather than when the TLS connection is established. GitHub issue:
featureConnection configuration now accepts a connect_timeout, applied to the socket connect and, for TLS-enabled connections, to the TLS handshake as well. Contributed by @arrangabriel. GitHub issues:
othercowboy was upgraded to 2.20.0
othercowlib was upgraded to 2.21.0
othergun was upgraded to 2.7.0
otherkhepri was upgraded to 0.18.4
securityFixes GHSA-j6hc-926v-qwq2: RabbitMQ STOMP consumers retain OAuth queue access after JWT expiration
securityFixes GHSA-6jvc-jx8w-m757: RabbitMQ Stream Publisher Management API Discloses Unauthorized Vhost and Stream Existence
securityFixes GHSA-342v-cj47-c9g8: Cross-vhost Stream consumer virtual-host existence disclosure
fixDeleting an exchange did not delete the bindings that pointed to it as a destination. A few related cases around auto-delete exchanges, transient queue cleanup and virtual host deletion were fixed along the way. GitHub issues:
fixQuorum queue continuous membership reconciliation could add more replicas than the configured target. GitHub issues:
fixCertain malformed urn:uuid: correlation or message ID caused exceptions during message format conversion. Such values are now rejected. GitHub issue:
fixAn operation that refers to an unknown queue type now fails with a precondition_failed channel exception instead of an exception and abrupt channel termination. GitHub issue:
fixClassic queue recovery counted some message store references more than once. GitHub issue:
fixx-max-age values are now compared as durations, so redeclaring a stream with 1D when it was declared with 24h no longer fails with a PRECONDITION_FAILED (non-equivalent argument) exception. With contributions from @Vishal-770. GitHub issues:
fixAMQP 1.0 SQL filters: the value matched by a LIKE pattern with several wildcards is now bounded independently of the message size limit. GitHub issue:
fixDirect connections (used by the shovel and federation plugins) now enforce channel_max_per_node the same way network connections do. Contributed by @Ayanda-D. GitHub issue:
featureNew rabbitmq.conf setting: channel_tx_message_max. It bounds the number of publishes a channel buffers in an open AMQP 0-9-1 transaction, and defaults to 10,000. Going over the limit results in a precondition_failed channel exception. Most applications won't be affected by this change and likely…
featureNew rabbitmq.conf setting: listeners.startup_delay. It delays the start of client connection listeners by the specified number of seconds, for environments where applications begin connecting as soon as a port is open, before the node has finished booting. Contributed by @Vishal-770. GitHub issues:
featureSeveral channel interceptors can now be registered for the same AMQP 0-9-1 operation, as long as they use different priorities. Previously, if two enabled plugins intercepted the same operation, for example basic.publish, channels could not be opened at all. Priorities are set per interceptor…
featureShovels now support a new AMQP URI query parameter, customize_hostname_check, that controls how the target hostname is matched against the server certificate, for example with wildcard certificates. Contributed by @jiangranwang. GitHub issue:
fixrabbitmq-diagnostics check_certificate_expiration now handles certificate files that cannot be read, and certificates that use the RFC 5280 UTCTime format, the same way the HTTP API health check does. Contributed by @Vishal-770. GitHub issues:
featureTwo new commands, rabbitmqctl list_channel_interceptors and rabbitmqctl set_channel_interceptor_priorities, list the active channel interceptors and adjust their priorities at runtime. Priorities set this way are not persisted and do not survive a node restart. Contributed by @Ayanda-D. GitHub…
fixDuring a rolling upgrade, a stream metadata request could leave out a peer node that ran a different version. GitHub issue:
fixThe publishers and consumers listing now verifies virtual host access like other comparable HTTP API endpoints. GitHub issues:
fixThe channels list and individual channel pages now display basic information when management statistics are disabled, instead of returning a 400 Bad Request. GitHub issues:
fixSeveral HTTP API endpoints returned a 500 instead of a 400 for invalid range parameters or an invalid timeout header: GET /api/nodes/{node}, GET /api/healthchecks/node[/{node}], GET /api/federation-links, GET /api/health/checks/alarms and GET /api/health/checks/local-alarms. GitHub issues:
fixThe certificate expiration health check no longer responds with a 500 for certificate files that cannot be read, or for certificates that use the RFC 5280 UTCTime format. Contributed by @Vishal-770. GitHub issues:
fixOptional argument (x-*) values are no longer coerced to strings in the management UI. GitHub issue:
featureConsumers on protocols without channels (for example, AMQP 1.0 and MQTT) now link directly to their connection in the management UI. Contributed by @Vampirebyte. GitHub issue:
fixShovel types provided by plugins can now be used as src-protocol and dest-protocol values. GitHub issues:
fixA local shovel with src-delete-after set to a number could in some cases transfer more messages than that number. GitHub issue:
featureThe retained message store now has per-virtual host limits on both the number of messages and their total size: mqtt.retained_message_store.max_messages (defaults to 100000) and mqtt.retained_message_store.max_size_bytes (defaults to 1 GiB). GitHub issue:
fixSTOMP and Web STOMP connections now enforce credential expiry (for example, of OAuth 2 tokens) the same way other protocols do. GitHub issue:
fixweb_mqtt.ssl. and web_stomp.ssl. now accept more TLS keys in rabbitmq.conf, including verify and fail_if_no_peer_cert. GitHub issues:
fixDN escaping introduced in an earlier release was too strict for certain Active Directory setups, for example when the client provides a full DN that contains a backslash. Escaping is now applied to DN template values only. GitHub issues:
fixActive Directory down-level logon names (DOMAIN\username) can be used to log in again. Contributed by @jiangranwang. GitHub issue:
featureThe trust store now also covers the HTTP API, Web MQTT and Web STOMP listeners. GitHub issue:
fixA 404 response from the Consul API no longer stops node boot; peer discovery is retried instead. GitHub issues:
othercowboy was upgraded to 2.19.0
othercowlib was upgraded to 2.20.0
othergun was upgraded to 2.6.0
otherkhepri was upgraded to 0.18.1
otherranch was upgraded to 2.3.0
securityFixes GHSA-cfqc-c682-93mm: RabbitMQ Web STOMP: compressed pre-authentication messages exhaust broker memory
securityFixes CVE-2026-67419: Consecutive topic wildcards cause combinatorial routing work
securityFixes GHSA-6xpg-rfmh-grhq: STOMP pre-authentication frame size limit is not enforced
securityFixes GHSA-5jgm-jxp7-gwjh: MQTT retained message store has no size or count limit and is never reclaimed
securityFixes GHSA-6gmw-wxch-cvvc: Shovel URI credentials disclosed to read-only monitoring users via the shovel management HTTP API
securityFixes GHSA-6chv-gv3h-cvcj: RabbitMQ direct reply-to: forged suffix fanout causes quadratic mailbox memory
securityFixes GHSA-3526-xvv4-q9mr: RabbitMQ administrator RCE through reflected Erlang distribution authentication
securityFixes GHSA-6588-rqcr-59pw: AMQP 1.0 post-body properties bypass user-ID validation and reach consumers
securityFixes CVE-2026-67421: Stored HTML Injection in RabbitMQ Management OAuth Error Handling
securityFixes GHSA-27gv-h5q6-cpwg: RabbitMQ policymaker RCE through federation-management nonmember RPC and distribution reflection
securityFixes GHSA-pj8f-mw2q-3xjj: RabbitMQ consistent-hash exchange: empty array crashes DLX queue processes
securityFixes GHSA-4826-gphh-vw3x: MQTT 5.0: Receive Maximum zero disables delivery credit
securityFixes CVE-2026-67418: MQTT 5.0: inapplicable PUBLISH property disconnects matching subscribers
securityFixes CVE-2026-67420: RabbitMQ OAuth credential refresh retains revoked runtime tags
fixWith direct reply-to, a message routed to multiple targets that resolved to the same process could be delivered to it more than once. GitHub issue:
fixQuorum queue recovery from a recovery checkpoint could leave a part of the queue's internal state only partially initialized. GitHub issue:
fixIn clusters that run a mix of 4.2.x and 4.3.x nodes during a rolling upgrade, local quorum queue queries now fall back to the previous state machine version instead of failing. GitHub issue:
fixA malformed AMQP 1.0 frame now results in a framing error returned to the client instead of an exception. GitHub issue:
fixThe AMQP 1.0 message parser now validates message sections more strictly and decodes certain types of arrays more efficiently. GitHub issue:
fixTopic exchanges now limit the number of multi-segment (#) wildcards a binding key can use to two. The # wildcard is meant to be used as the final segment, that is, just once. GitHub issue:
fixWhen connection credentials are refreshed (for example, when an OAuth 2 token is renewed), the user's tags are now updated instead of being carried over from the original state. GitHub issue:
fixDefinition import from an HTTPS endpoint no longer fails when a password-protected TLS (HTTPS) client certificate is used. Contributed by @Pyolar. GitHub issue:
fixThe AMQP 1.0 Erlang client no longer logs an exception when a link is already detached. Workloads that use short lived links could produce a substantial amount of log noise. GitHub issue:
featureAuthentication events are now logged under a new logging category, user. Successful logins are logged at the info level, failed login attempts at the warning level. GitHub issue:
featurerabbitmqctl hash_password now supports more password hashing functions. GitHub issues:
fixA stream protocol connection can have at most 256 publishers and 256 subscriptions, a limit that comes from the protocol's wire format. Attempts to go over these limits are now rejected early with a clear error instead of failing later with an unrelated one. GitHub issue:
featureBefore a stream client connection completes authentication and authorization (that is, before a successful open), the server now enforces a low frame_max ceiling instead of the full configured value. The default, 8192 bytes, is high enough to accommodate realistic JWT tokens used with SASL PLAIN…
featureNew setting: stream.max_uncompressed_sub_entry_batch_size. It bounds the declared uncompressed size of a published sub-entry batch, and defaults to 67108864 (64 MiB), the same default already used by the Java client's maxUncompressedSubEntryBatchSize. The broker and any client publishing to it…
fixHTTP API endpoints that accept a node name, including the federation and tracing related ones, now validate that the target node is a cluster member. GitHub issues:
fixThe management UI no longer displays certain alert messages twice. GitHub issue:
featureWhen management.credential_encryption_secret is configured, the management UI login endpoint (POST /api/login) returns client credentials encrypted using AES-256-GCM with a key derived from the configured secret, and returns the ciphertext as an opaque token prefixed with rmqe.. The browser stores…
featureGET /api/definitions now supports conditional requests (ETag). The ETag value is derived from the metadata store Raft index, so the tag will naturally change as the metadata store serves writes. GitHub issues:
featureThe Referrer-Policy HTTP response header can now be configured with the management.headers.referrer_policy setting. GitHub issue:
featureWhen management.http.hide_allow_header is set to true, the Allow HTTP response header is omitted from all responses except 405 Method Not Allowed ones, where it is required by the HTTP specification. This avoids disclosing the supported HTTP methods to clients. GitHub issue:
featureWhen management.definitions.require_json_extension is set to true, both the management UI and the HTTP API will reject definition upload where the file does not have a .json extension. The setting defaults to false. Regardless of this setting, the server always validates that the uploaded content…
fixWhen RabbitMQ is behind a proxy that terminates TLS, the OAuth 2 login flow now honors the X-Forwarded-Proto, X-Forwarded-Host and X-Forwarded-Port headers when rewriting the token endpoint URL in the OpenID discovery payload. GitHub issue:
fixReduced log noise. GitHub issue:
fixStatic shovels that do not define any declarations failed to start. GitHub issues:
fixWhen a topology setup failure stops a shovel worker, the specific reason is now reported instead of a generic one. GitHub issue:
fixThe Shovel HTTP API now processes shovel URIs the same way the federation plugin processes its upstream URIs. GitHub issue:
+13 more items in the release notes
securityFixes CVE-2026-67414: RabbitMQ AMQP 1.0 parser: amplification memory-exhaustion DoS via zero-width array aggregation
securityFixes CVE-2026-67416: AMQP 1.0 symbolic body descriptor prefix collisions bypass validation
fixQuorum queues in clusters upgraded from 3.13.x to 4.2.x and then to 4.3.x could stop emitting metrics and taking snapshots after a node restart. GitHub issues:
fixThe AMQP 1.0 parser now detects standard message body sections more strictly. GitHub issue:
fixThe AMQP 1.0 parser now decodes certain array values more efficiently. GitHub issue:
fixThe single active consumer coordinator did not notify a consumer that was re-selected for activation while it was still deactivating, leaving the group without an active consumer. Contributed by @pterygota. GitHub issues:
fixVery short lived exclusive queues could cause an exception during metric collection, producing log noise. GitHub issues:
fixAfter an IdP-initiated OAuth 2 login, the management UI now returns the user to the page that was open before the login instead of the default one. Contributed by @thisisnsh. GitHub issues:
fixSeveral security fixes and validation gaps were addressed: GitHub issue:
fixThe HTTP API now returns 404 Not Found instead of 401 Unauthorized when a user lacks permission to a vhost, avoiding disclosure of the vhost's existence.
fixToken expiry values that use a floating point number are now accepted, not just integers.
fixTo access all user-limits it is required administrator priviledge
fixTo access a user-limits for a specific user now require the requester to be that same user or have administrator/monitoring privileges.
featureThe management UI Content Security Policy (CSP) no longer includes the unsafe-eval and unsafe-inline directives. GitHub issue:
fixIn scenarios that involved a federated queue and a federated exchange with exactly the same name in the same virtual host, deleting an upstream unintentionally corrupted the federated exchange(s) operating state, breaking federation for the exchange in question. GitHub issues:
securityFixes CVE-2026-67409: JWKS Fetch Ignores HTTP Response Status Code - Signing Key Destruction Causes Authentication DoS (CWE-252)
securityFixes CVE-2026-67410: OAuth2 Client Secret Exposed via Unauthenticated JavaScript Endpoint (CWE-200)
securityFixes CVE-2026-67408: Stream Management Super-Stream Binding Keys Allocation Allows Low-Privilege Node Denial of Service
securityFixes CVE-2026-61837: AMQP 1.0 management `GET /bindings` exposes full binding topology to any authenticated AMQP user without resource/management permission checks
securityFixes CVE-2026-67413: Authenticated RabbitMQ JMS Topic Selector Users Can Consume Broker CPU with an Unbounded LIKE Regular Expression
securityFixes CVE-2026-67412: Federation upstream in RabbitMQ skips vhost authorization allowing cross-vhost message access
securityFixes CVE-2026-67411: (Web) MQTT with PROXY Protocol enabled: a loopback-only user permission bypass
securityFixes CVE-2026-67415: Shovel Management Atom Exhaustion Allows Persistent Broker-Wide Denial of Service
securityFixes CVE-2026-67407: Incomplete fix for CVE-2026-44838: `escape_regex_char/1` does not escape `-`, leaving room for an MQTT topic permission bypass
securityFixes CVE-2026-67406: Shovel does not format state logged by the crash reporter and can leave unencrypted credentials in a crash dump file
securityFixes CVE-2026-67239: Stored XSS via TLS peer-certificate DN in stream-management UI (sibling of V-11)
securityFixes CVE-2026-67242: OAuth2 is_integer(Exp) guard skips token-expiry checks for float exp
securityFixes CVE-2026-67223: LDAP DN injection via unescaped substitution
securityFixes CVE-2026-67241: AMQP 1.0 management exchange.declare skips alternate-exchange permission check
fixQuorum queue, Khepri and other Raft leaders could optimistically commit new log entries in certain scenarios. GitHub issue: rabbitmq/ra#637
fixQuorum queues that use at-least-once dead lettering could get their dead lettering process permanently stuck after repeated queue membership changes. GitHub issue:
fixClassic queue index directory paths could accumulate slashes, eventually failing with an enametoolong file system error. GitHub issue:
fixEnabling the tie_binding_to_dest_with_keep_while_cond feature flag could fail with an exception when certain exchange-to-exchange topologies. GitHub issue:
fixAn invalid consumer_timeout value in the configuration now falls back to the default value (24 hours) instead of being used as is. GitHub issue:
fixAMQP 1.0 management operations that declare an exchange with an alternate exchange now verify the necessary permissions on the alternate exchange, matching AMQP 0-9-1. GitHub issue:
fixAMQP 1.0 management GET /bindings operations now behave consistently with the rest of the binding-related handlers. GitHub issue:
fixWorker pool processes no longer terminate when they receive an unexpected message. Contributed by @Ayanda-D. GitHub issue:
fixA race condition between concurrent queue (or virtual host) deletion and a Ra cluster shutdown could log an exception. Contributed by @Ayanda-D. GitHub issue:
fixA closing channel (connection) that failed to send channel.close_ok on an already terminated writer or socket no longer produce log noise. Contributed by @Ayanda-D. GitHub issue:
fixUnexpected failures during channel termination cleanup no longer produce log noise. Contributed by @Ayanda-D. GitHub issue:
fixCode paths that use rabbit_queue_type_util:erpc_call/5 now handle more errors. Contributed by @Ayanda-D. GitHub issue:
fixNodes could fail to start with a bad_generator exception in rabbit_queue_decorator:select/1 when a quorum queue record in the metadata store had its decorators set to undefined. GitHub issues:
fixEnabling tracing on multiple virtual hosts concurrently could silently drop some of the virtual hosts from the traced set. All virtual host tracing state modifications are now linearized. GitHub issues:
featurePassword salts are now generated using a cryptographically secure pseudo-random number generator (CSPRNG). GitHub issue:
featureSocket-level metric collection used by several protocol readers and the management agent now handles concurrently closed connections safely. Inspired by a contribution of @MugemaneBertin2001. GitHub issues:
fixrabbitmq-plugins commands now tolerate plugins that are listed as enabled but are not installed. GitHub issue:
fixrabbitmq-plugins list no longer outputs an empty plugin table when the target node cannot be reached. GitHub issue:
fixrabbitmq-plugins commands now correctly handle file paths of remote nodes, validate remote nodes in offline mode, and no longer report false positives for rabbitmq-plugins is_enabled. GitHub issue:
fixShell (Bash, zsh) command completion fixes. Contributed by @Chr1s70ph. GitHub issue:
featurerabbitmq-queues and rabbitmq-streams now provide transfer_leadership commands for individual queues and streams. GitHub issue:
featurerabbitmq-upgrade drain safety improvements: the command now handles certain failures more gracefully. Proposed by @MugemaneBertin2001. GitHub issues:
fixPermissions required for certain stream protocol operations were adjusted to be consistent with comparable operations over other protocols. GitHub issue:
featureThe maximum number of super stream partitions is now limited to 1,000 partitions by default. This limit can be increased using the stream.max_super_stream_partitions key in rabbitmq.conf. GitHub issues:
featureA client RPC timeout is now logged as a concise message instead of an exception with a stack trace. Contributed by @MugemaneBertin2001. GitHub issues:
fixOAuth 2 login could fail in Safari. A new token endpoint proxy is now used for the affected authorization flow. GitHub issues:
+25 more items in the release notes
securityFixes CVE-2026-67237: Reflected XSS via the OAuth bootstrap JS endpoint
securityFixes CVE-2026-67234: Non-RFC-conformant cookie name when clearing the auth-mechanism preference
securityFixes CVE-2026-67236: Plaintext username:password stored in an insecure cookie after successful POST /login
fixEnabling the tie_binding_to_dest_with_keep_while_cond feature flag could fail in some rare cases. GitHub issue:
fixUsers created without a password or a password hash (for example, those that rely on X.509 certificate-based authentication) over the HTTP API are now stored correctly, exactly like the users whose password was cleared with rabbitmqctl clear_password. GitHub issues:
fixConsumer activity status of classic queue consumers was not always correctly updated and reported when single active consumer was enabled. GitHub issues:
fixThe values of the x-consumer-timeout and x-consumer-disconnected-timeout optional arguments are now validated at queue declaration time. GitHub issue:
fixDefault queue type (DQT) validation now treats empty strings the same way as a missing value: by falling back. to the default (classic queues). GitHub issues:
fixFeature flag operations now avoid unnecessary work: flags that are already enabled on all cluster nodes are excluded from synchronization, and enabling an empty set of flags is a no-op. GitHub issue:
fixConfiguration changes for deprecated features are now honored when possible. GitHub issue:
featureThe per-node channel limit (channel_max_per_node) is now also enforced for channels opened on direct Erlang client connections used by the Shovel and Federation plugins, matching the behavior enforced for "regular" AMQP 0-9-1 clients. GitHub issues:
featureModules are now loaded in parallel early on node boot, reducing node startup time. GitHub issue:
featureSeveral new rabbitmq.conf keys now supports encrypted values. GitHub issue:
fixrabbitmqctl set_topic_permissions now validates target user and exchange for existence. GitHub issue:
fixrabbitmqctl add_vhost now validates the provided default queue type value. GitHub issue:
fixFixed a frame assembly performance regression in the stream protocol reader. GitHub issue:
featureSeveral stream protocol reader optimizations: stream metadata queries now contact cluster nodes concurrently, subscription lookups use a more efficient data structure, and frame processing short-circuits when a connection reaches a terminal state. GitHub issue:
fixCORS hardening: access-control-request-headers values are now validated and a wildcard (*) origin header value is rejected. GitHub issue:
fixDefinitions import now limits the size of multipart upload bodies, and definitions export download filenames are restricted to a safe character set. GitHub issue:
fixHTTP API 500 responses no longer include internal error details in the response body. GitHub issue:
fixSeveral HTTP response headers are now consistently lowercase, and a previously missing content-type header was added to certain responses. GitHub issue:
featureA one-time warning is now logged when the HSTS or CSP headers are disabled. GitHub issue:
featureThe timestamp of the oldest message in a stream is now displayed on the stream page. GitHub issue:
featureThe queue list page can now display a "Delayed" message count column, for example, for quorum queues that have a retry policy configured. GitHub issue:
featureMore plugin configuration keys, such as prometheus.ssl.password, now support encrypted values in rabbitmq.conf. GitHub issues:
fixmqtt.tcp_listen_options.* settings in rabbitmq.conf did not take effect due to a configuration translation issue. GitHub issue:
othercuttlefish was upgraded to 3.9.1
othercowboy was upgraded to 2.16.0
othercowlib was upgraded to 2.17.0
othergun was upgraded to 2.4.0
securityFixes CVE-2026-67240: ReDoS via AMQP 1.0 SQL filter LIKE wildcard
securityFixes CVE-2026-67227: Atom exhaustion: to_atom on global-parameter :name
securityFixes CVE-2026-66072: Atom table exhaustion via stream `chunk_selector`
securityFixes CVE-2026-67233: Monitoring-tag user can DELETE shovels
securityFixes CVE-2026-66075: Monitoring-tag user can restart federation links
securityFixes CVE-2026-67224: Admin path-traversal write via trace name
securityFixes CVE-2026-67228: Atom exhaustion: to_atom on runtime-parameter component
securityFixes CVE-2026-66071: Atom exhaustion: OAuth2 JWT tag: scope values
securityFixes CVE-2026-67238: Atom-table exhaustion via reply-to queue name decoding
securityFixes CVE-2026-66067: Stream protocol skips per vhost per user connection limits
fixIf a queue was bound to a topic exchange using an empty binding key (""), messages published to any topic exchange with an empty routing key would be incorrectly routed to that queue. To apply the fix, enable the new topic_binding_projection_v5 feature flag after upgrading all cluster nodes.…
fixA virtual host could be falsely considered to be deleted in certain metadata store error and timeout scenarios. GitHub issue:
fixPassive queue and exchange declarations are now allowed for users that have any permission on the virtual host (configure, write, or read), not only configure. GitHub issues:
fixClassic queue shared message store GC could fall behind other queue activity under heavy load GitHub issues:
fixClassic queue message store: garbage collection is now stopped cleanly during node shutdown. GitHub issue:
fixQuorum queues now gracefully handle negative priority values. GitHub issue:
fixQuorum queues: delayed retry-related policy keys are now accepted in policy definitions. GitHub issues:
fixFixed a bug where quorum queue's at-least-once dead lettering could direct commands to the wrong member (replica). GitHub issue:
fixQuorum queues: reintroduced Raft WAL max entries default of 500K. GitHub issue:
fixA quorum queue could crash during recovery after an unclean shutdown PR: rabbitmq/ra#629
fixStream queue argument validation was improved. GitHub issue:
featurechannel_max was renamed to max_channels in rabbitmq.conf. The original name is still supported as an alias. GitHub issue:
featureconnection_max was renamed to max_connections in rabbitmq.conf. The original name is still supported as an alias. GitHub issue:
featureThe per-node max_connections limit is now enforced for AMQP 1.0 connections as well as AMQP 0-9-1 ones. GitHub issue:
featureWhen a plain-text client connects to a TLS listener (or vice versa) for AMQP 0-9-1, MQTT, STOMP, and the Stream protocol, target node will log a more useful message. GitHub issues:
featureThe permission cache is now traversed less often during AMQP 1.0 management and AMQP 0-9-1 channel checks. GitHub issue:
fixStream protocol: an open frame with empty properties is now handled correctly. GitHub issue:
featureIt is now possible to cap the maximum number of concurrent Stream Protocol client connections using the stream.max_connections configuration key in rabbitmq.conf. GitHub issue:
fixHTTP API GET /api/connections could return a 500 response when STOMP connections were present. GitHub issue:
featureIt is now possible to cap the maximum number of concurrent HTTP API connections using the management.tcp.max_connections, management.ssl.max_connections configuration keys in rabbitmq.conf. GitHub issue:
featureThe peer (client) certificate serial number is now exposed in the management UI and select CLI commands. GitHub issue:
featureIt is now possible to cap the maximum number of concurrent HTTP API connections using the prometheus.tcp.max_connections, prometheus.ssl.max_connections configuration keys in rabbitmq.conf. GitHub issue:
fixThe MQTT connection process no longer fails and logs an exception when keepalive checks encounter socket errors on an already-closed connection. GitHub issue:
featureIt is now possible to cap the maximum number of concurrent MQTT client connections using the mqtt.max_connections configuration key in rabbitmq.conf. GitHub issue:
fixFederation links could fail to start during rolling cluster restarts. GitHub issues:
featureNew rabbitmq.conf configuration settings for TLS cipher suites: auth_ldap.ssl_options.ciphers.*. GitHub issue:
featureNew rabbitmq.conf configuration settings for TLS cipher suites: auth_http.ssl_options.ciphers.*. GitHub issue:
fixThe cache was not effective for reconnecting clients. GitHub issues:
fixA user-provided fail_if_no_peer_cert value in the plugin's TLS options is now respected. Previously, an internal default could override the configured value. GitHub issue:
featureNew rabbitmq.conf configuration settings for TLS cipher suites: trust_store.ssl_options.ciphers.*. GitHub issue:
+5 more items in the release notes
breakingcluster_partition_handling
breakingcluster_partition_handling.pause_if_all_down.recover
breakingcluster_partition_handling.pause_if_all_down.nodes.$name
breakingx-queue-mode set to any value
breakingx-queue-version set to 1
featureFor a cluster to be available, a majority of nodes must be online at all times
featureFailure and partition recovery in a RabbitMQ cluster is now significantly simpler and uniform: all components that have replicated state (Khepri, quorum queues, streams) recover per Raft recovery semantics
featureStrict priority queues with per-priority message counts, correct redelivery ordering, and priority-aware message expiration
featureDelayed retry for quorum queues: configurable increasing backoff when messages are returned
featureConsumer timeout for quorum queues: configurable timeout for unacknowledged messages, with protocol-specific handling for AMQP 1.0 and MQTT
featureRecovery snapshots and snapshot throttling to reduce recovery time and improve snapshotting decisions
featureMemory optimisations including compact message references, optimised tuple storage for delayed keys, and removal of rabbit_fifo_index usage
featurerabbitmq_4.2.0
featurerabbitmq_4.1.0
featurerabbitmq_4.0.0
featurekhepri_db
featurequorum_queue_non_voters
featuremessage_containers_deaths_v2
deprecatedamqp_address_v1
deprecatedamqp_filter_set_bug
deprecatedglobal_qos
deprecatedqueue_master_locator
deprecatedtransient_nonexcl_queues
featureWhen a message is rejected by a queue, RabbitMQ now provides the queue name and rejection reason to AMQP 1.0 publishers in the Rejected outcome. This is particularly useful when multiple queues are bound to an exchange, as it allows publishers to identify which specific queue out of several target…
featurequeue:
featurereason: maxlen | unavailable
featureQuorum queues now support strict priority queues with per-priority message counts, correct redelivery ordering across priorities, and priority-aware message expiration scans. GitHub issue:
featureQuorum queues now support delayed retry with configurable backoff based on delivery count. When messages are returned (via reject, nack, or modify), they can be held in a delayed state before becoming available again. The delay is based on delivery count: min(min_delay * delivery_count,…
featureQuorum queues now support a configurable consumer timeout. When a consumer holds unacknowledged messages beyond the timeout, the messages are returned to the queue. For AMQP 1.0 clients, timed-out deliveries are released via DISPOSITION(state=released) instead of detaching the link, allowing the…
featureA new consumer_disconnected_timeout setting controls how long quorum queues wait before returning messages when a consumer's node becomes unreachable due to a network partition. The default is 60 seconds. Configurable via consumer_disconnected_timeout in rabbitmq.conf, the…
featureQuorum queue recovery snapshots reduce recovery time after a member restart by avoiding the need to replay all enqueue commands from the log. GitHub issue:
featureQuorum queue snapshot throttling now uses WAL fill ratio and reclaimable byte tracking to make smarter snapshotting decisions, yielding roughly one snapshot per queue per WAL cycle instead of excessive snapshots in shallow, fast-flowing queues. GitHub issue:
featureQuorum queue memory optimisations: message references now use a compact packed integer representation ("compact" means up to 59-bit) when possible, halving per-message memory overhead in many scenarios. The rabbit_fifo_index module is no longer used by the main state machine. GitHub issue:
featureQuorum queues now allow unlimited explicit message returns. The delivery limit is based on delivery-count rather than acquired-count, so messages can be explicitly returned to the queue without counting towards the delivery limit. GitHub issue:
featureThe x-modulus-hash exchange type, previously provided by the sharding plugin, was moved into the core and reworked to provide stable message routing (distribution) assuming a stable set of bindings, including between node restarts. GitHub issue:
featureWhen quorum queue members (replicas) are deleted from a node, either manually via rabbitmq-queues shrink or as part of rabbitmqctl forget_cluster_node, the members are stopped in parallel. GitHub issue:
featurePurging a quorum queue now also removes at-least-once dead-lettered messages that were pending delivery. GitHub issue:
featureAMQP 0-9-1: when a connection's credentials are refreshed, the permissions cache is now cleared and consumer permissions are re-validated immediately GitHub issue:
featureQuorum queue delivery limit can now be changed via policy without queue redeclaration GitHub issue:
featureKhepri topic exchange routing projection (v4): replaced the internal representation with a trie backed by an ordered_set ETS table, significantly improving routing performance for topic exchanges with many bindings GitHub issue:
+69 more items in the release notes
securityFixes CVE-2026-67409: JWKS Fetch Ignores HTTP Response Status Code - Signing Key Destruction Causes Authentication DoS (CWE-252)
securityFixes CVE-2026-67410: OAuth2 Client Secret Exposed via Unauthenticated JavaScript Endpoint (CWE-200)
securityFixes CVE-2026-67408: Stream Management Super-Stream Binding Keys Allocation Allows Low-Privilege Node Denial of Service
securityFixes CVE-2026-61837: AMQP 1.0 management `GET /bindings` exposes full binding topology to any authenticated AMQP user without resource/management permission checks
securityFixes CVE-2026-67413: Authenticated RabbitMQ JMS Topic Selector Users Can Consume Broker CPU with an Unbounded LIKE Regular Expression
securityFixes CVE-2026-67412: Federation upstream in RabbitMQ skips vhost authorization allowing cross-vhost message access
securityFixes CVE-2026-67411: (Web) MQTT with PROXY Protocol enabled: a loopback-only user permission bypass
securityFixes CVE-2026-67415: Shovel Management Atom Exhaustion Allows Persistent Broker-Wide Denial of Service
securityFixes CVE-2026-67407: Incomplete fix for CVE-2026-44838: `escape_regex_char/1` does not escape `-`, leaving room for an MQTT topic permission bypass
securityFixes CVE-2026-67406: Shovel does not format state logged by the crash reporter and can leave unencrypted credentials in a crash dump file
securityFixes CVE-2026-67239: Stored XSS via TLS peer-certificate DN in stream-management UI (sibling of V-11)
securityFixes CVE-2026-67242: OAuth2 is_integer(Exp) guard skips token-expiry checks for float exp
securityFixes CVE-2026-67223: LDAP DN injection via unescaped substitution
securityFixes CVE-2026-67241: AMQP 1.0 management exchange.declare skips alternate-exchange permission check
fixClassic queue index directory paths could accumulate slashes, eventually failing with an enametoolong file system error. GitHub issue:
fixAMQP 1.0 management operations that declare an exchange with an alternate exchange now verify the necessary permissions on the alternate exchange, matching AMQP 0-9-1. GitHub issue:
fixAMQP 1.0 management GET /bindings operations now behave consistently with the rest of the binding-related handlers. GitHub issue:
fixWorker pool processes no longer terminate when they receive an unexpected message. Contributed by @Ayanda-D. GitHub issue:
fixA race condition between concurrent queue (or virtual host) deletion and a Ra cluster shutdown could log an exception. Contributed by @Ayanda-D. GitHub issue:
fixA closing channel (connection) that failed to send channel.close_ok on an already terminated writer or socket no longer produce log noise. Contributed by @Ayanda-D. GitHub issue:
fixUnexpected failures during channel termination cleanup no longer produce log noise. Contributed by @Ayanda-D. GitHub issue:
fixCode paths that use rabbit_queue_type_util:erpc_call/5 now handle more errors. Contributed by @Ayanda-D. GitHub issue:
fixNodes could fail to start with a bad_generator exception in rabbit_queue_decorator:select/1 when a quorum queue record in the metadata store had its decorators set to undefined. GitHub issues:
fixEnabling tracing on multiple virtual hosts concurrently could silently drop some of the virtual hosts from the traced set. All virtual host tracing state modifications are now linearized. GitHub issues:
featurePassword salts are now generated using a cryptographically secure pseudo-random number generator (CSPRNG). GitHub issue:
featureSocket-level metric collection used by several protocol readers and the management agent now handles concurrently closed connections safely. Inspired by a contribution of @MugemaneBertin2001. GitHub issues:
fixrabbitmq-plugins commands now tolerate plugins that are listed as enabled but are not installed. GitHub issue:
fixrabbitmq-plugins list no longer outputs an empty plugin table when the target node cannot be reached. GitHub issue:
fixrabbitmq-plugins commands now correctly handle file paths of remote nodes, validate remote nodes in offline mode, and no longer report false positives for rabbitmq-plugins is_enabled. GitHub issue:
fixShell (Bash, zsh) command completion fixes. Contributed by @Chr1s70ph. GitHub issue:
featurerabbitmq-queues and rabbitmq-streams now provide transfer_leadership commands for individual queues and streams. GitHub issue:
featurerabbitmq-upgrade drain safety improvements: the command now handles certain failures more gracefully. Proposed by @MugemaneBertin2001. GitHub issues:
fixPermissions required for certain stream protocol operations were adjusted to be consistent with comparable operations over other protocols. GitHub issue:
featureThe maximum number of super stream partitions is now limited to 1,000 partitions by default. This limit can be increased using the stream.max_super_stream_partitions key in rabbitmq.conf. GitHub issues:
featureA client RPC timeout is now logged as a concise message instead of an exception with a stack trace. Contributed by @MugemaneBertin2001. GitHub issues:
fixOAuth 2 login could fail in Safari. A new token endpoint proxy is now used for the affected authorization flow. GitHub issues:
fixSeveral management UI templates now use safe string escaping in more places. GitHub issue:
fixHTTP API message publishing endpoint now uses a timeout when waiting for publisher confirms. GitHub issue:
featureDefinition export over the HTTP API is now significantly more efficient and transfers the result using HTTP response streaming. GitHub issue:
featureThe Referrer-Policy HTTP response header is now set (and configurable). GitHub issue:
+14 more items in the release notes
securityFixes CVE-2026-67237: Reflected XSS via the OAuth bootstrap JS endpoint
securityFixes CVE-2026-67234: Non-RFC-conformant cookie name when clearing the auth-mechanism preference
securityFixes CVE-2026-67236: Plaintext username:password stored in an insecure cookie after successful POST /login
fixUsers created without a password or a password hash (for example, those that rely on X.509 certificate-based authentication) over the HTTP API are now stored correctly, exactly like the users whose password was cleared with rabbitmqctl clear_password. GitHub issues:
fixConsumer activity status of classic queue consumers was not always correctly updated and reported when single active consumer was enabled. GitHub issues:
fixDefault queue type (DQT) validation now treats empty strings the same way as a missing value: by falling back to the default (classic queues). GitHub issues:
featureThe per-node channel limit (channel_max_per_node) is now also enforced for channels opened on direct Erlang client connections used by the Shovel and Federation plugins, matching the behavior enforced for "regular" AMQP 0-9-1 clients. GitHub issues:
featureModules are now loaded in parallel early on node boot, reducing node startup time. GitHub issue:
featureSeveral new rabbitmq.conf keys now support encrypted values. GitHub issue:
fixrabbitmqctl add_vhost now validates the provided default queue type value. GitHub issue:
fixFixed a frame assembly performance regression in the stream protocol reader. GitHub issue:
featureSeveral stream protocol reader optimizations: stream metadata queries now contact cluster nodes concurrently, subscription lookups use a more efficient data structure, and frame processing short-circuits when a connection reaches a terminal state. GitHub issue:
fixCORS hardening: access-control-request-headers values are now validated and a wildcard (*) origin header value is rejected. GitHub issue:
fixDefinitions import now limits the size of multipart upload bodies, and definitions export download filenames are restricted to a safe character set. GitHub issue:
fixHTTP API 500 responses no longer include internal error details in the response body. GitHub issue:
fixSeveral HTTP response headers are now consistently lowercase, and a previously missing content-type header was added to certain responses. GitHub issue:
featureA one-time warning is now logged when the HSTS or CSP headers are disabled. GitHub issue:
featureThe timestamp of the oldest message in a stream is now displayed on the stream page. GitHub issue:
featureMore plugin configuration keys, such as prometheus.ssl.password, now support encrypted values in rabbitmq.conf. GitHub issues:
fixmqtt.tcp_listen_options.* settings in rabbitmq.conf did not take effect due to a configuration translation issue. GitHub issue:
othercuttlefish was upgraded to 3.9.1
othercowboy was upgraded to 2.16.0
othercowlib was upgraded to 2.17.0
othergun was upgraded to 2.4.0
See how far your stack has drifted from upstream. Release data from vendors’ own sources · feed under CC BY 4.0 · Code under AGPL-3.0 Settings Feed status