CVE-2026-75516
HighCVSS 8.7Exploitation Probability (EPSS)
Low risk44th percentile - higher than 44% of all known CVEs
Summary
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.
Risk Assessment
An attacker can cause memory exhaustion of the client process, leading to application crashes and potentially disrupting services that depend on RabbitMQ.
Recommendation
It is recommended to immediately upgrade the RabbitMQ Java client library to version 5.34.0 or later to prevent DoS attacks via excessive memory allocation.
Other vulnerabilities in RabbitMQ Java client
See all- CVE-2026-69220High
RabbitMQ Java client library before 5.33.1 allows recursive calls to ValueReader.readFieldValue for AMQP types F and A without a nesting-depth limit. A malicious AMQP server or network intermediary can send about 580 nested table levels in the pre-authentication connection.start frame, causing StackOverflowError and terminating the client input processing thread, leading to denial of service.
- CVE-2026-69219High
RabbitMQ Java client library before 5.33.1 uses ValueReader.readBytes to accept a wire-declared contentLength below Integer.MAX_VALUE and allocate a byte array before checking the bytes available in the frame. A malicious AMQP peer can send a LongString field with type tag S and a declared length such as 0x7FFFFFFE, causing an approximately 2 GB allocation and OutOfMemoryError, potentially terminating the JVM and causing denial of service.
- CVE-2026-63337High
RabbitMQ Java client library before 5.33.0 passes a javaReturnType value from an untrusted system.describe response to Class.forName with initialization enabled. An attacker able to answer the JsonRpcClient request can select a class already present in the victim JVM and trigger its static initializer, potentially affecting confidentiality, integrity, and availability in the client process.
- CVE-2026-63336Medium
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.0, com.rabbitmq.client.ConnectionFactory.useSslProtocol() and ConnectionFactory.useSslProtocol(String) configure com.rabbitmq.client.TrustEverythingTrustManager and leave hostname verification disabled, causing arbitrary server certificates, including self-signed certificates, to be accepted. A network attacker able to intercept a TLS connection can impersonate the RabbitMQ broker, read protected AMQP traffic, and modify traffic without certificate or hostname validation. The fix changes the production TLS helpers to use the JVM default trust store and enables hostname verification, while retaining an explicitly named development-only no-verification helper. This issue is fixed in version 5.33.0.
- CVE-2026-63335Medium
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.31.0, inbound AMQP command assembly in src/main/java/com/rabbitmq/client/impl/CommandAssembler.java processes a content-bearing method and header whose remainingBodyBytes value is smaller than a following AMQP.FRAME_BODY payload. CommandAssembler.consumeBodyFrame subtracts the peer-controlled payload length before validating that it fits, drives remainingBodyBytes negative, and throws a raw UnsupportedOperationException instead of MalformedFrameException. A malicious or compromised broker peer can send this malformed sequence on an open nonzero channel to terminate frame processing and close the client connection, causing denial of service for work using that connection. This issue is fixed in version 5.31.0.
- CVE-2026-61634Unknown
The RabbitMQ Java client library before version 5.33.0 does not consistently apply the negotiated frame_max limit when validating broker-controlled frame payload lengths. A malicious broker can send a frame larger than allowed, causing the client to allocate and decode an invalid frame instead of rejecting it, leading to connection disruption and client-side denial of service.
Original NVD description (English source)
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.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

