Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain MITM position or lure client to rogue broker
-
DeliveryNegotiate frameMax=0 in Connection.Tune
-
ExploitSend oversized AMQP frame
-
ExecutionClient pre-allocates huge byte array
-
ImpactJVM memory exhaustion crashes client
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to be either the AMQP server the client connects to (a malicious/rogue broker) or an active man-in-the-middle on the AMQP connection who can alter the Connection.Tune frame and inject frames. The vulnerable state arises with DEFAULT configuration: when both the client's ConnectionFactory.DEFAULT_FRAME_MAX (0) and the server-negotiated frameMax are 0, the maxInboundMessageBodySize cap is silently disabled. LIMITING FACTORS: the victim must initiate an outbound AMQP connection to attacker-influenced infrastructure or the attacker must hold an in-path network position (TLS, if enforced and validated, would blunt the MITM path); there is no way to trigger this against a passive, correctly-connected client, and impact is limited to crashing the client process (no code execution, no data exposure). Affected: rabbitmq-java-client prior to 5.34.0. |
| Impact | The vendor scores this 8.7 (CVSS 4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) as a pure availability DoS (CWE-770 unbounded allocation), and the impact is real - an oversized frame causes Frame.readFrom() to allocate a large byte array before validation, terminating the JVM client via memory exhaustion. However, this is a CLIENT-library flaw, not a listening-service flaw: exploitation requires the victim application to connect to a malicious/rogue AMQP server, OR an active man-in-the-middle able to modify the Connection.Tune frame and inject frames. That threat model makes AT:N and the 'network, no-requirements' framing optimistic - a MITM position or the ability to redirect a client to an attacker broker is a meaningful precondition, so realistic difficulty is closer to AC:H/AT:P and my adjusted severity is nearer 7.x than 8.7. No EPSS, KEV, or SSVC data is provided, and no public POC is identified - only the fix PRs/commits and a GHSA advisory. Signals are consistent (confirmed patch, clear root cause in code) but point to a targeted MITM/rogue-broker scenario rather than mass exploitation. Impact is confined to availability; there is no confidentiality or integrity exposure (VC:N/VI:N). |
| Exploit ScenarioDerived | An attacker who controls an AMQP endpoint the client connects to (a rogue broker), or who sits in-path on the AMQP connection, negotiates a frameMax of 0 in Connection.Tune (the client and server defaults) so the client's maxInboundMessageBodySize cap is disabled. The attacker then sends a single oversized frame of any type, forcing Frame.readFrom() to pre-allocate a huge byte array and crash the JVM through memory exhaustion. No public exploit code is identified, but the fix commits and a detailed regression test (InboundFrameMax) publicly demonstrate the trigger conditions. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
Memory exhaustion in the RabbitMQ Java client (all versions prior to 5.34.0) lets a rogue AMQP broker or an in-path attacker crash the JVM host application: when both the client's default ConnectionFactory.DEFAULT_FRAME_MAX and the server's Connection.Tune frame_max negotiate to 0, the library's maxInboundMessageBodySize cap is silently discarded and an oversized inbound frame is allocated without limit. Attackers cannot force this against a passive, correctly connected client - the victim must connect outbound to attacker-influenced infrastructure, or the attacker must hold a man-in-the-middle position able to rewrite the Connection.Tune frame and inject frames, which the vendor's CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) and our assessed CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H) both treat as an unauthenticated, availability-only denial of service with no code execution or data exposure. Impact is limited to terminating the client process via heap exhaustion, and there is no public exploit identified at time of analysis and no CISA KEV listing; vendor-released patch: 5.34.0.
RemediationAI
Upgrade the RabbitMQ Java client to 5.34.0 or later (released as tag v5.34.0), which is the vendor-released patch containing the Utils.inboundFrameMax() fix and the negative-frameMax validation in AMQConnection.start(); the two upstream commits 6d7c2bfe89796ca34d3531098fb59dd657fea39e and e7f10bf99aee103dd9f64b3e52a725fc9f9d3763 and pull requests #2015/#2016 correspond to this change, and the vendor advisory is at https://github.com/rabbitmq/rabbitmq-java-client/security/advisories/GHSA-jh4v-gfqj-7rhx. Until upgrade is possible, the highest-value compensating control is eliminating the two preconditions rather than the bug: enforce TLS with full certificate and hostname validation on every AMQP connection so an in-path attacker cannot rewrite Connection.Tune or inject frames, accepting the operational cost of certificate lifecycle management; and restrict/allowlist outbound AMQP destinations (host, port, IP) via egress firewall or network policy so the client cannot be pointed at a rogue broker, at the cost of reduced deployment flexibility for dynamic broker topologies. A partial code-level workaround is to call ConnectionFactory.setRequestedFrameMax() with a non-zero value (for example 131072) so that negotiation against a broker declaring frame_max 0 cannot resolve to 0 and the maxInboundMessageBodySize cap remains effective via Math.min(); this trades away some frame-size flexibility and does not protect configurations where a malicious peer can force a zero negotiation by other means, so it should be treated as a temporary measure alongside a nonzero maxInboundMessageBodySize. Additionally, cap the JVM heap (-Xmx) and alert on rapid heap growth or OutOfMemoryError events to detect and contain the crash, and note that disabling maxInboundMessageBodySize entirely is not a valid workaround since it removes the very limit the attacker benefits from removing.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
AMQP 0-9-1 connection setup negotiates link parameters through the Connection.Tune / Connection.Tune-Ok handshake, where a frame_max value of 0 semantically means "no limit" rather than a literal byte count - and the RabbitMQ client's own ConnectionFactory.DEFAULT_FRAME_MAX is 0, so the default configuration naturally yields a negotiated 0. Prior to the fix, AMQConnection.start() computed the effective inbound limit as Math.min(this.maxInboundMessageBodySize, frameMax) and handed the result to Utils.framePayloadLimit(int), which converts 0 into Integer.MAX_VALUE. The min() therefore collapsed to 0 whenever the server also declared 0, the configured maxInboundMessageBodySize protection was effectively erased, and Frame.readFrom() allocated a byte array sized by the frame's declared payload length before any content-level validation occurred. The vulnerability class is CWE-770 (Allocation of Resources Without Limits or Throttling): a missing guard around an allocation driven by a remotely supplied length field. The upstream fix (PRs #2015 and #2016, commits 6d7c2bfe89796ca34d3531098fb59dd657fea39e and e7f10bf99aee103dd9f64b3e52a725fc9f9d3763) introduces Utils.inboundFrameMax(int, int), which maps a negotiated frameMax of 0 to Integer.MAX_VALUE before applying Math.min(), so the body cap survives unlimited-frame negotiation, and adds a negative-frameMax guard in start() that raises IllegalArgumentException. Affected CPE: cpe:2.3:a:rabbitmq:rabbitmq-java-client:*:*:*:*:*:*:*:*.
Know when Rabbitmq gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Client-side flaw needing a rogue broker or MITM able to alter Connection.Tune, so AC:H; no auth (PR:N); availability-only crash (A:H), no C/I impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.34.0, AMQConnection.start() applies Math.min(maxInboundMessageBodySize, frameMax) after Connection.Tune negotiation even though AMQP defines frameMax value zero as unlimited and ConnectionFactory.DEFAULT_FRAME_MAX is zero. When the client default and server-negotiated value are both zero, the result is passed to Utils.framePayloadLimit(int), which interprets zero as Integer.MAX_VALUE and disables the configured maxInboundMessageBodySize cap. A malicious AMQP server, or a man-in-the-middle attacker able to modify Connection.Tune and inject frames into the connection, can then send an oversized frame of any frame type, causing Frame.readFrom() to allocate a large byte array before content-level validation and potentially terminate the client process through memory exhaustion. This issue is fixed in version 5.34.0.
Blast Radius
ecosystem impact- 94 maven packages depend on com.rabbitmq:amqp-client (39 direct, 55 indirect)
Ecosystem-wide dependent count for version 5.34.0.
Technical POC Analysis
CWE-770 (Allocation of Resources Without Limits or Throttling), specifically a frame-layer out-of-memory condition in the RabbitMQ Java client (com.rabbitmq:amqp-client).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The RabbitMQ Java client library - embedded in Java applications that connect to AMQP brokers - can be driven into unbounded memory consumption, terminating the host application's JVM. Any business service built on messaging (payments, order processing, event pipelines) that connects to a broker outside its direct administrative control, or across a network where an adversary can position itself in-path, is exposed to an availability-only outage. Leadership should care because there is no vendor-released fix at this time, remediation depends on network and configuration controls rather than a patch, and a crashed messaging client can cascade into downstream transaction failures.
No vendor-released patch identified at time of analysis; interim mitigations: explicitly configure a non-zero ConnectionFactory frame_max so the inbound message body size cap is never discarded during frame negotiation; enforce TLS with strict certificate and hostname validation on all broker connections to defeat in-path Connection.Tune rewriting and frame injection; restrict outbound AMQP ports 5671/5672 to an allowlist of trusted broker endpoints; avoid or tightly control outbound connections to brokers outside organizational control; bound JVM heap with -Xmx and monitor heap growth with automated alerting to contain and detect resource exhaustion. Exploitation requires the victim to connect outbound to attacker-influenced infrastructure or an adversary to hold a man-in-the-middle position; this is an unauthenticated (CVSS PR:N), availability-only denial of service with no code execution or data exposure, and no public exploit identified at time of analysis.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Sensitive credential disclosure in RabbitMQ affects installations running the management plugin with OAuth 2 configured
Pivotal RabbitMQ, versions 3.7.x prior to 3.7.21 and 3.8.x prior to 3.8.1, and RabbitMQ for Pivotal Platform, 1.16.x ver
Denial of service in the RabbitMQ Java client library (com.rabbitmq:amqp-client ≤ 5.30.0) allows a malicious or compromi
An issue was discovered in Pivotal RabbitMQ 3.x before 3.5.8 and 3.6.x before 3.6.6 and RabbitMQ for PCF 1.5.x before 1.
Parsing desynchronization in the RabbitMQ amqp091-go AMQP 0.9.1 client library before 1.13.0 lets a malicious or comprom
RabbitMQ's amqp091-go Go client library, in all versions before 1.13.0, builds TLS configuration from amqps:// URIs with
RabbitMQ is a multi-protocol messaging broker. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploita
RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b
Silent AMQP 0.9.1 metadata corruption in the RabbitMQ amqp091-go Go client library prior to 1.13.0 lets an application t
TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged
TLS certificate validation is completely bypassed in the RabbitMQ Java client library (`com.rabbitmq:amqp-client`) prior
Denial of service in the official RabbitMQ Go client library amqp091-go (versions prior to 1.13.0): a malicious, comprom
EUVD-2026-80941
GHSA-jh4v-gfqj-7rhx
NVD
CVE.org
EPSS
Exploit-DB