Netty: SCTP reassembly nests buffers without bound
Package
Affected versions
>= 4.2.0.Final, <= 4.2.14.Final
<= 4.1.134.Final
Patched versions
4.2.15.Final
4.1.135.Final
Description
Published to the GitHub Advisory Database
Jun 8, 2026
Reviewed
Jun 8, 2026
Published by the National Vulnerability Database
Jun 12, 2026
Last updated
Jun 12, 2026
For each non-complete SctpMessage fragment the handler does
fragments.put(streamId, Unpooled.wrappedBuffer(frag, byteBuf)), wrapping the previous accumulator and the new slice into a new CompositeByteBuf every time. After N fragments the accumulator is an N-deep chain of composites, each holding references and component arrays; readableBytes()/getBytes() on the final buffer recurse N levels. There is no limit on N, on total bytes, or on the number of streamIdentifiers an attacker can open (each gets its own map entry). A peer that never sets thecompleteflag can grow this structure indefinitely from tiny 1-byte DATA chunks.References