CVE-2026-69220
RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
CVE-2026-69220- CVSS 4.0
- 8.7 High
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 - Weakness
- CWE-674
- Updated
- 2026-11-02
EUVDEUVD-2026-61042
8.7
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
EUVD-2026-61042- CVSS 4.0
- 8.7 High
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-93j5-89vc-pph4
8.7
RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS
Summary
ValueReader.readTable() and readArray() recursively call readFieldValue() with no depth limit. A malicious AMQP peer can crash the client JVM by sending a deeply nested table structure.
Vulnerable Code
src/main/java/com/rabbitmq/client/impl/ValueReader.java lines 139-155 and 237-249:
private static Map<String, Object> readTable(DataInputStream in) throws IOException {
long tableLength = unsignedExtend(in.readInt());
// ...
while(tableIn.available() > 0) {
String name = readShortstr(tableIn);
Object value = readFieldValue(tableIn); // recursive call
}
}
static Object readFieldValue(DataInputStream in) throws IOException {
switch(in.readUnsignedByte()) {
case 'F': value = readTable(in); // mutual recursion
case 'A': value = readArray(in); // mutual recursion
}
}
Attack Scenario
A malicious AMQP server (or MitM) sends a connection.start frame with ~580 levels of nested tables. Each level costs ~7 bytes (4-byte length + 1-byte key length + 1-byte key + 1-byte type tag), totaling ~4060 bytes within the 131,072 byte max frame size. With the default JVM stack (~512KB, ~864 bytes/frame), this triggers StackOverflowError, killing the I/O thread.
Exploitable pre-authentication since connection.start is the very first server frame.
Impact
Denial of service. StackOverflowError kills the client I/O thread.
CWE
CWE-674: Uncontrolled Recursion
Remediation
Add a depth counter to readTable/readArray/readFieldValue and throw MalformedFrameException when exceeding a threshold (e.g., 32).
- Record
GHSA-93j5-89vc-pph4- CVSS 4.0
- 8.7 High
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 - Weakness
- CWE-674
- Updated
- 2026-11-02
NVD
8.7
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
CVE-2026-69220- CVSS 4.0
- 8.7 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-674
- Updated
- 2026-11-02
OSV
8.7
RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
CVE-2026-69220- CVSS 4.0
- 8.7 High
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 - Weakness
- CWE-674
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-69220
8.7
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
DEBIAN-CVE-2026-69220- CVSS 4.0
- 8.7 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
Show 11 moreShow less
OSVGHSA-93j5-89vc-pph4
8.7
RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS
Summary
ValueReader.readTable() and readArray() recursively call readFieldValue() with no depth limit. A malicious AMQP peer can crash the client JVM by sending a deeply nested table structure.
Vulnerable Code
src/main/java/com/rabbitmq/client/impl/ValueReader.java lines 139-155 and 237-249:
private static Map<String, Object> readTable(DataInputStream in) throws IOException {
long tableLength = unsignedExtend(in.readInt());
// ...
while(tableIn.available() > 0) {
String name = readShortstr(tableIn);
Object value = readFieldValue(tableIn); // recursive call
}
}
static Object readFieldValue(DataInputStream in) throws IOException {
switch(in.readUnsignedByte()) {
case 'F': value = readTable(in); // mutual recursion
case 'A': value = readArray(in); // mutual recursion
}
}
Attack Scenario
A malicious AMQP server (or MitM) sends a connection.start frame with ~580 levels of nested tables. Each level costs ~7 bytes (4-byte length + 1-byte key length + 1-byte key + 1-byte type tag), totaling ~4060 bytes within the 131,072 byte max frame size. With the default JVM stack (~512KB, ~864 bytes/frame), this triggers StackOverflowError, killing the I/O thread.
Exploitable pre-authentication since connection.start is the very first server frame.
Impact
Denial of service. StackOverflowError kills the client I/O thread.
CWE
CWE-674: Uncontrolled Recursion
Remediation
Add a depth counter to readTable/readArray/readFieldValue and throw MalformedFrameException when exceeding a threshold (e.g., 32).
- Record
GHSA-93j5-89vc-pph4- CVSS 4.0
- 8.7 High
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 - Weakness
- CWE-674
- Updated
- 2026-11-02
OSVOESA-2026-4112
8.7
rabbitmq-java-client security update
The library allows Java code to interface to AMQP servers. Please see the specification page for more information on AMQP inter-operation and standards-conformance You will need an AMQP server, such as our very own RabbitMQ server, to use with the client library.
Security Fix(es):
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. maxBodyLebgth was not used when receiving Message objects. Attackers could send a very large Message causing a memory overflow and triggering an OOM Error. Users of RabbitMQ may suffer from DoS attacks from RabbitMQ Java client which will ultimately exhaust the memory of the consumer. This vulnerability was patched in version 5.18.0.(CVE-2023-46120)
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.0, the AMQP connection tuning path records the negotiated AMQP frame_max value, but src/main/java/com/rabbitmq/client/impl/SocketFrameHandler.java and NettyFrameHandlerFactory continue to validate broker-controlled frame payload lengths against maxInboundMessageBodySize because the negotiated limit is not applied consistently through setMaxInboundFramePayloadSize. A malicious or compromised broker can send a method frame larger than the negotiated frame_max during or after connection establishment, causing the client to allocate and decode a protocol-invalid frame instead of rejecting it with MalformedFrameException. The protocol violation can disrupt the affected connection and cause client-side denial of service. This issue is fixed in version 5.33.0.(CVE-2026-61634)
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-63335)
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-63336)
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java 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 or byte-array field with type tag S and a declared length such as 0x7FFFFFFE during the pre-authentication connection.start server-properties table, causing an approximately 2 GB allocation and…
- Record
OESA-2026-4112- CVSS 4.0
- 8.7 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-69220
8.7
The RabbitMQ Java client library allows Java and JVM-based applications to connect to and interact with RabbitMQ nodes. Prior to 5.33.1, src/main/java/com/rabbitmq/client/impl/ValueReader.java permits ValueReader.readTable and ValueReader.readArray to call ValueReader.readFieldValue recursively for AMQP table type F and AMQP array type A values without a nesting-depth limit. A malicious AMQP server or network intermediary can send approximately 580 nested table levels in the pre-authentication connection.start frame, fitting within the default 131072-byte frame maximum, to trigger StackOverflowError. The error terminates the client input processing thread and causes denial of service. This issue is fixed in version 5.33.1.
- Record
UBUNTU-CVE-2026-69220- CVSS 4.0
- 8.7 High
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 - Updated
- 2026-11-02
OSVCLSA-2026-1788776288 No score
TuxCare security update for com.rabbitmq:amqp-client (2 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 2 CVEs. Fixed in 5.19.0-tuxcare.1.
- Record
CLSA-2026-1788776288- Updated
- 2026-11-02
OSVCLSA-2026-1789206834 No score
TuxCare security update for com.rabbitmq:amqp-client (3 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 3 CVEs. Fixed in 5.21.0-tuxcare.1.
- Record
CLSA-2026-1789206834- Updated
- 2026-11-02
OSVCLSA-2026-1792591661 No score
TuxCare security update for com.rabbitmq:amqp-client (4 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 4 CVEs. Fixed in 5.7.3-tuxcare.1.
- Record
CLSA-2026-1792591661- Updated
- 2026-11-02
OSVCLSA-2026-1792593109 No score
TuxCare security update for com.rabbitmq:amqp-client (4 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 4 CVEs. Fixed in 5.4.3-tuxcare.1.
- Record
CLSA-2026-1792593109- Updated
- 2026-11-02
OSVCLSA-2026-1792593187 No score
TuxCare security update for com.rabbitmq:amqp-client (4 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 4 CVEs. Fixed in 5.5.3-tuxcare.1.
- Record
CLSA-2026-1792593187- Updated
- 2026-11-02
OSVCLSA-2026-1792593363 No score
TuxCare security update for com.rabbitmq:amqp-client (2 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 2 CVEs. Fixed in 4.0.3-tuxcare.1.
- Record
CLSA-2026-1792593363- Updated
- 2026-11-02
OSVCLSA-2026-1792593410 No score
TuxCare security update for com.rabbitmq:amqp-client (2 CVEs)
TuxCare rebuilt com.rabbitmq:amqp-client to address 2 CVEs. Fixed in 5.5.0-tuxcare.1.
- Record
CLSA-2026-1792593410- Updated
- 2026-11-02
OSVROOT-APP-MAVEN-CVE-2026-69220 No score
CVE-2026-69220 in com.rabbitmq:amqp-client - Patched by Root
Root has patched CVE-2026-69220 in the com.rabbitmq:amqp-client package for Root:Maven. Multiple fixed versions available.
- Record
ROOT-APP-MAVEN-CVE-2026-69220- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
com.rabbitmq:amqp-clientMaven |
through 5.33.0 | 5.33.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.19.0 up to 5.19.0-tuxcare.1 | 5.19.0-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.21.0 up to 5.21.0-tuxcare.1 | 5.21.0-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.7.3 up to 5.7.3-tuxcare.1 | 5.7.3-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.4.3 up to 5.4.3-tuxcare.1 | 5.4.3-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.5.3 up to 5.5.3-tuxcare.1 | 5.5.3-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
4.0.3 up to 4.0.3-tuxcare.1 | 4.0.3-tuxcare.1 |
com.rabbitmq:amqp-clientTuxCare:Maven |
5.5.0 up to 5.5.0-tuxcare.1 | 5.5.0-tuxcare.1 |
rabbitmq-java-clientDebian:12 |
All versions, plus listed versions 5.0.0-1.15.0.0-2 |
None known |
rabbitmq-java-clientDebian:13 |
All versions, plus listed versions 5.0.0-1.15.0.0-2 |
None known |
Show 14 moreShow less
| Package | Affected | Fixed |
|---|---|---|
com.rabbitmq:amqp-clientMaven |
before 5.33.1, plus listed versions 1.3.01.5.41.5.51.6.01.7.2 Show 45 moreShow less1.8.01.8.12.0.02.1.02.1.12.2.02.3.02.3.12.4.12.5.02.5.12.6.02.6.12.7.02.7.12.8.02.8.12.8.22.8.32.8.42.8.52.8.62.8.73.0.03.0.13.0.23.0.33.0.43.1.03.1.13.1.23.1.33.1.43.2.03.2.13.2.23.2.33.2.43.3.03.3.13.3.23.3.33.3.43.3.53.4.0 |
5.33.1 |
rabbitmq-java-clientopenEuler:24.03-LTS-SP3 |
before 3.6.5-4.oe2403sp3 | 3.6.5-4.oe2403sp3 |
rabbitmq-java-clientopenEuler:24.03-LTS-SP4 |
before 3.6.5-4.oe2403sp4 | 3.6.5-4.oe2403sp4 |
rabbitmq-java-clientopenEuler:20.03-LTS-SP4 |
before 3.6.5-2.oe2003sp4 | 3.6.5-2.oe2003sp4 |
rabbitmq-java-clientopenEuler:22.03-LTS-SP4 |
before 3.6.5-4.oe2203sp4 | 3.6.5-4.oe2203sp4 |
rabbitmq-java-clientopenEuler:24.03-LTS-SP1 |
before 3.6.5-4.oe2403sp1 | 3.6.5-4.oe2403sp1 |
com.rabbitmq:amqp-clientRoot:Maven |
before 5.30.0-aikido.1 | 5.30.0-aikido.15.25.0-aikido.25.27.1-aikido.15.27.1-aikido.35.27.1-aikido.25.30.0-aikido.2 |
io.root.com.rabbitmq:amqp-clientRoot:Maven |
before 5.30.0-root.io.1 | 5.30.0-root.io.15.25.0-root.io.25.27.1-root.io.15.27.1-root.io.35.27.1-root.io.25.30.0-root.io.2 |
rabbitmq-java-clientUbuntu:18.04:LTS |
All versions, plus listed versions 5.0.0-1 |
None known |
rabbitmq-java-clientUbuntu:20.04:LTS |
All versions, plus listed versions 5.0.0-1 |
None known |
rabbitmq-java-clientUbuntu:22.04:LTS |
All versions, plus listed versions 5.0.0-1.1 |
None known |
rabbitmq-java-clientUbuntu:24.04:LTS |
All versions, plus listed versions 5.0.0-1.1 |
None known |
rabbitmq-java-clientUbuntu:26.10 |
All versions, plus listed versions 5.0.0-2 |
None known |
rabbitmq-java-clientUbuntu:26.04:LTS |
All versions, plus listed versions 5.0.0-1.15.0.0-2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-69220 is a high vulnerability (CVSS 8.7) in Rabbitmq Rabbitmq-java-client, published August 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.73%, the 54th percentile. Fixed in com.rabbitmq:amqp-client 5.33.1.
References
github.com/rabbitmq/rabbitmq-java-client/security/advisories/GHSA-93j5-89vc-pph4
github.com/rabbitmq/rabbitmq-java-client/pull/2007
github.com/rabbitmq/rabbitmq-java-client/pull/2008
github.com/rabbitmq/rabbitmq-java-client/commit/09af76fce136f3136931654a0a1d43095c80e2f0
github.com/rabbitmq/rabbitmq-java-client/commit/db89e34809fbc6ba4e946615f297f3684ccd0acc
github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.33.1
Show 13 moreShow less
github.com/advisories/GHSA-93j5-89vc-pph4
github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69220.json
nvd.nist.gov/vuln/detail/CVE-2026-69220
security-tracker.debian.org/tracker/CVE-2026-69220
github.com/rabbitmq/rabbitmq-java-client
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4112
nvd.nist.gov/vuln/detail/CVE-2023-46120
nvd.nist.gov/vuln/detail/CVE-2026-61634
nvd.nist.gov/vuln/detail/CVE-2026-63335
nvd.nist.gov/vuln/detail/CVE-2026-63336
nvd.nist.gov/vuln/detail/CVE-2026-69219
ubuntu.com/security/CVE-2026-69220
cve.org/CVERecord?id=CVE-2026-69220
Left out here: 101 versions and the rest of 1 source description. The JSON record has them.