CVE-2026-69220 Overview
CVE-2026-69220 is a denial-of-service vulnerability in the RabbitMQ Java client library affecting versions prior to 5.33.1. The flaw resides in src/main/java/com/rabbitmq/client/impl/ValueReader.java, where ValueReader.readTable and ValueReader.readArray recursively invoke ValueReader.readFieldValue without enforcing a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels inside the pre-authentication connection.start frame, staying within the default 131072-byte frame maximum. Parsing this payload triggers a StackOverflowError that terminates the client input processing thread. The vulnerability is classified under CWE-674: Uncontrolled Recursion.
Critical Impact
Unauthenticated attackers positioned as an AMQP server or network intermediary can crash the client's input processing thread pre-authentication, producing a reliable denial-of-service condition against JVM applications relying on the RabbitMQ Java client.
Affected Products
- RabbitMQ Java client library versions prior to 5.33.1
- Java and JVM-based applications using the affected client to connect to RabbitMQ nodes
- Deployments where the client may reach untrusted brokers or traverse untrusted network paths
Discovery Timeline
- 2026-08-18 - CVE-2026-69220 published to NVD
- 2026-08-18 - Last updated in NVD database
Technical Details for CVE-2026-69220
Vulnerability Analysis
The RabbitMQ Java client parses AMQP field values through a recursive descent implemented in ValueReader. When the reader encounters AMQP table type F or AMQP array type A, it calls readTable or readArray, both of which re-enter readFieldValue for each nested element. Prior to 5.33.1, no counter tracked recursion depth. An attacker constructs a connection.start frame containing tables nested roughly 580 levels deep. The payload comfortably fits within the default 131072-byte frame ceiling, so the client accepts and begins decoding it. Each nested level consumes a JVM stack frame; when the stack is exhausted, the JVM raises StackOverflowError. The unhandled error propagates out of the input processing thread, terminating it and cutting the client off from further message handling.
Root Cause
The root cause is uncontrolled recursion during AMQP field-value decoding. The pre-5.33.1 implementations of ValueReader.readTable and ValueReader.readArray accept arbitrarily deep nesting because there is no MAX_FIELD_VALUE_NESTING_DEPTH guard around the recursive call to readFieldValue.
Attack Vector
Exploitation requires an attacker to control an AMQP endpoint the client connects to, or to sit on the network path between client and broker. The malicious payload is delivered in the connection.start frame, meaning it is processed before authentication completes. No credentials, user interaction, or client-side action beyond initiating a connection is required.
{
private static final long INT_MASK = 0xffffffffL;
+ /** Maximum depth of nested tables/arrays a field value can contain. */
+ static final int MAX_FIELD_VALUE_NESTING_DEPTH = 32;
+
/**
* Protected API - Cast an int to a long without extending the
* sign bit of the int out into the high half of the long.
// Source: https://github.com/rabbitmq/rabbitmq-java-client/commit/09af76fce136f3136931654a0a1d43095c80e2f0
The patch introduces MAX_FIELD_VALUE_NESTING_DEPTH = 32 and enforces the limit during recursive decoding, rejecting payloads that exceed the cap before the stack is exhausted.
Detection Methods for CVE-2026-69220
Indicators of Compromise
- StackOverflowError exceptions originating in com.rabbitmq.client.impl.ValueReader.readFieldValue, readTable, or readArray in application logs
- Abrupt termination of the RabbitMQ client input processing thread followed by loss of AMQP message flow
- Repeated pre-authentication disconnects immediately after receiving a connection.start frame from a broker
Detection Strategies
- Inspect application logs for JVM stack traces referencing ValueReader recursion followed by connection loss.
- Monitor RabbitMQ Java client versions across the fleet and flag any deployment running a release below 5.33.1.
- Instrument AMQP client wrappers to record frame sizes and connection lifecycles, correlating anomalies with client thread death events.
Monitoring Recommendations
- Alert on unexpected client reconnect loops immediately after connection.start handshake attempts.
- Track outbound AMQP connections from JVM workloads to endpoints outside approved broker inventories.
- Capture and review Java thread dumps when message processing halts to confirm whether the input thread has terminated.
How to Mitigate CVE-2026-69220
Immediate Actions Required
- Upgrade the RabbitMQ Java client library to version 5.33.1 or later across all JVM applications.
- Restrict AMQP client egress to trusted broker endpoints and block connections to unknown hosts.
- Enforce TLS with certificate validation for AMQP connections to prevent network intermediaries from injecting malicious frames.
Patch Information
The fix ships in RabbitMQ Java Client Release v5.33.1. The relevant changes are tracked in Pull Request #2007, Pull Request #2008, and applied via commits 09af76f and db89e34. Refer to GitHub Security Advisory GHSA-93j5-89vc-pph4 for the full advisory.
Workarounds
- Deploy network controls that only permit AMQP connections to vetted brokers, minimizing exposure to malicious servers or on-path attackers.
- Terminate AMQP traffic through TLS with strict certificate pinning to reduce the risk of intermediary injection.
- Add supervision logic that restarts JVM workers when the RabbitMQ input processing thread dies unexpectedly, reducing service impact until patching is complete.
# Update Maven dependency to the fixed release
# pom.xml
# <dependency>
# <groupId>com.rabbitmq</groupId>
# <artifactId>amqp-client</artifactId>
# <version>5.33.1</version>
# </dependency>
mvn versions:set-property -Dproperty=rabbitmq.version -DnewVersion=5.33.1
mvn dependency:tree | grep amqp-client
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

