Переполнение буфера в OpenSSL, эксплуатируемое при проверке сертификатов X.509

Опубликован корректирующий выпуск криптографической библиотеки OpenSSL 3.0.7, в котором устранены две уязвимости. Обе проблемы вызваны переполнением буфера в коде проверки поля с email-адресом в сертификатах X.509 и потенциально могут привести к выполнению кода при обработке специально оформленного сертификата. На момент публикации исправления разработчиками OpenSSL не было зафиксировано фактов наличия рабочего эксплоита, способного привести к выполнению кода атакующего.

Несмотря на то, что в заранее опубликованном анонсе нового выпуска упоминалось наличие критической проблемы, фактически в выпущенном обновлении статус уязвимости был снижен до уровня опасной, но не критической проблемы. В соответствии с принятыми в проекте правилами снижение уровня опасности производится в случае проявления проблемы в нетипичных конфигурациях или в случае низкой вероятности эксплуатации уязвимости на практике.
В рассматриваемом случае уровень опасности был снижен, так как эксплуатация уязвимости блокируется применяемыми во многих платформах механизмами защиты от переполнения стека.

Выявленные проблемы:

  • CVE-2022-3602 – уязвимость, изначально преподнесённая как критическая, приводит к 4-байтовому переполнению буфера при проверке в сертификате X.509 поля со специально оформленным email-адресом. В TLS-клиенте уязвимость может быть эксплуатирована при подключении к серверу, подконтрольному атакующему. На TLS-сервере уязвимость может быть эксплуатирована в случае применения аутентификации клиентов по сертификатам. При этом уязвимость проявляется на стадии после верификации связанной с сертификатом цепочки доверия, т.е. для атаки требуется чтобы удостоверяющий центр заверил вредоносный сертификат злоумышленника.
  • CVE-2022-3786 – другой вектор эксплуатации уязвимости CVE-2022-3602, выявленный в ходе разбора проблемы. Отличия сводятся к возможности переполнения буфера в стеке на произвольное число байт, содержащих символ “.”. Проблема может быть использована для вызова аварийного завершения приложения.

Уязвимости проявляются только в ветке OpenSSL 3.0.x, выпуски OpenSSL 1.1.1, а также ответвившиеся от OpenSSL библиотеки LibreSSL и BoringSSL, проблеме не подвержены. Одновременно сформировано обновление OpenSSL 1.1.1s, в котором присутствуют только не связанные с безопасностью исправления ошибок.

Ветка OpenSSL 3.0 используется в таких дистрибутивах, как Ubuntu 22.04, CentOS Stream 9, RHEL 9, OpenMandriva 4.2, Gentoo, Fedora 36, Debian Testing/Unstable. Пользователям данных систем рекомендуется как можно скорее установить обновления (Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch). В SUSE Linux Enterprise 15 SP4 и openSUSE Leap 15.4 пакеты с OpenSSL 3.0 доступны опционально, системные пакеты используют ветку 1.1.1. На ветках OpenSSL 1.x остаются Debian 11, Arch Linux, Void Linux, Ubuntu 20.04, Slackware, ALT Linux, RHEL 8, OpenWrt, Alpine Linux 3.16 и FreeBSD.

Release. Ссылка here.