W frameworku Netty komponent OcspServerCertificateValidator przekazuje zdarzenie zakończenia handshake TLS przed ukończeniem asynchronicznej walidacji OCSP certyfikatu serwera. W rezultacie aplikacja kliencka może wysłać wrażliwe dane (np. żądania HTTP) do serwera posługującego się unieważnionym certyfikatem, zanim kanał zostanie zamknięty.
▸ Pokaż oryginał (EN)
Netty is an asynchronous, event-driven network application framework. Prior to versions 4.1.136.Final and 4.2.16.Final, the OcspServerCertificateValidator forwards the SslHandshakeCompletionEvent before the asynchronous OCSP validation completes. This allows the client's downstream handlers to send sensitive application data (e.g., HTTP requests) to a revoked server before the channel is closed by the OCSP check. n io.netty.handler.ssl.ocsp.OcspServerCertificateValidator#userEventTriggered, when an SslHandshakeCompletionEvent is received, the validator immediately calls ctx.fireUserEventTriggered(evt). It then initiates an asynchronous OCSP query using OcspClient.query. Because the handshake completion event is forwarded immediately, downstream handlers in the client's pipeline are notified that the TLS handshake is successful. They may then begin reading and processing incoming application data or sending outgoing data. If the OCSP response later indicates the server's certificate is REVOKED, the validator closes the channel, but by this time, the client may have already leaked sensitive data to a revoked server or processed malicious responses from it. This issue has been fixed in versions 4.1.136.Final and 4.2.16.Final.
W metodzie OcspServerCertificateValidator#userEventTriggered, po odebraniu zdarzenia SslHandshakeCompletionEvent, walidator natychmiast wywołuje ctx.fireUserEventTriggered(evt), powiadamiając dalsze handlery w pipeline'ie klienta o pomyślnym zakończeniu uzgadniania TLS. Dopiero po tym inicjowane jest asynchroniczne zapytanie OCSP do weryfikacji stanu certyfikatu. Ponieważ zdarzenie jest przekazywane przed zakończeniem walidacji (CWE-367: Time-of-check Time-of-use race condition), handlery downstream mogą rozpocząć wysyłanie danych aplikacyjnych. Jeśli odpowiedź OCSP wskaże, że certyfikat serwera jest unieważniony, kanał zostaje zamknięty, lecz może to nastąpić już po wycieku wrażliwych danych.
Atakujący kontrolujący serwer z unieważnionym certyfikatem może przechwycić wrażliwe dane aplikacyjne wysłane przez klienta (np. dane uwierzytelniające, tokeny, żądania HTTP) lub dostarczyć klientowi złośliwe odpowiedzi zanim mechanizm OCSP zdąży zamknąć połączenie.
Należy zaktualizować Netty do wersji 4.1.136.Final lub 4.2.16.Final, w których opisany błąd został naprawiony. Szczegóły dostępne w referencjach producenta (GitHub Security Advisory GHSA-wc96-39fc-566f).
Netty w wersjach wcześniejszych niż 4.1.136.Final oraz 4.2.16.Final, korzystających z komponentu OcspServerCertificateValidator.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:NNetty
APPNetty< 4.1.1364.2.0 – 4.2.16 (bez)
Powiązane podatności
Netty: nieprawidłowe parsowanie nagłówków HTTP bez dwukropka (HTTP Request Smuggling)
Netty: HTTP Request Smuggling przez duplikat nagłówka Content-Length
The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can ...
Netty: bypass odwołania certyfikatu przez replay przeterminowanej odpowiedzi OCSP
Netty Bzip2Decoder — nieskończona pętla prowadząca do DoS