Доступны корректирующие выпуски криптографической библиотеки OpenSSL 3.0.1 и 1.1.1m. В версии 3.0.1 устранена уязвимость (CVE-2021-4044), также в обоих выпусках исправлено около десятка ошибок.
Уязвимость присутствует в реализации клиентов SSL/TLS и связана с тем, что библиотека libssl некорректно обрабатывает отрицательные значения кодов ошибок, возвращаемые функцией X509_verify_cert(), вызываемой для проверки сертификата, переданного клиенту сервером. Отрицательные коды возвращаются при возникновении внутренних ошибок, например, в случае невозможности выделить память под буфер. В случае возвращения подобной ошибки последующий вызов функций ввода/вывода, таких как SSL_connect() и SSL_do_handshake(), приведёт к возвращению неуспешного завершения и кода ошибки SSL_ERROR_WANT_RETRY_VERIFY, который должен возвращаться только если приложение раннее совершало вызов SSL_CTX_set_cert_verify_callback().
Так как большинство приложении не вызывают SSL_CTX_set_cert_verify_callback(), появление ошибки SSL_ERROR_WANT_RETRY_VERIFY может быть неверно истолковано и привести к аварийному завершению, зацикливанию или другим некорректным реакциям. Наибольшую опасность проблема представляет в комбинации с другой ошибкой в OpenSSL 3.0, приводящей к возникновению внутренней ошибки при обработке в X509_verify_cert() сертификатов без расширения "Subject Alternative Name", но с привязками к именам в ограничениях использования. В этом случае атака может привести к зависящим от приложений аномалиям при обработке сертификатов и установке сеансов TLS.
|