В выпуск новых корректирующих версий OpenSSL (3.0.8, 1.1.1t) в котором исправлена опасная уязвимость (CVE-2023-0286), который позволяет получить содержимое произвольных областей памяти процесса при обработке процесса, контролируемого списком отзыва сертификатов (CRL) злоумышленника или токеном с отметкой времени.
Уязвимость вызвано путаницей типов при обработке адреса X.400 в расширении X.509 GeneralName.
В частности, адрес X.400 был проанализирован с типом ASN1_STRING, а поле x400Address в структуре GENERAL_NAME было проанализировано с типом ASN1_TYPE, что привело к сравнению (GENERAL_NAME_cmp) с ASN1_TYPE вместо ASN1_STRING. При включенной проверке списка отозванных сертификатов (путем установки флага X509_V_FLAG_CRL_CHECK в приложении) уязвимость позволяет злоумышленнику передать произвольные указатели в функцию memcmp, которые могут быть использованы для чтения содержимого памяти или запуска аварийного завершения процесса. .
В большинстве ситуаций, злоумышленник должен иметь контроль над списком отзыва сертификатов (CRL) и цепочка доверия сертификата для проведения успешной атаки.
Атака также может быть совершена в случае контроля над одним из указанных элементов, но в этом случае адрес X.400 должен отображаться как точка распространения CRL, что бывает довольно редко. В этом смысле предполагается, что уязвимость в основном затрагивает приложения, использующие собственную реализацию функциональности загрузки CRL по сети.
Помимо обсуждаемой проблемы, OpenSSL 3.0.8 также исправляет несколько уязвимостей. менее опасны:
- CVE-2022-4304: — это атака по побочному каналу, которая позволяет определить исходные данные путем измерения сетевых задержек при выполнении операций RSA с использованием режимов инкрементного распространения PKCS#1 v1.5, RSA-OEAP и RSASVE. Атака является разновидностью метода Блейхенбахера, суть которой заключается в том, что злоумышленник, основываясь на другой реакции сервера, может разделить правильные и неправильные заполнение блоков Oracle, используемых для выравнивания зашифрованных данных по границе блока. Успешная атака требует отправки большого количества тестовых сообщений для расшифровки.
С практической стороны атака, например, может быть использована для определения мастер-секрета TLS-соединения, которое клиент передает на сервер в зашифрованном виде. Злоумышленник, имеющий возможность перехватить соединение между клиентом и сервером, может восстановить значение мастер-секрета, отправив на сервер большое количество тестовых сообщений и проанализировав время их обработки. Как только главный секрет определен, злоумышленник может расшифровать данные, отправленные по рассматриваемому соединению TLS. - CVE-2022-4203: Чтение буфера за пределами границ при проверке сертификатов X.509 с пользовательским полем имени. Атака может привести к сбою приложения или утечке содержимого памяти процесса на стороне клиента, если он подключается к серверу, контролируемому злоумышленником, или на стороне сервера, если сервер запрашивает аутентификацию у клиента, контролируемого злоумышленником.
- CVE-2023-0216: Отсутствует неверная ссылка на указатель в функциях d2i_PKCS7(), d2i_PKCS7_bio() и d2i_PKCS7_fp() при обработке специально отформатированных данных PKCS7. Уязвимость может привести к сбою процесса.
- CVE-2023-0217: Разыменование указателя NULL при проверке открытого ключа DSA в функции EVP_PKEY_public_check().
- CVE-2023-0215: использование после освобождения доступа к области памяти в функции BIO_new_NDEF, используемой для передачи данных ASN.1 через интерфейс BIO.
- CVE-2022-4450: двойное освобождение памяти после вызова функции PEM_read_bio_ex.
- CVE-2023-0401: Разыменование указателя NULL при проверке данных PKCS7.
Из последних 4 уязвимостей предполагается, что они ограничиваются возможностью инициировать аварийное завершение процесса.
Наконец, если вам интересно узнать больше об этой новой версии, вы можете проверить подробности на по следующей ссылке.