Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect as remote TLS peer
-
DeliveryDrive handshake/renegotiation/post-handshake traffic
-
ExploitFill non-application ring buffer past wrap
-
ExecutionTrigger integer underflow and OOB memcpy
-
ImpactCrash 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Netty before 4.1.42.Final mishandles whitespace before the colon in HTTP headers (such as a "Transfer-Encoding : chunked
Certificate revocation-check bypass in the Netty network framework's OCSP client (io.netty:netty-handler-ssl-ocsp) affec
netty-incubator-codec-ohttp is the OHTTP implementation for netty. Rated critical severity (CVSS 9.1), this vulnerabilit
The netty incubator codec.bhttp is a java language binary http parser. Rated high severity (CVSS 8.1), this vulnerabilit
Netty, an asynchronous, event-driven network application framework, has a vulnerability starting in version 4.1.91.Final
Memory exhaustion in Netty's SctpMessageCompletionHandler (netty-transport-sctp) allows unauthenticated remote peers to
Compression-amplification denial of service in the Netty network framework (versions prior to 4.1.136.Final and 4.2.16.F
Memory-amplification denial of service in the Netty network framework (SPDY/3.1 codec) prior to 4.1.136.Final and 4.2.16
Memory-exhaustion denial of service in Netty's HTTP/3 codec (Http3FrameCodec) affects all releases prior to 4.2.16.Final
Netty's HTTP CORS handler silently rewrites the Vary response header to Vary: Origin in releases before 4.1.137.Final an
Denial of service in the Netty HTTP/3 codec (io.netty:netty-codec-http3) prior to version 4.2.15.Final allows remote una
EUVD-2026-109909
GHSA-22qq-f4wc-4vfx
NVD
CVE.org
EPSS
Exploit-DB