Skip to main content

netty-tcnative EUVDEUVD-2026-109911

| CVE-2026-116541 HIGH
Incorrect Calculation (CWE-682)
2026-10-26 VulnCheck GHSA-rm79-885g-92ch
8.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Open TLS 1.3 connection to Netty service
  2. Delivery
    Provoke queued NewSessionTicket/KeyUpdate records
  3. Exploit
    Trigger BIO_write byte over-count in write-sink
  4. Execution
    Truncate flight / corrupt wire data
  5. Impact
    Wedge connection or abort JVM process

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Calculation correctness
Exploitation Conditions

Exploitation requires netty-tcnative at or below 2.0.83.Final and a TLS 1.3 session, and specifically requires the internal side buffer (nonApplicationBuffer, populated by queued post-handshake records like NewSessionTicket, KeyUpdate, or alerts) to be non-empty at the moment tcn_write_to_bytebuffer runs in write-sink mode; when that coincidence occurs the BIO_write return value is inflated by the side-buffer flush count. No malformed input or protocol violation from the peer is needed - standard TLS 1.3 message flow is sufficient (PR:N, unauthenticated remote). Limiting factors: outcome is backend-specific - on BoringSSL it causes silent handshake/data corruption, and the unconditional process abort path additionally requires a completed handshake (post-handshake write); on LibreSSL it permanently wedges that connection's write path. The required coincidence of queued side-buffer data with a write-mode BIO_write is what the CVSS 4.0 AT:P (attack requirement present) encodes.

Impact

Multiple signals converge on a genuine priority rather than an inflated CVSS. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H, 8.2) describes an unauthenticated, network-reachable availability flaw whose exploitation carries an attack requirement (AT:P) - the internal side buffer must be non-empty at the moment of a write-mode BIO_write, a state produced by normal TLS 1.3 post-handshake traffic rather than attacker-malformed input. Note a real conflict in the inputs: the vulnerability-database CVSS 4.0 records VI:N/VA:H (availability only), while the GHSA advisory's CVSS 3.1 records C:N/I:H/A:L (integrity-dominant). This is not a scoring error so much as backend divergence - BoringSSL yields silent handshake/data corruption (integrity) or an unconditional JVM abort (availability), whereas LibreSSL yields a permanently wedged connection (availability); both characterizations are defensible. There is no CISA KEV listing (so not confirmed actively exploited) and no EPSS score was supplied, so widespread opportunistic exploitation is unproven. However, VulnCheck's GHSA advisory includes dynamically-confirmed reproduction code, the mechanism is well understood, a remote peer can provoke it without authentication, and the vuln.today decision label is this_week with a vendor patch available. Net: a real, promptly-patchable issue - remote unauthenticated DoS (and possible silent TLS-stream corruption) - that warrants scheduled urgency, not emergency-grade panic, absent evidence of in-the-wild use.

Exploit ScenarioDerived

A remote TLS 1.3 peer connects to a Java service using netty-tcnative (≤2.0.83.Final) and provokes queued post-handshake records such as NewSessionTicket or KeyUpdate, leaving the internal side buffer non-empty when a write-mode BIO_write occurs. The resulting BIO_write return-value over-count truncates the TLS flight and either silently corrupts the data placed on the wire (BoringSSL), permanently wedges the connection (LibreSSL), or aborts the JVM process via BoringSSL's SSLBuffer::Consume(). A working PoC reference exists in the GHSA advisory, including a BoringSSL build that dynamically confirmed both the over-count and downstream handshake corruption.

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

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

Alert me

AnalysisAIv1 – Oct 26, 2026

netty-tcnative 2.0.83.Final and earlier can be driven into denial of service or silent TLS message corruption by ordinary TLS 1.3 traffic, because the tcn_write_to_bytebuffer BIO_write callback in ssl.c reports more bytes consumed than the caller actually asked to write. The inflation occurs when the internal side buffer (populated by queued post-handshake records such as NewSessionTicket, KeyUpdate or alerts) is non-empty at the moment a write-sink BIO_write runs, and the outcome is backend-specific: BoringSSL silently corrupts handshake or application data on the wire, an adjacent BoringSSL post-handshake path can abort the JVM process outright, and LibreSSL permanently wedges the connection's write path. The independent assessment rates this CVSS:3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H - unauthenticated remote and requiring the coincidence of queued side-buffer data with a write-mode flush - while a public proof-of-concept reproduction is documented in the upstream advisory; it is not verified as turnkey exploit code and there is no CISA KEV confirmation of active exploitation at time of analysis.

RemediationAI

Vendor-released patch: upgrade to netty-tcnative 2.0.84.Final (2.0.84.Final supersedes all builds up to and including 2.0.83.Final) for both io.netty:netty-tcnative and io.netty:netty-tcnative-boringssl-static; the fix is commit e31df4a5885b35085fdfa3e2dca7c1f705d4745b, which stops adding the side-buffer flush count to the BIO_write return value and instead returns only the bytes copied from the caller's input, returning -1 with BIO_set_retry_write() when the sink buffer has no remaining space. Verify the resolved dependency tree after upgrading, since the boringssl-static artifact bundles the native library and transitive netty-tcnative pulls are easy to miss. The upstream advisory GHSA-9xr3-jwv4-r489 documents no workaround and describes the updated release as the complete fix; note also that the corrupting condition is reached specifically through queued TLS 1.3 post-handshake records, so code paths still running an unpatched native library remain exposed to standard TLS 1.3 message flow regardless of peer behavior. Remediation references: https://github.com/netty/netty-tcnative/security/advisories/GHSA-9xr3-jwv4-r489 and https://github.com/netty/netty-tcnative/releases/tag/netty-tcnative-parent-2.0.84.Final .

Affected VersionsENISA

netty-tcnative 0 <2.0.84.Final
netty-tcnative-boringssl-static 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 exposes OpenSSL/BoringSSL/LibreSSL/AWS-LC to the JVM through a custom BIO backed by a ByteBuffer. tcn_write_to_bytebuffer() implements BIO_write; in write-sink mode it first drains an internal side buffer (nonApplicationBuffer) via tcn_flush_sslbuffer_to_bytebuffer() and then memcpy's the caller's in/inl payload, but the pre-fix code returned writeAmount + writeChunk - mixing the side-buffer flush count, which has nothing to do with in/inl, into a return value that the TLS library interprets as 'bytes of in consumed'. This is CWE-682 (Incorrect Calculation); the advisory additionally cross-references CWE-617 (Reachable Assertion) and CWE-130 (Improper Handling of Length Parameter Inconsistency). The side buffer legitimately accumulates data during TLS 1.3 operations, because OpenSSL emits NewSessionTicket and KeyUpdate responses while the BIO is in read mode, so the corrupting condition arises from normal protocol flow rather than malformed input. Downstream, BoringSSL's ssl_flush_flight() advances pending_flight_offset by the inflated count with no bounds check (silent corruption, dynamically confirmed with 0x41 filler bytes instead of a 0x16 0x03 record header while SSL_do_handshake() reports SSL_ERROR_WANT_READ); SSLBuffer::Consume() on the tls_write_buffer_flush() path calls abort() when the count exceeds real buffer size, which requires a completed handshake to reach; and LibreSSL's ssl3_write_pending() subtracts the count from the signed int wb->left, driving it negative and producing terminal SSL_R_BAD_WRITE_RETRY. The fix commits to returning only writeChunk and, when the sink has no space left, clearing retry state and returning -1 with BIO_set_retry_write(bio).

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 6.5 MEDIUM

Remote unauthenticated (AV:N/PR:N/UI:N); AC:H folds the required non-empty-side-buffer timing (4.0 AT:P); JVM abort/wedge gives A:H, wire corruption I:L, no disclosure C:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/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 denial of service vulnerability in the tcn_write_to_bytebuffer BIO write callback that overreports bytes consumed. Remote TLS 1.3 peers can provoke queued post-handshake records like NewSessionTicket or KeyUpdate to truncate flights, fail connections, or abort the JVM process.

Technical POC Analysis

CWE-682 (Incorrect Calculation) in tcnwritetobytebuffer() in openssl-dynamic/src/main/c/ssl.c (write-sink branch, advisory cites lines 219-241; patch hunk starts at line 225).

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-116541 is a high-severity flaw in the widely used Netty tcnative TLS library that can be triggered by ordinary TLS 1.3 traffic, causing denial of service or silent corruption of TLS messages. This puts any internet-facing service using affected versions at risk of disruption or data integrity issues, demanding immediate leadership attention to protect service availability and customer trust.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 58% exploitable
Prevalence
High
native TLS library bundled widely in Netty- and gRPC-based Java servers
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.5%
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

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

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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