Netty — это асинхронная платформа сетевых приложений, управляемая событиями. До версий 4.1.137.Fina и 4.2.17.Final io.netty.handler.ssl.SslClientHelloHandler#decode проверяет неправильное смещение перед чтением четырехбайтового заголовка подтверждения TLS, поэтому ClientHello, заголовок подтверждения которого охватывает записи, может вызвать исключение IndexOutOfBoundsException и вызвать select(ctx, null). При этом выбирается SslContext по умолчанию вместо контекста, специфичного для SNI.
В развертываниях, где clientAuth=REQUIRE для каждого SNI является единственным взаимным шлюзом TLS, SslContext по умолчанию использует clientAuth=NONE или clientAuth=OPTIONAL, а проверка сертификата на уровне приложения не существует, удаленный злоумышленник, не прошедший проверку подлинности, может обойти взаимное требование TLS защищенного маршрута. Эта проблема исправлена в версиях 4.1.137.Final и 4.2.17.Final.
Показать оригинальное описание (EN)
Netty is an asynchronous, event-driven network application framework. Prior to 4.1.137.Fina and 4.2.17.Final, io.netty.handler.ssl.SslClientHelloHandler#decode checks the wrong offset before reading the four-byte TLS handshake header, so a ClientHello whose handshake header spans records can cause an IndexOutOfBoundsException and invoke select(ctx, null). This selects the default SslContext instead of the SNI-specific context. In deployments where per-SNI clientAuth=REQUIRE is the sole mutual TLS gate, the default SslContext uses clientAuth=NONE or clientAuth=OPTIONAL, and no application-layer certificate verification exists, an unauthenticated remote attacker can bypass the protected route's mutual TLS requirement. This issue is fixed in versions 4.1.137.Final and 4.2.17.Final.
Характеристики атаки
Последствия
Строка CVSS v4.0