Mittel

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

  • Veröffentlicht: 08.09.2026
  • Aktualisiert: 11.10.2026 13:19

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/

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Java / Kotlin (Maven) io.netty:netty-handler >= 4.2.0.Final, < 4.2.17.Final, < 4.1.137.Final 4.2.17.Final, 4.1.137.Final

Verweise

CVSS-Wert -
CVSS-Vektor
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Schwäche (CWE)
CWE-407
Plattform
Java / Kotlin (Maven)
Paket
io.netty:netty-handler
Veröffentlicht
08.09.2026
Aktualisiert
11.10.2026 13:19

Quellen und Lizenzen

OSV / GitHub Advisory Database - GHSA-fccg-mwvh-qqg4 - CC BY 4.0

Schwachstellenhistorie: io.netty:netty-handler

Alle veröffentlichten Schwachstellen dieses Pakets (Java / Kotlin (Maven)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.

Alle (12) im Archiv
Einträge insgesamt
12
Erste → letzte
02.2020 09.2026
Ohne Fix
0
In Angriffen ausgenutzt
0

Verteilung nach Schweregrad

  • Kritisch 1
  • Hoch 7
  • Mittel 4

Veröffentlichungen pro Jahr

  1. 2020: 4
  2. 2021: 0
  3. 2022: 1
  4. 2023: 1
  5. 2024: 0
  6. 2025: 1
  7. 2026: 5
Schweregrad:
  1. Kritisch CVE-2026-75595 >= 4.2.0.Final, < 4.2.17.Final, < 4.1.137.Final 4.2.17.Final, 4.1.137.Final
  2. Netty: Fragmented ClientHello records trigger quadratic pre-handshake reassembly in default SNI parsing dieser Eintrag
    Mittel CVE-2026-75596 >= 4.2.0.Final, < 4.2.17.Final, < 4.1.137.Final 4.2.17.Final, 4.1.137.Final
  3. Hoch · 7.5 CVE-2026-50010 >= 4.2.0.Final, < 4.2.15.Final, < 4.1.135.Final 4.2.15.Final, 4.1.135.Final
  4. Hoch · 7.5 CVE-2026-45416 >= 4.2.0.Final, < 4.2.15.Final, < 4.1.135.Final 4.2.15.Final, 4.1.135.Final
  5. Hoch · 8.1 CVE-2026-44249 >= 4.2.0.Final, < 4.2.15.Final, < 4.1.135.Final 4.2.15.Final, 4.1.135.Final
  6. Hoch · 7.5 CVE-2025-24970 >= 4.1.91.Final, < 4.1.118.Final 4.1.118.Final
  7. Hoch · 7.5 CVE-2016-4970 >= 4.0.0.Alpha1, < 4.0.37.Final, >= 4.1.0.Beta1, < 4.1.1.Final 4.0.37.Final, 4.1.1.Final
  8. Hoch · 7.5 CVE-2020-11612 >= 4.1.0, < 4.1.46 4.1.46
  9. Hoch · 7.5 CVE-2020-7238 >= 4.1.43, < 4.1.45 4.1.45

Erkennen Sie Schwachstellen in Ihrer Anwendung

Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.