Netty — это асинхронная платформа сетевых приложений, управляемая событиями. До версий 4.1.137.Final и 4.2.17.Final конструкторы io.netty.handler.ssl.SniHandler по умолчанию используют путь агрегации ClientHello до установления связи в handler/src/main/java/io/netty/handler/ssl/SslClientHelloHandler.java по адресу io.netty.handler.ssl.SslClientHelloHandler#decode, гдеhandshakeBuffer.clear() и writeBytes() повторно копируют все ранее полученные байты тела для каждой дополнительной записи TLS. Удаленный узел, не прошедший проверку подлинности, может объявить большой ClientHello и доставить его тело в тысячах крошечных записей, вызывая квадратичную работу ЦП в цикле событий до завершения установления связи TLS и ухудшая обработку TLS для других клиентов.
Эта проблема исправлена в версиях 4.1.137.Final и 4.2.17.Final.
Показать оригинальное описание (EN)
Netty is an asynchronous, event-driven network application framework. Prior to 4.1.137.Final and 4.2.17.Final, the default io.netty.handler.ssl.SniHandler constructors use the pre-handshake ClientHello aggregation path in handler/src/main/java/io/netty/handler/ssl/SslClientHelloHandler.java at io.netty.handler.ssl.SslClientHelloHandler#decode, where handshakeBuffer.clear() and writeBytes() recopy all previously received body bytes for every additional TLS record. An unauthenticated remote peer can advertise a large ClientHello and deliver its body in thousands of tiny records, causing quadratic CPU work on the event loop before the TLS handshake completes and degrading TLS handling for other clients. This issue is fixed in versions 4.1.137.Final and 4.2.17.Final.
Характеристики атаки
Последствия
Строка CVSS v4.0