Выпуск OpenSSL 3.6.0 с поддержкой EVP_SKEY и устранением переполнения буфера

Состоялся релиз библиотеки OpenSSL 3.6.0, предлагающей с реализацию протоколов SSL/TLS и различных алгоритмов шифрования. OpenSSL 3.6 отнесён к выпускам с обычным сроком поддержки (LTS), обновления для которых выпускаются в течение 13 месяцев. Поддержка прошлых веток OpenSSL 3.5 LTS, 3.4, 3.3, 3.2 и 3.0 LTS продлится до апреля 2030 года, октября 2026 года, апреля 2026 года, ноября 2025 года и сентября 2026 года соответственно. Код проекта распространяется под лицензией Apache 2.0.

Основные новшества:

  • Добавлена поддержка структуры EVP_SKEY (Symmetric KEY) для представления симметричных ключей как непрозрачных (opaque) объектов. В отличие от raw-ключей, представленных массивом байтов, в EVP_SKEY структура ключа абстрагируется и содержит дополнительные метаданные. Допустимо применение EVP_SKEY в функциях шифрования, обмена ключами и формирования ключей (KDF). Для работы с ключами EVP_SKEY добавлены функции EVP_KDF_CTX_set_SKEY(), EVP_KDF_derive_SKEY() и EVP_PKEY_derive_SKEY().
  • Добавлена поддержка верификации цифровых подписей на базе схемы LMS (Leighton-Micali Signatures), использующей хэш-функции и древовидное хэширование в форме дерева Меркла (Merkle Tree, каждая ветка верифицирует все нижележащие ветки и узлы). Цифровые подписи LMS устойчивых к подбору на квантовом компьютере и разработаны для заверения целостности прошивок и приложений.
  • Добавлена поддержка категорий безопасности NIST для параметров объектов PKEY (открытые и закрытые ключи). Выставление категории безопасности осуществляется через настройку
    “security-category”. Для проверки уровня безопасности добавлена функция EVP_PKEY_get_security_category(). Уровень безопасности отражает стойкость к подбору на квантовых компьютерах и может принимать целые значения от 0 до 5:

    • 0 – реализация, не стойкая ко взлому на квантовых компьютерах;
    • 1/3/5 – реализация не исключает поиск на квантовом компьютере ключа в блочном шифре со 128/192/256-битным ключом;
    • 2/4 – реализация не исключает поиск на квантовом компьютере коллизии в 256/384-битном хэше).
  • Добавлена команда “openssl configutl” для обработки файла конфигурации. Утилита позволяет на основе многофайловой конфигурации с include-включениями сформировать сводный файл со всеми настройками.
  • В криптопровайдер FIPS добавлена поддержка детерминированного формирования цифровых подписей ECDSA (при одних и тех же входных данных генерируется одна и та же подпись), в соответствии с требованиями стандарта FIPS 186-5.
  • Повышены требования к сборочному окружению. Для сборки OpenSSL теперь недостаточно инструментария с поддержкой ANSI-C и требуется компилятор, совместимый со стандартом C-99.
  • Объявлены устаревшими функции, связанные со структурой EVP_PKEY_ASN1_METHOD.
  • Прекращена поддержка платформы VxWorks.

Исправленные уязвимости:

  • CVE-2025-9230 – уязвимость в коде дешифровки CMS-сообщений, зашифрованных с использованием пароля (PWRI). Уязвимость может привести к записи и чтению данных вне выделенного буфера, что позволяет инициировать аварийное завершение или повреждение памяти в приложении, использующем OpenSSL для обработки CMS-сообщений. Не исключается эксплуатация уязвимости для организации выполнения своего кода, но опасность проблемы снижает то, что шифрование CMS-сообщений с использованием пароля на практике применяется крайне редко. Кроме версии OpenSSL 3.6.0 уязвимость устранена в выпусках OpenSSL 3.5.4, 3.4.3, 3.3.5, 3.2.6 и 3.0.18. Проблема также исправлена в обновлениях библиотеки LibreSSL 4.0.1 и 4.1.1, развиваемой проектом OpenBSD.
  • CVE-2025-9231 – реализация алгоритма SM2 подвержена атаке по сторонним каналам, позволяющей на системах с 64-разрядными CPU ARM воссоздать закрытый ключ, анализируя изменение времени выполнения отдельных вычислений. Потенциально атака может быть проведена удалённо. Опасность атаки снижает то, что OpenSSL напрямую не поддерживает использование сертификатов с ключами SM2 в TLS.
  • CVE-2025-9232 – уязвимость в реализации встроенного HTTP-клиента, приводящая к чтению данных из области вне буфера при обработке в функциях HTTP Client специально оформленного URL. Проблема проявляется только при выставленной переменной окружения “no_proxy” и может привести к аварийному завершению приложения.
Release. Ссылка here.