Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
☕ Maven
Not in CISA KEV

GHSA-fccg-mwvh-qqg4 — netty-handler

Fix: netty/netty#17213

GHSA-fccg-mwvh-qqg4 is a CWE-407 vulnerability in io.netty:netty-handler. A fix is available for io.netty:netty-handler — see the affected versions and patch details below.

Netty: Fragmented ClientHello records trigger quadratic pre-handshake reassembly in default SNI parsing

Also known asCVE-2026-75596
Published
Updated
Affected
2 pkgs
Patched
2 / 2
Exploits
None indexed
Exploitation data as of Oct 3, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for GHSA-fccg-mwvh-qqg4.

EPSS Exploitation Probability

via FIRST.org ↗
0.4%probability of exploitation in next 30 days
Lower Risk0.00%
Lower risk than most CVEs29th percentile — riskier than 29% of all scored CVEsHighest risk

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

Real-World Exposure

2 pkgs affected
☕io.netty:netty-handler☕io.netty:netty-handler

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.

Description

Summary

Netty's default SNI entrypoint reparses and recopies previously received ClientHello fragments on every additional TLS handshake record. A remote peer can send a small first record that advertises a large ClientHello length and then drip the body in many tiny records, causing superlinear (quadratic) CPU work before the handshake completes. With 4095 one-byte fragments, the handler recopies 8,386,560 bytes from only 24,579 bytes on the wire — a 341× amplification ratio.

Affected Entrypoints

  • io.netty.handler.ssl.SniHandler — default constructors
  • io.netty.handler.ssl.SslClientHelloHandler — pre-handshake ClientHello aggregation path

Vulnerable Code Locations

  • handler/src/main/java/io/netty/handler/ssl/SniHandler.java:85
  • handler/src/main/java/io/netty/handler/ssl/SslClientHelloHandler.java:75 (decode entry)
  • handler/src/main/java/io/netty/handler/ssl/SslClientHelloHandler.java:165 (handshakeBuffer.clear)
  • handler/src/main/java/io/netty/handler/ssl/SslClientHelloHandler.java:174 (writeBytes re-copy)
  • codec-base/src/main/java/io/netty/handler/codec/ByteToMessageDecoder.java:294 (cumulation retention)

Exploit Path

1. TCP connection → SniHandler → SslClientHelloHandler.decode
2. First record: TLS handshake header declaring large ClientHello length (e.g., 4096 bytes)
3. Attacker sends thousands of tiny follow-on handshake records (1 byte each)
4. On each fragment: handshakeBuffer.clear() + writeBytes() re-copies ALL accumulated body bytes
5. Total bytes copied = n*(n+1)/2 where n = number of body bytes → quadratic
6. Event-loop CPU exhausted before SslHandler takes over

Impact

  • Vulnerability Type: Inefficient Algorithmic Complexity
  • An unauthenticated network attacker can drive disproportionate CPU consumption on the Netty event loop
  • Affects all Netty deployments using SniHandler for TLS termination (the default SNI path)
  • No privileges, user interaction, or special configuration required
  • Can degrade or stall TLS connection handling for all clients on the affected event loop
  • The attack requires only modest bandwidth (~25 KB) to trigger significant CPU work

Credits

Found by a security research team from the University of Sydney, focusing on detecting open source software vulnerabilities. Liyi Zhou: https://lzhou1110.github.io/ Ziyue Wang: https://zyy0530.github.io/ Strick: https://str1ckl4nd.github.io/ Maurice: https://maurice.busystar.org/ Chenchen Yu: https://7thparkk.github.io/

Affected Packages

2 total 2 fixed
EcosystemPackageVulnerable rangeFix
☕Mavenio.netty:netty-handler≥ 4.2.0.Final&&< 4.2.17.Final4.2.17.Finalio.netty:netty-handler:4.2.17.Final
☕Mavenio.netty:netty-handlerall versions4.1.137.Finalio.netty:netty-handler:4.1.137.Final

Affected Products

1 product · 2 configurations
Application
nettynetty
≥ 4.2.0 && < 4.2.17
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for io.netty:netty-handler, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update io.netty:netty-handler to 4.2.17.Final or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-fccg-mwvh-qqg4 is resolved across your whole dependency graph.

  3. Workarounds

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Frequently Asked Questions

### Summary Netty's default SNI entrypoint reparses and recopies previously received ClientHello fragments on every additional TLS handshake record. A remote peer can send a small first record that advertises a large ClientHello length and then drip the body in many tiny records, causing **superlinear (quadratic) CPU work** before the handshake completes. With 4095 one-byte fragments, the handler recopies **8,386,560 bytes** from only **24,579 bytes** on the wire — a **341× amplification** ratio. ### Affected Entrypoints - `io.netty.handler.ssl.SniHandler` — default constructors - `io.netty
O3 Security · Impact-Aware SCA

Is GHSA-fccg-mwvh-qqg4 in your dependencies?

Find it across Maven, including transitive dependencies.

GHSA-fccg-mwvh-qqg4: Fixed in 4.2.17.Final | O3 Security