VDB
KO
HIGH

GHSA-93j5-89vc-pph4

RabbitMQ Java client ValueReader: Unbounded recursive table/array nesting causes StackOverflowError DoS

Quick fix

GHSA-93j5-89vc-pph4 — com.rabbitmq:amqp-client: upgrade to the fixed version with the command below.

# pom.xml: bump <version>5.33.1</version> for com.rabbitmq:amqp-client

Details

## 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:

```java 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).

Are you affected?

Enter the version of the package you're using.

Affected packages

Maven / com.rabbitmq:amqp-client
Introduced in: 0 Fixed in: 5.33.1
Fix # pom.xml: bump <version>5.33.1</version> for com.rabbitmq:amqp-client

References