RabbitMQ 4.2.1 → 4.4.0
17 releases · 9 breaking changes · 109 security fixes · 79 advisories fixed
109security9breaking5deprecated209feature251fix
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
- medium CVE-2026-67226 Admin-only atom exhaustion: PUT /api/users tags list
- medium CVE-2026-67227 Atom exhaustion: to_atom on global-parameter :name
- 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
- medium CVE-2026-66072 Atom table exhaustion via stream `chunk_selector`
- 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
- medium CVE-2026-66073 Atom table exhaustion via management API node field
- medium CVE-2026-66074 ReDoS via management API ?name= filter
- high CVE-2026-67235 AMQP 0-9-1 body assembly never validates accumulated size
- medium CVE-2026-67233 Monitoring-tag user can DELETE shovels
- low CVE-2026-66075 Monitoring-tag user can restart federation links
- high CVE-2026-66077 Stored XSS via TLS peer-certificate DN in management UI
- low CVE-2026-66078 protected tag bypass via bulk-delete
- 8.2 CVE-2026-66079 Pre-auth AMQP 1.0 array32 zero-width element DoS
- critical CVE-2026-67231 Trust-store whitelist by Issuer+Serial only
- high CVE-2026-67232 Web-MQTT decompression bomb
- medium CVE-2026-67230 Web-STOMP unbounded pre-auth accumulation
- medium CVE-2026-66080 Super-stream partitions unbounded allocation
- low CVE-2026-67218 Super-stream HTTP creation skips configure-permission check
- medium CVE-2026-67219 Consistent-hash exchange unbounded weight
- medium CVE-2026-67220 JMS topic exchange erl_scan atom exhaustion
- medium CVE-2026-67221 AMQP 1.0 shovel status exposes plaintext URI passwords
- 5.9 CVE-2026-67222 list_to_atom on auth_mechanism URI tokens in amqp_client
- critical CVE-2026-67404 OAuth2 silent verify_none fallback for JWKS fetch
- low CVE-2026-67224 Admin path-traversal write via trace name
- medium CVE-2026-67225 Stream-protocol frame length never validated against frame_max
- medium CVE-2026-67405 CSWSH on Web-STOMP / Web-MQTT (no Origin validation)
- medium CVE-2026-67228 Atom exhaustion: to_atom on runtime-parameter component
- medium CVE-2026-66071 Atom exhaustion: OAuth2 JWT tag: scope values
- medium CVE-2026-67229 Admin-only atom exhaustion: atomize_keys on vhost metadata
- high CVE-2026-66070 CORS * reflects Origin with Allow-Credentials
- medium CVE-2026-66068 Shovel DEBUG log of full state exposes decrypted URIs
- low CVE-2026-66069 Monitoring-tag DELETE of auth-attempt metrics
- high CVE-2026-67238 Atom-table exhaustion via reply-to queue name decoding
- 2.3 CVE-2026-67240 ReDoS via AMQP 1.0 SQL filter LIKE wildcard
- medium CVE-2026-66067 Stream protocol skips per vhost per user connection limits
- low CVE-2026-66076 Cross-vhost quorum-queue status and stream tracking disclosure
- 8.7 CVE-2026-57219 Unauthenticated disclosure of OAuth client credentials via an HTTP API endpoint with certain less common OAuth 2 configurations
- 5.3 CVE-2026-57221 Passive queue/exchange declaration bypasses authorization checks, leaking queue metadata to unprivileged users
- 7.5 CVE-2026-57220 Stream listener does not enforce configured frame-size limit during authentication, permitting unauth'd mem-exhaust DoS
- 4.9 CVE-2026-57218 AMQP 0-9-1 in combination with OAuth 2: consumer persistence can lead to post-revocation message disclosure
- 7.0 CVE-2026-57217 Topic authorization can lead to cross-tenant routing-key bypass
- 6.8 CVE-2026-57216 AMQP 1.0, AMQP 0-9-1, Stream Protocol loopback enforcement can lead to remote guest sessions due to listener-address loopback checks
- 7.0 CVE-2026-57215 Direct-reply-to binding persistence can lead to unauthorized reply-channel injection and persistent phantom
- 7.1 CVE-2026-57214 Stored XSS in RabbitMQ management UI
- 5.7 CVE-2026-57213 Stored XSS in RabbitMQ federation management plugin via unsanitized consumer_tag rendering
- 7.1 CVE-2026-57212 RabbitMQ management HTTP API accepts request bodies larger than configured max_http_body_size
- 6.5 CVE-2026-57211 UNC SSRF affecting RabbitMQ management UI on Windows
- 5.3 CVE-2026-44838 RabbitMQ MQTT Topic Permission Authorization Bypass
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
- security Fixes CVE-2026-67240: ReDoS via AMQP 1.0 SQL filter LIKE wildcard in 4.2.7
- security Fixes CVE-2026-67226: Admin-only atom exhaustion: PUT /api/users tags list in 4.2.7
- security Fixes CVE-2026-67227: Atom exhaustion: to_atom on global-parameter :name in 4.2.7
- security Fixes CVE-2026-67228: Atom exhaustion: to_atom on runtime-parameter component in 4.2.7
- security Fixes CVE-2026-66069: Monitoring-tag DELETE of auth-attempt metrics in 4.2.7
- security Fixes CVE-2026-67238: Atom-table exhaustion via reply-to queue name decoding in 4.2.7
- security Fixes CVE-2026-66067: Stream protocol skips per vhost per user connection limits in 4.2.7
- security Fixes CVE-2026-57219: Unauthenticated disclosure of OAuth client credentials via an HTTP API endpoint with certain less common OAuth 2 configurations in 4.2.6
- security Fixes CVE-2026-66079: Pre-auth AMQP 1.0 array32 zero-width element DoS in 4.2.6
- security Fixes CVE-2026-57220: Stream listener does not enforce configured frame-size limit during authentication, permitting unauth'd mem-exhaust DoS in 4.2.6
- security Fixes CVE-2026-57217: Topic authorization can lead to cross-tenant routing-key bypass in 4.2.6
- security Fixes CVE-2026-57215: Direct-reply-to binding persistence can lead to unauthorized reply-channel injection and persistent phantom in 4.2.6
- security Fixes CVE-2026-57216: AMQP 1.0, AMQP 0-9-1, Stream Protocol loopback enforcement can lead to remote guest sessions due to listener-address loopback checks in 4.2.6
- security Fixes CVE-2026-57211: UNC SSRF affecting RabbitMQ management UI on Windows in 4.2.6
- security Fixes CVE-2026-67222: list_to_atom on auth_mechanism URI tokens in amqp_client in 4.2.6
- security Fixes CVE-2026-57221: Passive queue/exchange declaration bypasses authorization checks, leaking queue metadata to unprivileged users in 4.2.6
- security Fixes CVE-2026-57218: AMQP 0-9-1 in combination with OAuth 2: consumer persistence can lead to post-revocation message disclosure in 4.2.6
- security Fixes CVE-2026-66072: Atom table exhaustion via stream `chunk_selector` in 4.2.6
- security Fixes CVE-2026-66073: Atom table exhaustion via management API node field in 4.2.6
- security Fixes CVE-2026-66074: ReDoS via management API ?name= filter in 4.2.6
- security Fixes CVE-2026-67235: AMQP 0-9-1 body assembly never validates accumulated size in 4.2.6
- security Fixes CVE-2026-67233: Monitoring-tag user can DELETE shovels in 4.2.6
- security Fixes CVE-2026-66075: Monitoring-tag user can restart federation links in 4.2.6
- security Fixes CVE-2026-66077: Stored XSS via TLS peer-certificate DN in management UI in 4.2.6
- security Fixes CVE-2026-66078: protected tag bypass via bulk-delete in 4.2.6
- security Fixes CVE-2026-67231: Trust-store whitelist by Issuer+Serial only in 4.2.6
- security Fixes CVE-2026-67232: Web-MQTT decompression bomb in 4.2.6
- security Fixes CVE-2026-67230: Web-STOMP unbounded pre-auth accumulation in 4.2.6
- security Fixes CVE-2026-66080: Super-stream partitions unbounded allocation in 4.2.6
- security Fixes CVE-2026-67218: Super-stream HTTP creation skips configure-permission check in 4.2.6
- security Fixes CVE-2026-67219: Consistent-hash exchange unbounded weight in 4.2.6
- security Fixes CVE-2026-67220: JMS topic exchange erl_scan atom exhaustion in 4.2.6
- security Fixes CVE-2026-67221: AMQP 1.0 shovel status exposes plaintext URI passwords in 4.2.6
- security Fixes CVE-2026-67404: OAuth2 silent verify_none fallback for JWKS fetch in 4.2.6
- security Fixes CVE-2026-67224: Admin path-traversal write via trace name in 4.2.6
- security Fixes CVE-2026-67225: Stream-protocol frame length never validated against frame_max in 4.2.6
- security Fixes CVE-2026-67405: CSWSH on Web-STOMP / Web-MQTT (no Origin validation) in 4.2.6
- security Fixes CVE-2026-66071: Atom exhaustion: OAuth2 JWT tag: scope values in 4.2.6
- security Fixes CVE-2026-67229: Admin-only atom exhaustion: atomize_keys on vhost metadata in 4.2.6
- security Fixes CVE-2026-66070: CORS * reflects Origin with Allow-Credentials in 4.2.6
- security Fixes CVE-2026-66068: Shovel DEBUG log of full state exposes decrypted URIs in 4.2.6
- security Fixes CVE-2026-66076: Cross-vhost quorum-queue status and stream tracking disclosure in 4.2.6
- security Fixes CVE-2026-57214: Stored XSS in RabbitMQ management UI in 4.2.5
- security Fixes CVE-2026-57212: RabbitMQ management HTTP API accepts request bodies larger than configured max_http_body_size in 4.2.5
- security Fixes CVE-2026-57213: Stored XSS in RabbitMQ federation management plugin via unsanitized consumer_tag rendering in 4.2.5
- security Fixes CVE-2026-44838: RabbitMQ MQTT Topic Permission Authorization Bypass in 4.2.4
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 notesfixThe 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 notessecurityFixes 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 notessecurityFixes 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 notesbreakingcluster_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 notessecurityFixes 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 notessecurityFixes 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
securityFixes CVE-2026-67240: ReDoS via AMQP 1.0 SQL filter LIKE wildcard
securityFixes CVE-2026-67226: Admin-only atom exhaustion: PUT /api/users tags list
securityFixes CVE-2026-67227: Atom exhaustion: to_atom on global-parameter :name
securityFixes CVE-2026-67228: Atom exhaustion: to_atom on runtime-parameter component
securityFixes CVE-2026-66069: Monitoring-tag DELETE of auth-attempt metrics
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
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 issue:
fixClassic queue message store: garbage collection is now stopped cleanly during node shutdown. GitHub issue:
fixFixed a bug where quorum queue's at-least-once dead lettering could direct commands to the wrong member (replica). GitHub issue:
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:
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:
otherra was upgraded to 2.17.3
othercuttlefish was upgraded to 3.7.0
othercowboy was upgraded to 2.15.0
othercowlib was upgraded to 2.16.1
othergun was upgraded to 2.3.0
securityFixes CVE-2026-57219: Unauthenticated disclosure of OAuth client credentials via an HTTP API endpoint with certain less common OAuth 2 configurations
securityFixes CVE-2026-66079: Pre-auth AMQP 1.0 array32 zero-width element DoS
securityFixes CVE-2026-57220: Stream listener does not enforce configured frame-size limit during authentication, permitting unauth'd mem-exhaust DoS
securityFixes CVE-2026-57217: Topic authorization can lead to cross-tenant routing-key bypass
securityFixes CVE-2026-57215: Direct-reply-to binding persistence can lead to unauthorized reply-channel injection and persistent phantom
securityFixes CVE-2026-57216: AMQP 1.0, AMQP 0-9-1, Stream Protocol loopback enforcement can lead to remote guest sessions due to listener-address loopback checks
securityFixes CVE-2026-57211: UNC SSRF affecting RabbitMQ management UI on Windows
securityFixes CVE-2026-67222: list_to_atom on auth_mechanism URI tokens in amqp_client
securityFixes CVE-2026-57221: Passive queue/exchange declaration bypasses authorization checks, leaking queue metadata to unprivileged users
securityFixes CVE-2026-57218: AMQP 0-9-1 in combination with OAuth 2: consumer persistence can lead to post-revocation message disclosure
securityFixes CVE-2026-66072: Atom table exhaustion via stream `chunk_selector`
securityFixes CVE-2026-66073: Atom table exhaustion via management API node field
securityFixes CVE-2026-66074: ReDoS via management API ?name= filter
securityFixes CVE-2026-67235: AMQP 0-9-1 body assembly never validates accumulated size
securityFixes CVE-2026-67233: Monitoring-tag user can DELETE shovels
securityFixes CVE-2026-66075: Monitoring-tag user can restart federation links
securityFixes CVE-2026-66077: Stored XSS via TLS peer-certificate DN in management UI
securityFixes CVE-2026-66078: protected tag bypass via bulk-delete
securityFixes CVE-2026-67231: Trust-store whitelist by Issuer+Serial only
securityFixes CVE-2026-67232: Web-MQTT decompression bomb
securityFixes CVE-2026-67230: Web-STOMP unbounded pre-auth accumulation
securityFixes CVE-2026-66080: Super-stream partitions unbounded allocation
securityFixes CVE-2026-67218: Super-stream HTTP creation skips configure-permission check
securityFixes CVE-2026-67219: Consistent-hash exchange unbounded weight
securityFixes CVE-2026-67220: JMS topic exchange erl_scan atom exhaustion
securityFixes CVE-2026-67221: AMQP 1.0 shovel status exposes plaintext URI passwords
securityFixes CVE-2026-67404: OAuth2 silent verify_none fallback for JWKS fetch
securityFixes CVE-2026-67224: Admin path-traversal write via trace name
securityFixes CVE-2026-67225: Stream-protocol frame length never validated against frame_max
securityFixes CVE-2026-67405: CSWSH on Web-STOMP / Web-MQTT (no Origin validation)
securityFixes CVE-2026-66071: Atom exhaustion: OAuth2 JWT tag: scope values
securityFixes CVE-2026-67229: Admin-only atom exhaustion: atomize_keys on vhost metadata
securityFixes CVE-2026-66070: CORS * reflects Origin with Allow-Credentials
securityFixes CVE-2026-66068: Shovel DEBUG log of full state exposes decrypted URIs
securityFixes CVE-2026-66076: Cross-vhost quorum-queue status and stream tracking disclosure
fixQuorum queues: get_checked_out aux command could return messages in incorrect order GitHub issue:
fixrabbitmqctl forget_cluster_node now removes all quorum queue and stream members (replicas) before proceeding to leave the metadata store cluster. This order minimizes the risk of some replicas being left behind on the leaving node. GitHub issue:
fixThe channel limit exceeded error message now correctly identifies the per-user limit as the reason GitHub issue:
fixAMQP 0-9-1: configure permission checks now apply to passive queue and exchange declarations, matching the behavior of their regular counterparts
fixKhepri: missing keys are now correctly distinguished from errors in certain internal operations, avoiding spurious error-level log messages GitHub issue:
+35 more items in the release notessecurityFixes CVE-2026-57214: Stored XSS in RabbitMQ management UI
securityFixes CVE-2026-57212: RabbitMQ management HTTP API accepts request bodies larger than configured max_http_body_size
securityFixes CVE-2026-57213: Stored XSS in RabbitMQ federation management plugin via unsanitized consumer_tag rendering
fixClassic queues could terminate and restart during recovery in certain rare conditions. GitHub issue:
fixQuorum queues could incorrectly reject messages during deletion. GitHub issue:
fixPeer discovery could run into a crash when rabbit_nodes:list_members/0 returned an empty list due to an error or a timeout. GitHub issue:
fixDefinition import now strips a leading UTF-8 BOM if the input file has one. GitHub issues:
fixExceptions thrown by decorator callbacks (such as those used by federation) during policy change notifications were silently suppressed. They are now logged. GitHub issue:
featureImproved Mnesia-to-Khepri migration throughput. GitHub issue:
featureAdditional aten settings are now exposed in rabbitmq.conf. Previously only the poll interval was configurable. GitHub issue:
fixparse_command/1 crashed with a function_clause error when receiving a zero-size frame, such as those sent by load balancer probes or port scanners. GitHub issue:
fixrabbit_stream_manager could crash with a case_clause error when a stream declaration failed due to a metadata store timeout. GitHub issue:
featureLess log noise from load balancer and port scanner probes (that do not perform an AMQP 1.0 or AMQP 0-9-1 handshake) GitHub issue:
fixRequest bodies above the configured maximum limit are now rejected earlier. GitHub issue:
fixValidation improvements for several API endpoints. They now ignore node names that do not refer to existing cluster members, reject unknown fields, etc. GitHub issues:
fixQueue API responses now include policy-related fields (policy, operator_policy, effective_policy_definition) and delivery_limit when management stats collection is disabled via rabbitmq.conf. GitHub issues:
fixrabbitmq-diagnostics status and rabbitmqctl status crashed when targeting a node in maintenance mode because vm_memory_high_watermark was nil (the vm_memory_monitor process does not run in that state). GitHub issues:
featurerabbitmq-plugins now produces a clearer error message when run by a non-root user. GitHub issue:
fixThe x-internal-purpose and consumer_timeout argument values are now correctly escaped. GitHub issues:
fixPer-object metrics endpoint (/metrics/per-object) no longer emits duplicate HELP and TYPE metadata lines for Raft metrics when both quorum queues and Khepri are in use, which caused scraper parser errors. GitHub issues:
featureThe Overview dashboard's "TCP sockets available" panel was replaced with a "File descriptors available" panel that uses two modern metrics, rabbitmq_process_max_fds and rabbitmq_process_open_fds. GitHub issues:
fixAn attempt to declare a dynamic shovel with multiple src-queue-args or dest-queue-args values configured could run into an exception during validation. GitHub issues:
fixA terminated heartbeat monitor process could cause a crash during connection shutdown. GitHub issue:
securityFixes CVE-2026-44838: RabbitMQ MQTT Topic Permission Authorization Bypass
fixClassic queue message store could run into an exception when a file was concurrently deleted by a compaction operation. GitHub issue:
fixrabbit_quorum_queue:stat/2 could fail when the quorum queue leader was undefined. GitHub issues:
fixThe amq.rabbitmq.log exchange is now declared unconditionally at node boot, avoiding a potential deadlock between feature flag enablement and logging to the exchange sink. GitHub issue:
fixVariable interpolation in topic permissions now. escapes the special regular expression characters before interpolation. GitHub issue:
fixSingle Active Consumer coordinator could deadlock when a consumer being deactivated would lose its connection, leaving the consumer group without an active consumer. GitHub issue:
fixThe Policies page in the management UI incorrectly displayed quorum queue arguments twice on the declaration form in place of stream queue arguments. GitHub issue:
fixThe clustering listener now correctly reports its TLS enablement status. GitHub issue:
featureGET /api/overview and GET /api/nodes now report crypto library (such as OpenSSL) version. GitHub issue:
featureRabbitMQ and Erlang/OTP versions are now included in GET /api/nodes responses. GitHub issue:
featureLogin page usability improvements: autofocus on the username field and autocomplete attributes for browser password manager integration. GitHub issue:
featurerabbitmq-upgrade has_reached_target_cluster_size is a new command that checks whether the cluster has reached its target size, as provided in rabbitmq.conf. This is useful for automating rolling upgrades, particularly on Kubernetes. GitHub issue:
fixStopping and deleting a shovel could fail with a badmatch exception when the underlying worker process no longer existed. GitHub issue:
featureHTTPS endpoint requests now have a configurable timeout (20 seconds by default), preventing the plugin from hanging indefinitely when a provider fails to respond. GitHub issues:
fixNodes on EC2 instances in non-running states (stopping, stopped, shutting-down, terminated) are now filtered out from peer discovery results. GitHub issue:
featureMultiple hostname resolution paths can now be configured. This is an upgrade pathway for scenarios where resolution hostnames have to change. GitHub issue:
fixThe plugin now uses UTF-8 encoding for traced messages. GitHub issue:
otherra was upgraded to 2.17.2
fixDefault queue type handling is now more defensive, avoiding an issue where attempts to declare a queue in a virtual host without any DQT set would result in a PRECONDITION_FAILED exception instead of falling back to the classic queue type for DQT. GitHub issues:
fixClassic queue recovery on Windows could fail due to an OS-specific file locking behavior. Such failures are now retried in two more contexts. GitHub issue:
fixCertain exchange update operations in Khepri could cause severe contention. GitHub issue:
fixTopic exchange binding deletions could leave orphaned trie edges in the Khepri projection, potentially causing a slowly creeping memory leak. GitHub issue:
fixWhen a client that owns an exclusive queue disconnects and immediately reconnects and redeclares the same queue (under the same name), RabbitMQ node could delete the new queue depending on the timing of events. Previously the only workaround was to use exclusive server-named queues for clients…
fix"Other ETS" and "Other system" memory metrics could end up being reported as negative values due to concurrent ETS table updates, deletion and creation on the node. GitHub issue:
fixmirrored_supervisor:child/2 could fail with a badmatch exception when a significant enough number of shovels (or federation links) was removed. GitHub issue:
fixQuorum queue could run into a logging exception during node drain. GitHub issue:
featureTopic binding deletion in Khepri is now significantly more efficient. Deleting 100k topic bindings could previously take up to 30 minutes and now takes some 3-4 seconds. GitHub issue:
featureIt is now possible to rabbitmq-queues shrink only a subset of quorum queues on a node using a pattern (a regex). GitHub issue:
featureCRL (Certificate Revocation List) cache can now be configured via rabbitmq.conf. GitHub issues:
fixRestored exchange federation compatibility in mixed 4.2.x/4.1.x multi-node clusters. GitHub issue:
featureFederation links and their connections are now stopped in parallel. This significantly improves shutdown time for nodes with many (into thousands) federation links. GitHub issue:
featureFederation links no longer restart during plugin or node shutdown. For nodes with hundreds or thousands of federation links, link recovery could significantly delay node shutdown. GitHub issue:
featureFederation links use AMQP 0-9-1 connections to remote nodes (clusters). Previously the timeout used when those connections are closed was fixed to 10 seconds. Now it is configurable via rabbitmq.conf in milliseconds: ini # 3 seconds for exchange federation…
featurerabbitmq-streams grow and rabbitmq-streams shrink are new commands that mirror existing rabbitmq-queues grow and rabbitmq-queues shrink functionality for streams. GitHub issue:
featureA new configuration option, mqtt.disconnect_on_unauthorized, controls whether MQTT connections are closed upon authorization failures (for example, an attempt to consume from a topic the client has no permission for). When set to false, the connection remains open and an appropriate protocol-level…
fixOAuth 2: preferred_auth_mechanism and strict_auth_mechanism are no longer validated when not used (configured). GitHub issue:
fixWhen credentials were provided, the password was double-encrypted, resulting in etcd authentication failures. GitHub issue:
fixThe customize_hostname_check TLS option was unintentionally ignored. GitHub issue:
otherkhepri was upgraded to 0.17.4
otherkhepri_mnesia_migration was upgraded to 0.8.1
otherosiris was upgraded to 1.10.3
fixFixes a binding deletion-related memory leak in Khepri. This leak primarily affected systems with high binding churn. GitHub issue:
fixCorrected a performance regression around metric collection that could have a meaningful impact on quorum queues. GitHub issue: rabbitmq/seshat#16
fixAMQP 1.0 link error frames did not have settlement set in certain failure scenarios, namely when attaching a link failed due to a missing source (queue or stream). GitHub issue:
fixAMQP 1.0 clients that publish messages without a body now get a clearer error message. Messages without a body explicitly violate the AMQP 1.0 specification. GitHub issue:
fixDefault operator policy pre-configuration in rabbitmq.conf were unintentionally missing a key, default_policies.operator.$id.apply_to, for controlling what objects the policy applies to. GitHub issue:
fixDefinition import is now more defensive when importing exchanges. GitHub issue:
featureMore efficient Khepri (metadata store) querying. GitHub issue: rabbitmq/khepri#349
featureRemoved a cool down delay between stream chunk redelivery attempts. GitHub issue:
featureStream data directory can now be configured via rabbitmq.conf. GitHub issue:
featureStream replication: IP address family (IPv4 or IPv6) can now be configured via rabbitmq.conf. GitHub issue:
fixWhen multiple resource server IDs are configured, management UI login screen now provides a way to pre-select a specific resource ID before logging in. As part of this change, when multiple resource server IDs are configured, their order stored internally now reflects that in rabbitmq.conf. GitHub…
fixGET /api/deprecated-features/used no longer returns an empty state field. GitHub issue:
fixFeature flag icons now contrast well when the dark mode is used in the UI. GitHub issue:
fixCorrected an invalid apply_to value (classic_queue instead of classic_queues) on the policy declaration form. Declaring a policy "directly" via the HTTP API was not affected. GitHub issue:
featureQueue declaration form fields were reordered so that the queue type dropdown comes before the virtual host. GitHub issue:
featureThe order of configured OAuth 2 resource servers is now preserved in the management UI. Additionally, a resource server ID can now be pre-selected during service-provider-initiated logons. GitHub issue:
featureGET /metrics/per-object responses on systems with thousands of objections now takes 20-30% less time. GitHub issue:
featurePrometheus scraping endpoint responses are now streamed instead of being fully buffered before transmission. This reduces memory peak footprint and improves response times for nodes with a larger number of objects. GitHub issue:
fixFixed a dependency loading issue with ddskerl (a Prometheus library dependency) that could cause stop_app to fail. GitHub issue:
fixrabbitmq-queues quorum_status could run into an exception when a quorum queue member dies before recording any metrics. GitHub issue:
fixThe plugin now supports the mqttv3.1 WebSocket subprotocol in addition to mqtt, improving compatibility with older MQTT clients. GitHub issue:
fixThe plugin now uses IPv6 discovery endpoints in IPv6-only environments. GitHub issue:
fixTrace files served via the management UI now include proper UTF-8 charset specification. GitHub issue:
fixThe plugin now merges user-provided TLS options with the options it needs in a safer manner. GitHub issue:
otherkhepri was upgraded to 0.17.3
otherseshat was upgraded to 1.0.1