Description
Netty's STOMP codec (io.netty:netty-codec-stomp) contains a ByteBuf leak in StompSubframeDecoder. Once a frame's declared content-length has been fully read, the decoder allocates a chunk buffer from the channel allocator and parks it in an instance field while waiting for the single NUL byte that terminates the frame. If that byte never arrives, the buffer is never released: the replay Signal thrown by skipNullCharacter extends Error rather than Exception, so the decoder's catch(Exception) release path does not run, and StompSubframeDecoder overrides neither handlerRemoved0 nor channelInactive, so the buffer also survives channel teardown. A remote peer can leak one allocator buffer per connection by sending a complete, well-formed frame body and withholding its terminating NUL byte; with the default pooled allocator the memory is never returned to the pool or reclaimed by garbage collection, so the leak accumulates for the lifetime of the process and can lead to memory exhaustion. This affects versions up to and including 4.1.137.Final and versions 4.2.0.Final through 4.2.17.Final; it is fixed in 4.1.138.Final and 4.2.18.Final.
Published: 2026-09-26
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Memory Exhaustion via ByteBuf Leak
Action: Immediate Patch
AI Analysis

Impact

Netty’s STOMP codec contains a ByteBuf leak in the StompSubframeDecoder. After a STOMP frame’s declared length is fully read, the decoder holds a chunk buffer while awaiting a terminating NUL byte. If that byte never arrives, the buffer is never released because the exception thrown during the skip operation is an Error and bypasses the catch block that would normally free it. The decoder also does not release the buffer on channel teardown, allowing the leak to persist permanently for the life of the process. This bug can be triggered remotely by a peer sending a well‑formed frame body and purposely omitting the NUL terminator, causing one allocator buffer to leak per connection. With the default pooled allocator, the leaked buffers are never returned to the pool or reclaimed by garbage collection, leading to progressive memory exhaustion and potentially a denial‑of‑service condition.

Affected Systems

The vulnerability affects Netty’s STOMP codec library (io.netty:netty-codec-stomp) across all supported releases up to and including 4.1.137.Final, and the 4.2.x line from 4.2.0.Final through 4.2.17.Final. The fix is included in 4.1.138.Final and 4.2.18.Final. Systems that use Netty for STOMP handling and run any of these affected versions are at risk.

Risk and Exploitability

The CVSS score of 8.7 indicates a high severity vulnerability. Although no EPSS data is available, it is inferred from the description that an attacker can trigger the leak remotely by sending a well‑formed STOMP frame that lacks the terminating NUL byte, which may lead to memory exhaustion. The vulnerability is not currently listed in the CISA KEV catalog, but the lack of a remediation path beyond a patch means the risk remains significant for any actively exposed service using the affected Netty delivery. The best mitigation is to upgrade to the fixed releases as soon as possible. Until then, monitoring memory usage and limiting connections can reduce impact but do not eliminate the threat.

Generated by OpenCVE AI on September 26, 2026 at 16:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Netty’s STOMP codec to version 4.1.138.Final or 4.2.18.Final or newer
  • If upgrading is not immediately possible, restrict the exposure of the STOMP endpoint to trusted hosts or networks
  • Monitor JVM memory usage for abnormal growth patterns and set alerts for sustained heap exhaustion

Generated by OpenCVE AI on September 26, 2026 at 16:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description Netty's STOMP codec (io.netty:netty-codec-stomp) contains a ByteBuf leak in StompSubframeDecoder. Once a frame's declared content-length has been fully read, the decoder allocates a chunk buffer from the channel allocator and parks it in an instance field while waiting for the single NUL byte that terminates the frame. If that byte never arrives, the buffer is never released: the replay Signal thrown by skipNullCharacter extends Error rather than Exception, so the decoder's catch(Exception) release path does not run, and StompSubframeDecoder overrides neither handlerRemoved0 nor channelInactive, so the buffer also survives channel teardown. A remote peer can leak one allocator buffer per connection by sending a complete, well-formed frame body and withholding its terminating NUL byte; with the default pooled allocator the memory is never returned to the pool or reclaimed by garbage collection, so the leak accumulates for the lifetime of the process and can lead to memory exhaustion. This affects versions up to and including 4.1.137.Final and versions 4.2.0.Final through 4.2.17.Final; it is fixed in 4.1.138.Final and 4.2.18.Final.
Title Netty before 4.1.138.Final ByteBuf Leak in StompSubframeDecoder
First Time appeared Netty
Netty netty
Weaknesses CWE-772
CPEs cpe:2.3:a:netty:netty:*:*:*:*:*:*:*:*
Vendors & Products Netty
Netty netty
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

cvssV4_0

{'score': 8.7, 'vector': '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T13:23:25.432Z

Reserved: 2026-09-26T02:33:59.038Z

Link: CVE-2026-100657

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-26T14:16:48.540

Modified: 2026-09-26T14:16:48.540

Link: CVE-2026-100657

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T16:30:07Z

Weaknesses
  • CWE-772

    Missing Release of Resource after Effective Lifetime