CVE-2026-69219
ADVISORY - githubSummary
Summary
ValueReader.readBytes() allocates a byte array sized by a wire-declared content length without validating it against actual frame data. A malicious AMQP peer triggers OOM by declaring a ~2GB string/bytes field.
Vulnerable Code
src/main/java/com/rabbitmq/client/impl/ValueReader.java lines 83-95:
private static byte[] readBytes(final DataInputStream in) throws IOException {
final long contentLength = unsignedExtend(in.readInt());
if(contentLength < Integer.MAX_VALUE) {
final byte[] buffer = new byte[(int)contentLength]; // allocates before reading
in.readFully(buffer);
return buffer;
}
}
Attack Scenario
A malicious AMQP server sends a LongString field (type tag 'S') with declared length 0x7FFFFFFE (2,147,483,646). The check contentLength < Integer.MAX_VALUE passes. new byte[2147483646] attempts ~2GB allocation, causing OutOfMemoryError before readFully() attempts to read data.
The allocation size is attacker-controlled and is NOT validated against the frame size or TruncatedInputStream bounds. Exploitable pre-authentication via connection.start server-properties table.
Impact
Denial of service via JVM OutOfMemoryError. Crashes the entire JVM.
CWE
CWE-789: Memory Allocation with Excessive Size Value
Remediation
Validate contentLength against the frame's remaining bytes or the negotiated max frame size (default 131,072) before allocating.
NIST
-
CVSS SCORE
8.7highGitHub
-
CVSS SCORE
8.7highDebian
-
Ubuntu
-
CVSS SCORE
N/AmediumChainguard
CGA-r59f-82qj-j848
-
minimos
MINI-2fxr-32w5-549x
-
minimos
MINI-5x6h-ppv5-fhww
-
minimos
MINI-87gv-m839-wr8x
-
minimos
MINI-c594-352g-rjv5
-
minimos
MINI-fx8p-rfv9-f7hx
-
minimos
MINI-jfjp-p878-r3xc
-
minimos
MINI-rfwh-7pvq-jp42
-
minimos
MINI-xgv8-5959-958m
-
minimos
MINI-xgwm-q9w6-8j3g
-