OpenSSL 3.0 Series Release Notes

The major changes and known issues for the 3.0 branch of the OpenSSL toolkit are summarised below. The contents reflect the current state of the NEWS file inside the git repository. More details can be found in the ChangeLog.

Major changes between OpenSSL 3.0.14 and OpenSSL 3.0.15 [3 Sep 2024]

OpenSSL 3.0.15 is a security patch release. The most severe CVE fixed in this release is Moderate.

This release incorporates the following bug fixes and mitigations:

  • Fixed possible denial of service in X.509 name checks ([CVE-2024-6119])
  • Fixed possible buffer overread in SSL_select_next_proto() ([CVE-2024-5535])

Major changes between OpenSSL 3.0.13 and OpenSSL 3.0.14 [4 Jun 2024]

  • Fixed potential use after free after SSL_free_buffers() is called ([CVE-2024-4741])
  • Fixed an issue where checking excessively long DSA keys or parameters may be very slow ([CVE-2024-4603])
  • Fixed unbounded memory growth with session handling in TLSv1.3 ([CVE-2024-2511])

Major changes between OpenSSL 3.0.12 and OpenSSL 3.0.13 [30 Jan 2024]

  • Fixed PKCS12 Decoding crashes ([CVE-2024-0727])
  • Fixed Excessive time spent checking invalid RSA public keys ([CVE-2023-6237])
  • Fixed POLY1305 MAC implementation corrupting vector registers on PowerPC CPUs which support PowerISA 2.07 ([CVE-2023-6129])
  • Fix excessive time spent in DH check / generation with large Q parameter value ([CVE-2023-5678])

Major changes between OpenSSL 3.0.11 and OpenSSL 3.0.12 [24 Oct 2023]

  • Mitigate incorrect resize handling for symmetric cipher keys and IVs. ([CVE-2023-5363])

Major changes between OpenSSL 3.0.10 and OpenSSL 3.0.11 [19 Sep 2023]

  • Fix POLY1305 MAC implementation corrupting XMM registers on Windows ([CVE-2023-4807])

Major changes between OpenSSL 3.0.9 and OpenSSL 3.0.10 [1 Aug 2023]

  • Fix excessive time spent checking DH q parameter value ([CVE-2023-3817])
  • Fix DH_check() excessive time with over sized modulus ([CVE-2023-3446])
  • Do not ignore empty associated data entries with AES-SIV ([CVE-2023-2975])

Major changes between OpenSSL 3.0.8 and OpenSSL 3.0.9 [30 May 2023]

  • Mitigate for very slow `OBJ_obj2txt()` performance with gigantic OBJECT IDENTIFIER sub-identities. ([CVE-2023-2650])
  • Fixed buffer overread in AES-XTS decryption on ARM 64 bit platforms ([CVE-2023-1255])
  • Fixed documentation of X509_VERIFY_PARAM_add0_policy() ([CVE-2023-0466])
  • Fixed handling of invalid certificate policies in leaf certificates ([CVE-2023-0465])
  • Limited the number of nodes created in a policy tree ([CVE-2023-0464])

Major changes between OpenSSL 3.0.7 and OpenSSL 3.0.8 [7 Feb 2023]

  • Fixed NULL dereference during PKCS7 data verification ([CVE-2023-0401])
  • Fixed X.400 address type confusion in X.509 GeneralName ([CVE-2023-0286])
  • Fixed NULL dereference validating DSA public key ([CVE-2023-0217])
  • Fixed Invalid pointer dereference in d2i_PKCS7 functions ([CVE-2023-0216])
  • Fixed Use-after-free following BIO_new_NDEF ([CVE-2023-0215])
  • Fixed Double free after calling PEM_read_bio_ex ([CVE-2022-4450])
  • Fixed Timing Oracle in RSA Decryption ([CVE-2022-4304])
  • Fixed X.509 Name Constraints Read Buffer Overflow ([CVE-2022-4203])
  • Fixed X.509 Policy Constraints Double Locking ([CVE-2022-3996])

Major changes between OpenSSL 3.0.6 and OpenSSL 3.0.7 [1 Nov 2022]

  • Added RIPEMD160 to the default provider.
  • Fixed regressions introduced in 3.0.6 version.
  • Fixed two buffer overflows in punycode decoding functions. ([CVE-2022-3786]) and ([CVE-2022-3602])

Major changes between OpenSSL 3.0.5 and OpenSSL 3.0.6 [11 Oct 2022]

  • Fix for custom ciphers to prevent accidental use of NULL encryption ([CVE-2022-3358])

Major changes between OpenSSL 3.0.4 and OpenSSL 3.0.5 [5 Jul 2022]

  • Fixed heap memory corruption with RSA private key operation ([CVE-2022-2274])
  • Fixed AES OCB failure to encrypt some bytes on 32-bit x86 platforms ([CVE-2022-2097])

Major changes between OpenSSL 3.0.3 and OpenSSL 3.0.4 [21 Jun 2022]

  • Fixed additional bugs in the c_rehash script which was not properly sanitising shell metacharacters to prevent command injection ([CVE-2022-2068])

Major changes between OpenSSL 3.0.2 and OpenSSL 3.0.3 [3 May 2022]

  • Fixed a bug in the c_rehash script which was not properly sanitising shell metacharacters to prevent command injection ([CVE-2022-1292])
  • Fixed a bug in the function `OCSP_basic_verify` that verifies the signer certificate on an OCSP response ([CVE-2022-1343])
  • Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the AAD data as the MAC key ([CVE-2022-1434])
  • Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory occuppied by the removed hash table entries ([CVE-2022-1473])

Major changes between OpenSSL 3.0.1 and OpenSSL 3.0.2 [15 Mar 2022]

  • Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever for non-prime moduli ([CVE-2022-0778])

Major changes between OpenSSL 3.0.0 and OpenSSL 3.0.1 [14 Dec 2021]

  • Fixed invalid handling of X509_verify_cert() internal errors in libssl ([CVE-2021-4044])
  • Allow fetching an operation from the provider that owns an unexportable key as a fallback if that is still allowed by the property query.
  • Enhanced ‘openssl list’ with many new options.
  • Added migration guide to man7.
  • Implemented support for fully “pluggable” TLSv1.3 groups.
  • Added suport for Kernel TLS (KTLS).
  • Changed the license to the Apache License v2.0.
  • Moved all variations of the EVP ciphers CAST5, BF, IDEA, SEED, RC2, RC4, RC5, and DES to the legacy provider.
  • Moved the EVP digests MD2, MD4, MDC2, WHIRLPOOL and RIPEMD-160 to the legacy provider.
  • Added convenience functions for generating asymmetric key pairs.
  • Deprecated the `OCSP_REQ_CTX` type and functions.
  • Deprecated the `EC_KEY` and `EC_KEY_METHOD` types and functions.
  • Deprecated the `RSA` and `RSA_METHOD` types and functions.
  • Deprecated the `DSA` and `DSA_METHOD` types and functions.
  • Deprecated the `DH` and `DH_METHOD` types and functions.
  • Deprecated the `ERR_load_` functions.
  • Remove the `RAND_DRBG` API.
  • Deprecated the `ENGINE` API.
  • Added `OSSL_LIB_CTX`, a libcrypto library context.
  • Added various `_ex` functions to the OpenSSL API that support using a non-default `OSSL_LIB_CTX`.
  • Interactive mode is removed from the ‘openssl’ program.
  • The X25519, X448, Ed25519, Ed448, SHAKE128 and SHAKE256 algorithms are included in the FIPS provider.
  • X509 certificates signed using SHA1 are no longer allowed at security level 1 or higher. The default security level for TLS is 1, so certificates signed using SHA1 are by default no longer trusted to authenticate servers or clients.
  • enable-crypto-mdebug and enable-crypto-mdebug-backtrace were mostly disabled; the project uses address sanitize/leak-detect instead.
  • Added a Certificate Management Protocol (CMP, RFC 4210) implementation also covering CRMF (RFC 4211) and HTTP transfer (RFC 6712). It is part of the crypto lib and adds a ‘cmp’ app with a demo configuration. All widely used CMP features are supported for both clients and servers.
  • Added a proper HTTP client supporting GET with optional redirection, POST, arbitrary request and response content types, TLS, persistent connections, connections via HTTP(s) proxies, connections and exchange via user-defined BIOs (allowing implicit connections), and timeout checks.
  • Added util/check-format.pl for checking adherence to the coding guidelines.
  • Added OSSL_ENCODER, a generic encoder API.
  • Added OSSL_DECODER, a generic decoder API.
  • Added OSSL_PARAM_BLD, an easier to use API to OSSL_PARAM.
  • Added error raising macros, ERR_raise() and ERR_raise_data().
  • Deprecated ERR_put_error(), ERR_get_error_line(), ERR_get_error_line_data(), ERR_peek_error_line_data(), ERR_peek_last_error_line_data() and ERR_func_error_string().
  • Added OSSL_PROVIDER_available(), to check provider availibility.
  • Added ‘openssl mac’ that uses the EVP_MAC API.
  • Added ‘openssl kdf’ that uses the EVP_KDF API.
  • Add OPENSSL_info() and ‘openssl info’ to get built-in data.
  • Add support for enabling instrumentation through trace and debug output.
  • Changed our version number scheme and set the next major release to 3.0.0
  • Added EVP_MAC, an EVP layer MAC API, and a generic EVP_PKEY to EVP_MAC bridge. Supported MACs are: BLAKE2, CMAC, GMAC, HMAC, KMAC, POLY1305 and SIPHASH.
  • Removed the heartbeat message in DTLS feature.
  • Added EVP_KDF, an EVP layer KDF and PRF API, and a generic EVP_PKEY to EVP_KDF bridge. Supported KDFs are: HKDF, KBKDF, KRB5 KDF, PBKDF2, PKCS12 KDF, SCRYPT, SSH KDF, SSKDF, TLS1 PRF, X9.42 KDF and X9.63 KDF.
  • All of the low-level MD2, MD4, MD5, MDC2, RIPEMD160, SHA1, SHA224, SHA256, SHA384, SHA512 and Whirlpool digest functions have been deprecated.
  • All of the low-level AES, Blowfish, Camellia, CAST, DES, IDEA, RC2, RC4, RC5 and SEED cipher functions have been deprecated.
  • All of the low-level DH, DSA, ECDH, ECDSA and RSA public key functions have been deprecated.
  • SSL 3, TLS 1.0, TLS 1.1, and DTLS 1.0 only work at security level 0, except when RSA key exchange without SHA1 is used.
  • Added providers, a new pluggability concept that will replace the ENGINE API and ENGINE implementations.