Skip to main content

netty-tcnative CVE-2026-116539

| EUVDEUVD-2026-109909 HIGH
Out-of-bounds Write (CWE-787)
2026-10-26 VulnCheck GHSA-22qq-f4wc-4vfx
8.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect as remote TLS peer
  2. Delivery
    Drive handshake/renegotiation/post-handshake traffic
  3. Exploit
    Fill non-application ring buffer past wrap
  4. Execution
    Trigger integer underflow and OOB memcpy
  5. Impact
    Crash JVM process (denial of service)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Triggering requires non-application bytes (TLS handshake continuation, renegotiation, or TLS 1.3 post-handshake messages) to flow through the custom BIO_java_bytebuffer ring buffer across multiple write/partial-drain cycles WITHOUT the nonApplicationBuffer ever fully emptying, so that offset+length exceeds nonApplicationBufferSize and startIndex underflows. Concretely it depends on the integrating application's choice of a comparatively small nonApplicationBufferSize via SSL.bioNewByteBuffer (e.g. Netty's ReferenceCountedOpenSslEngine) plus attacker-influenced traffic timing - this integrator-dependent requirement is exactly what the CVSS 4.0 AT:P flag encodes and limits reliable exploitation. No authentication is required (PR:N) and no user interaction (UI:N); it is reachable from the peer side of any in-progress or established TLS connection. The flaw is backend-independent (it lives in the generic BIO wrapper, not in OpenSSL/BoringSSL #ifdef branches), so both netty-tcnative and netty-tcnative-boringssl-static are affected.

Impact

The assigned CVSS 4.0 base is 8.2 with vector AV:N/AC:L/AT:P/PR:N/UI:N and an availability-only impact (VA:H; VC/VI/VA subsequent all N), i.e. a remote, unauthenticated, no-user-interaction JVM-crash (denial of service). The AT:P flag is the key nuance: exploitation carries an attack requirement beyond the attacker's sole control - per the GHSA root-cause analysis it depends on the integrating application having configured a comparatively small nonApplicationBuffer and on enough non-application bytes cycling through partial drains without the buffer fully emptying. There is NO CISA KEV listing (so not confirmed actively exploited) and NO EPSS score was supplied in the input, so widespread-vs-targeted exploitation probability cannot be quantified here. A public PoC reference exists in the GHSA advisory (a deterministic reproduction via the public JNI/native path); it is not verified in the input as a turnkey wire-level exploit. One material conflict to flag: the vendor GHSA advisory argues CVSS:3.1 C:H/I:H/A:H (claiming a heap-disclosure read primitive and an unbounded heap write), whereas the authoritative input CVSS 4.0 vector scores only availability (VC:N/VI:N/VA:H) and the CVE description states only that it 'crashes the JVM process' - so the demonstrated, agreed impact is reliable DoS, while confidentiality/integrity corruption is described as plausible but not reflected in the assigned score; verify intended impact with the vendor. The vuln.today decision label is 'this_week'. Net: this is a real, patch-this-week priority - a genuine remote unauthenticated DoS reachable through ordinary TLS traffic wherever the library is used - rather than a high-CVSS-but-low-real-risk issue, though absent KEV/EPSS it is not an active-exploitation emergency.

Exploit ScenarioDerived

A remote TLS peer connects to a JVM service using netty-tcnative and drives handshake continuation, renegotiation, or TLS 1.3 post-handshake messages so that OpenSSL emits non-application bytes into the internal ring buffer across multiple partial-drain cycles. Because the write-side index is never reduced modulo the buffer size, an integer underflow makes writeChunk negative, producing an out-of-bounds memcpy with a near-SIZE_MAX length that crashes the JVM. The GHSA advisory reports a deterministic reproduction of the underlying arithmetic flaw via the public JNI path, though not a packaged exploit derived purely from wire bytes against a specific integration.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 26, 2026

Heap buffer overflow in netty-tcnative's custom OpenSSL BIO wrapper (all releases through 2.0.83.Final, including netty-tcnative-boringssl-static) allows a remote TLS peer to crash the JVM process by pushing handshake continuation, renegotiation, or TLS 1.3 post-handshake bytes through the internal nonApplicationBuffer ring buffer until its un-normalized write index exceeds the buffer size, after which a memcpy runs with an out-of-bounds pointer and a negative length cast to size_t. No authentication or user interaction is required (PR:N/UI:N), but reliability is limited by the CVSS 4.0 AT:P flag: the overflow only materializes when the integrating application chose a comparatively small nonApplicationBufferSize via SSL.bioNewByteBuffer and traffic arrives in write/partial-drain cycles that never fully empty the buffer. The assessed impact is availability-only (VA:H) - a deterministic process crash - with no confirmed confidentiality or integrity effect; no CISA KEV listing exists and no released working exploit code was identified at time of analysis, although the upstream advisory documents a deterministic reproduction PoC built from the public JNI API.

RemediationAI

Upgrade to netty-tcnative-parent-2.0.84.Final or later: bump io.netty:netty-tcnative and io.netty:netty-tcnative-boringssl-static to 2.0.84.Final, which contains commit 92dd66fd applying the modulo reduction to startIndex in tcn_write_to_bytebuffer(). Confirm the resolved version with a dependency-tree check, since many applications pull these artifacts transitively through Netty. Patched binaries and release notes are at https://github.com/netty/netty-tcnative/releases/tag/netty-tcnative-parent-2.0.84.Final and the vendor advisory is https://github.com/netty/netty-tcnative/security/advisories/GHSA-gf9q-9mg7-g5qh. If an immediate upgrade is not possible, the practical stopgap is to size the non-application buffer generously when calling SSL.bioNewByteBuffer (this is what Netty's ReferenceCountedOpenSslEngine controls): the overflow requires offset+length to pass nonApplicationBufferSize without the ring buffer ever emptying, so a larger buffer lengthens the number of write/partial-drain cycles an attacker must sustain before startIndex underflows. This is a probabilistic reduction only and does not remove the arithmetic flaw, and it carries a direct memory-footprint cost per TLS connection. Where the peer population is bounded, restricting who can open or renegotiate TLS sessions to trusted networks limits exposure, at the cost of excluding legitimate clients; TLS version or renegotiation toggles in the integrating stack have not been confirmed to remove the trigger path, because handshake continuation bytes reach the same buffer.

Affected VersionsENISA

netty-tcnative-boringssl-static 0 <2.0.84.Final
netty-tcnative 0 <2.0.84.Final

Affected Packages

euvd netty_tcnative fix: 2.0.84.Final
euvd netty_tcnative_boringssl_static fix: 2.0.84.Final

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

netty-tcnative implements BIO_java_bytebuffer (openssl-dynamic/src/main/c/ssl.c), a custom OpenSSL BIO that lets Java code move encrypted bytes through SSL_read/SSL_write/SSL_do_handshake using direct ByteBuffers instead of a real socket. Because one BIO instance serves both directions, OpenSSL can emit its own protocol bytes (handshake, renegotiation, post-handshake messages) while the BIO is configured as a read source; those bytes are staged in an internal nonApplicationBuffer ring buffer until the caller drains them via SSL.bioFlushByteBuffer(). In tcn_write_to_bytebuffer() the write position is computed as startIndex = nonApplicationBufferOffset + nonApplicationBufferLength without reducing modulo nonApplicationBufferSize, and the write-side wrap branch updates only nonApplicationBufferLength, never renormalizing the offset - unlike the drain-side sibling tcn_flush_sslbuffer_to_bytebuffer(), which does renormalize. Once a wrapping write occurs without the buffer first draining to empty, offset+length permanently exceeds size, the signed jint writeChunk goes negative, and the code executes memcpy(&nonApplicationBuffer[startIndex], in, (size_t) writeChunk) - an out-of-bounds destination with a length near SIZE_MAX. The advisory classifies the root cause as CWE-191 (integer underflow) feeding CWE-787 (out-of-bounds write), with an accompanying CWE-125 out-of-bounds read on the &in[writeChunk] source expression; the CVE record cites CWE-787. The flaw is backend-independent: it lives in the generic BIO wrapper rather than any OpenSSL/BoringSSL #ifdef branch, which is why both netty-tcnative and netty-tcnative-boringssl-static artifacts are affected. The upstream fix (commit 92dd66fd) adds the missing modulo on startIndex.

Know when Netty gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.2 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.9 MEDIUM

AV:N and PR:N/UI:N because an unauthenticated TLS peer drives it; AC:H because it needs a small buffer config plus specific partial-drain traffic timing; impact limited to A:H (JVM crash) as the assigned vector scores availability only.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Netty netty-tcnative before 2.0.84.Final contains a heap buffer overflow vulnerability in the tcn_write_to_bytebuffer BIO callback caused by failing to wrap the non-application ring buffer write index. Remote TLS peers can drive handshake, renegotiation, or post-handshake messages into this buffer, triggering an out-of-bounds memcpy that crashes the JVM process.

Technical POC Analysis

CWE-787 out-of-bounds write (with companion CWE-191 integer underflow and CWE-125 out-of-bounds read), in tcnwritetobytebuffer() at openssl-dynamic/src/main/c/ssl.c:186-213, the write half of the cus…

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

CVE-2026-116539 is a high-severity heap buffer overflow in netty-tcnative's custom OpenSSL BIO wrapper that allows an unauthenticated remote TLS peer to crash the Java Virtual Machine (JVM) process under specific application configurations. This affects any Java service using the library with a small nonApplicationBufferSize, potentially causing service outages and operational disruption. Leadership should prioritize remediation because a public exploit reference exists and the vulnerability is trivial to trigger once conditions are met, though no active exploitation has been confirmed.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
widely used JVM native TLS library; default in gRPC-java and many Netty servers
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

More in Netty

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2019-16869 HIGH POC
7.5 Sep 26

Netty before 4.1.42.Final mishandles whitespace before the colon in HTTP headers (such as a "Transfer-Encoding : chunked

CVE-2026-56820 CRITICAL POC
9.1 Jul 21

Certificate revocation-check bypass in the Netty network framework's OCSP client (io.netty:netty-handler-ssl-ocsp) affec

CVE-2024-36121 CRITICAL POC
9.1 Jun 04

netty-incubator-codec-ohttp is the OHTTP implementation for netty. Rated critical severity (CVSS 9.1), this vulnerabilit

CVE-2024-40642 HIGH POC
8.1 Jul 18

The netty incubator codec.bhttp is a java language binary http parser. Rated high severity (CVSS 8.1), this vulnerabilit

CVE-2025-24970 HIGH POC
7.5 Feb 10

Netty, an asynchronous, event-driven network application framework, has a vulnerability starting in version 4.1.91.Final

CVE-2026-59902 HIGH POC
7.5 Aug 17

Memory exhaustion in Netty's SctpMessageCompletionHandler (netty-transport-sctp) allows unauthenticated remote peers to

CVE-2026-55833 HIGH POC
7.5 Jul 20

Compression-amplification denial of service in the Netty network framework (versions prior to 4.1.136.Final and 4.2.16.F

CVE-2026-55831 HIGH POC
7.5 Jul 20

Memory-amplification denial of service in the Netty network framework (SPDY/3.1 codec) prior to 4.1.136.Final and 4.2.16

CVE-2026-56816 HIGH POC
7.5 Jul 21

Memory-exhaustion denial of service in Netty's HTTP/3 codec (Http3FrameCodec) affects all releases prior to 4.2.16.Final

CVE-2026-59903 HIGH POC
7.5 Aug 17

Netty's HTTP CORS handler silently rewrites the Vary response header to Vary: Origin in releases before 4.1.137.Final an

CVE-2026-48748 HIGH POC
7.5 Jun 12

Denial of service in the Netty HTTP/3 codec (io.netty:netty-codec-http3) prior to version 4.2.15.Final allows remote una

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy