
Команда разработчиков проекта LibreSSL официально представила релиз версии 4.3.0. Сборка уже доступна для загрузки на зеркалах OpenBSD.
Данный выпуск имеет статус development-версии для ветки 4.3.x. Разработчики призывают сообщество активно участвовать в тестировании, так как дальнейших правок в API и ABI для этой ветки не запланировано.
Ключевые нововведения и безопасность
Важнейшим изменением в LibreSSL 4.3.0 стала реализация постквантового метода обмена ключами MLKEM768_X25519 для TLS. Нововведение соответствует спецификациям черновика IETF draft-ietf-tls-ecdhe-mlkem.
Особое внимание уделили исправлению критической уязвимости: была устранена ошибка «off-by-one» при проверке глубины сертификатов X.509. Ранее проблема могла привести к перезаписи 4 байт в памяти при взаимодействии с вредоносным сервером или при активации проверки клиентских сертификатов. Теперь максимальная глубина цепочки жестко ограничена значением 32. Исправление было реализовано при поддержке специалистов Calif.io, Claude и Anthropic Research.
Технические улучшения и очистка кода
Внутренние изменения затронули оптимизацию и модернизацию кодовой базы:
- Проведена очистка проекта от устаревших фрагментов кода, обеспечивавших поддержку SSLv2 и SSLv3/TLS 1.0.
- Полностью переписана функция ec_point_cmp().
- В DH_check() внедрен ускоренный путь для обработки стандартных простых чисел DH, включая те, что описаны в RFC 7919.
Совместимость и API
Для улучшения взаимодействия с другими библиотеками и языковыми привязками внесены следующие изменения:
- Удалено множество неактуальных макросов группы BN_* с неинформативными названиями (включая BN_LONG, BN_BITS4, BN_MASK2 и другие).
- Утилита openssl(1) cms прекратила поддержку параметров -compress и -uncompress.
- Внедрен флаг PKCS7_NO_DUAL_CONTENT для обеспечения корректной работы с некоторыми сторонними языковыми привязками.
- В публичное API добавлены функции SSL_SESSION_dup() и X509_VERIFY_PARAM_set_hostflags().
- Добавлена поддержка алгоритма RSASSA-PSS с OID в libssl.
- Компонент BIGNUM переведен на использование стандартных типов C99 (uint64_t/uint32_t), что решает ряд проблем при компиляции на 64-битных системах Windows.
Исправления ошибок
- Устранены утечки памяти в функциях nref_nos() и CMS_EncryptedData_encrypt().
- Исправлено кодирование битовых строк, содержащих завершающие нули.
- Устранены причины аварийного завершения (падений) при парсинге ответов timestamp и структур PKCS#12.
- В libtls исправлены многочисленные ошибки, касающиеся проверки длин и консистентности сообщений об ошибках.



