Media

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

  • Publicada: 08.09.2026
  • Actualizado: 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/

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
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

Referencias

Puntuación CVSS -
Vector CVSS
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
Debilidad (CWE)
CWE-407
Plataforma
Java / Kotlin (Maven)
Paquete
io.netty:netty-handler
Publicada
08.09.2026
Actualizado
11.10.2026 13:19

Fuentes y licencias

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

Historial de vulnerabilidades: io.netty:netty-handler

Todas las vulnerabilidades publicadas de este paquete (Java / Kotlin (Maven)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (12) en el archivo
Entradas en total
12
Primera → última
02.2020 09.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 1
  • Alta 7
  • Media 4

Divulgaciones por año

  1. 2020: 4
  2. 2021: 0
  3. 2022: 1
  4. 2023: 1
  5. 2024: 0
  6. 2025: 1
  7. 2026: 5
Gravedad:
  1. Crítica 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 esta entrada
    Media CVE-2026-75596 >= 4.2.0.Final, < 4.2.17.Final, < 4.1.137.Final 4.2.17.Final, 4.1.137.Final
  3. Alta · 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. Alta · 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. Alta · 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. Alta · 7.5 CVE-2025-24970 >= 4.1.91.Final, < 4.1.118.Final 4.1.118.Final
  7. Alta · 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. Alta · 7.5 CVE-2020-11612 >= 4.1.0, < 4.1.46 4.1.46
  9. Alta · 7.5 CVE-2020-7238 >= 4.1.43, < 4.1.45 4.1.45

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.