Dostępne są poprawki kryptograficzne dla biblioteki OpenSSL 3.0.1 i 1.1.1m. W wersji 3.0.1 usunięto lukę (CVE-2021-4044), a także w obu wersjach naprawiono około dziesięciu błędów.
Luka występuje w implementacji klientów SSL/TLS i jest związana z niewłaściwym przetwarzaniem przez bibliotekę libssl ujemnych wartości kodów błędów zwracanych przez funkcję X509_verify_cert(), wywoływaną w celu weryfikacji certyfikatu przekazywanego przez serwer. Ujemne kody są zwracane w przypadku wystąpienia wewnętrznych błędów, na przykład w przypadku braku możliwości zaalokowania pamięci dla bufora. W przypadku zwrotu takiego błędu, kolejne wywołania funkcji wejścia/wyjścia, takich jak SSL_connect() i SSL_do_handshake(), spowodują niepowodzenie oraz zwrócenie kodu błędu SSL_ERROR_WANT_RETRY_VERIFY, który powinien być zwracany tylko wtedy, gdy aplikacja wcześniej wykonała wywołanie SSL_CTX_set_cert_verify_callback().
Ponieważ większość aplikacji nie wywołuje SSL_CTX_set_cert_verify_callback(), pojawienie się błędu SSL_ERROR_WANT_RETRY_VERIFY może zostać błędnie zinterpretowane i prowadzić do awarii, zamrożenia lub innych niewłaściwych reakcji. Największe zagrożenie problem stwarza w połączeniu z innym błędem w OpenSSL 3.0, prowadzącym do wystąpienia błędu wewnętrznego podczas przetwarzania w X509_verify_cert() certyfikatów bez rozszerzenia „Subject Alternative Name”, ale z powiązaniami do nazw w ograniczeniach użycia. W takim przypadku atak może prowadzić do anomalii związanych z aplikacjami podczas przetwarzania certyfikatów i ustanawiania sesji TLS.
Źródło: opennet.ru
