Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen TLS 1.3 connection to Netty service
-
DeliveryProvoke queued NewSessionTicket/KeyUpdate records
-
ExploitTrigger BIO_write byte over-count in write-sink
-
ExecutionTruncate flight / corrupt wire data
-
ImpactWedge 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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 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
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
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.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-109911
GHSA-rm79-885g-92ch
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB