GHSA-cc37-9q2j-3hfv

Netty: HAProxy SSL TLV parsing leaks retained slice on invalid TLV length

At a glance

Published
Updated
CVE
CVE-2026-44893
CVSS_V3
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Description

When decoding a PP2_TYPE_SSL TLV, HAProxyMessage.readNextTLV() first calls `header.retainedSlice(header.readerIndex(), length)` and only then reads the 1-byte client field and 4-byte verify field. If the attacker sets the TLV length below 5, the subsequent readByte/readInt throws IndexOutOfBoundsException. HAProxyMessageDecoder only catches HAProxyProtocolException around this call, so the IOOBE propagates and the retained slice on the pooled cumulation buffer is never released.

Affected packages

PackageVersions
Maven · io.netty:netty-codec-haproxyintroduced 4.2.0.Final, fixed 4.2.15.Final
Maven · io.netty:netty-codec-haproxyintroduced 0, fixed 4.1.135.Final

References

Sources

SourceLicence
OSV.devCC-BY 4.0 — GitHub Advisory Database