Initial changelog for 3.3.2
This commit is contained in:
parent
867b577d85
commit
2509d58f8a
295
ChangeLog
295
ChangeLog
@ -28,6 +28,301 @@ history is also available from Git.
|
|||||||
|
|
||||||
LibreSSL Portable Release Notes:
|
LibreSSL Portable Release Notes:
|
||||||
|
|
||||||
|
3.3.2 - Development release
|
||||||
|
|
||||||
|
* This release adds support for DTLSv1.2 and continued the record layer
|
||||||
|
rewrite for the legacy stack. Numerous bugs and interoperability
|
||||||
|
issues were fixed in the new verifier. The OpenSSL 1.1 TLSv1.3 API
|
||||||
|
is not yet available.
|
||||||
|
|
||||||
|
* Switch finish{,_peer}_md_len from an int to a size_t.
|
||||||
|
|
||||||
|
* Fix SSL_get{,_peer}_finished() with TLSv1.3.
|
||||||
|
|
||||||
|
* Use EVP_MD_MAX_MD_SIZE instead of 2 * EVP_MD_MAX_MD_SIZE as size
|
||||||
|
for cert_verify_md[], finish_md[] and peer_finish_md[]. The factor 2
|
||||||
|
was a historical artefact.
|
||||||
|
|
||||||
|
* Corrected the return value type from ERR_peek_error() to a long.
|
||||||
|
|
||||||
|
* Avoid use of uninitialized in ASN1_time_parse which could happen
|
||||||
|
on parsing UTCTime if the caller didn't clear the passed struct tm.
|
||||||
|
|
||||||
|
* Destroy mutex in a tls_config object on tls_config_free().
|
||||||
|
|
||||||
|
* Free alert_data and phh_data in tls13_record_layer_free()
|
||||||
|
these could leak if SSL_shutdown() or tls_close() were called
|
||||||
|
after closing the underlying socket().
|
||||||
|
|
||||||
|
* Free struct members in their natural order for reviewability.
|
||||||
|
|
||||||
|
* Gracefully handle root certificates being both trusted and
|
||||||
|
untrusted.
|
||||||
|
|
||||||
|
* Handle X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE in the new
|
||||||
|
verifier.
|
||||||
|
|
||||||
|
* Use the legacy verifier when building auto chains.
|
||||||
|
|
||||||
|
* Use consistent namesin tls13_{client,server}_finished_{recv,send}().
|
||||||
|
|
||||||
|
* Add tls13_secret_{init,cleanup}() and use them throughout the
|
||||||
|
TLSv1.3 code base.
|
||||||
|
|
||||||
|
* Move the read MAC key into the TLSv1.2 record layer.
|
||||||
|
|
||||||
|
* Make tls12_record_layer_free() NULL safe.
|
||||||
|
|
||||||
|
* Search the intermediates only after searching the root certs in the
|
||||||
|
new verifier to avoid problems with the legacy callback.
|
||||||
|
|
||||||
|
* Bail out early after finding a single chain in the new verifier if
|
||||||
|
we have been called from the legacy verifier API.
|
||||||
|
|
||||||
|
* Set (invalid and likely incomplete) chain on the xsc on chain build
|
||||||
|
failure prior to calling the callback. This is required by things
|
||||||
|
like auto chain.
|
||||||
|
|
||||||
|
* Align SSL_get_shared_ciphers() with OpenSSL. This takes into account
|
||||||
|
that it never returned server ciphers, so now it will fail when
|
||||||
|
called from the client side.
|
||||||
|
|
||||||
|
* Added support for SSL_get_shared_ciphers() to TLSv1.3.
|
||||||
|
|
||||||
|
* Split the record protection from the TLSv1.2 record layer.
|
||||||
|
|
||||||
|
* Clean up sequence number handling in the new TLSv1.2 record layer.
|
||||||
|
|
||||||
|
* Clean up sequence number handling in DTLS.
|
||||||
|
|
||||||
|
* Clean up dtls1_reset_seq_numbers().
|
||||||
|
|
||||||
|
* Factor out code for explicit IV length, block size and MAC length.
|
||||||
|
|
||||||
|
* Provide record layer overhead for DTLS.
|
||||||
|
|
||||||
|
* Provide functions to determine if TLSv1.2 record protection is
|
||||||
|
engaged.
|
||||||
|
|
||||||
|
* Add code to handle change of cipehr state in the new TLSv1.2 record
|
||||||
|
layer.
|
||||||
|
|
||||||
|
* Mop up unused dtls1_build_sequence_numbers() function.
|
||||||
|
|
||||||
|
* Allow setting a keypair on a tls context without specifying the
|
||||||
|
private key and fake it internally in libtls. This removes the need
|
||||||
|
for privsep engines like relayd to use bogus keys.
|
||||||
|
|
||||||
|
* Skip the private key check for fake private keys.
|
||||||
|
|
||||||
|
* Move the private key setup to a helper function with proper error
|
||||||
|
checking.
|
||||||
|
|
||||||
|
* Change the internal tls_configure_ssl_keypair() function to
|
||||||
|
return -1 instead of 1 on failure.
|
||||||
|
|
||||||
|
* Move sequence numbers into the new TLSv1.2 record layer.
|
||||||
|
|
||||||
|
* Move AEAD handling into the new TLSv1.2 record layer.
|
||||||
|
|
||||||
|
* Remove direct assignment of aead_ctx to avoid a leak.
|
||||||
|
|
||||||
|
* Added a number of RPKI OIDs from RFC 6482, 6484, 6493, 8182, 8360,
|
||||||
|
draft-ietf-sidrops-rpki-rta, and draft-ietf-opsawg-finding-geofeeds.
|
||||||
|
|
||||||
|
* Fail early in legacy exporter if the master secret is not available
|
||||||
|
to avoid a segfault if it is called if the handshake is not
|
||||||
|
completed.
|
||||||
|
|
||||||
|
* Factor out legacy stack version checks.
|
||||||
|
|
||||||
|
* Correct handshake MAC/PRF for various TLSv1.2 cipher suites which
|
||||||
|
were originally added with the default handshake MAC and PRF rather
|
||||||
|
than hte SHA256 handshake MAC and PRF.
|
||||||
|
|
||||||
|
* Absorb ssl3_get_algorithm2() into ssl_get_handshake_evp_md().
|
||||||
|
|
||||||
|
* Use dtls1_record_retrieve_buffered_record() to load buffered
|
||||||
|
application data.
|
||||||
|
|
||||||
|
* Enforce read ahead with DTLS.
|
||||||
|
|
||||||
|
* Remove bogus DTLS checks to disable ECC and OCSP.
|
||||||
|
|
||||||
|
* Sync cert.pem with Mozilla NSS root CAs except "GeoTrust Global CA".
|
||||||
|
|
||||||
|
* Only print the certificate file once on verification failure.
|
||||||
|
|
||||||
|
* Pull in fix for EVP_CipherUpdate() overflow from OpenSSL.
|
||||||
|
|
||||||
|
* Clean up and simplify dtls1_get_cipher().
|
||||||
|
|
||||||
|
* Group HelloVerifyRequest decoding and add missing check for trailing
|
||||||
|
data.
|
||||||
|
|
||||||
|
* Revise HelloVerifyRequest handling for DTLSv1.2.
|
||||||
|
|
||||||
|
* Handle DTLS1_2_VERSION in various places.
|
||||||
|
|
||||||
|
* Add DTLSv1.2 methods.
|
||||||
|
|
||||||
|
* Make SSL{_CTX,}_get_{min,max}_proto_version() return a version of
|
||||||
|
zero if the minimum or maximum has been set to zero to match
|
||||||
|
OpenSSL's behavior.
|
||||||
|
|
||||||
|
* Rename the "truncated" label into "decode_err" and "f_err" into
|
||||||
|
"fatal_err".
|
||||||
|
|
||||||
|
* Factor out and change some of the legacy client version code.
|
||||||
|
|
||||||
|
* Simplify version checks in the TLSv1.3 client. Ensure that the
|
||||||
|
server announced TLSv1.3 and nothing higher and check that the
|
||||||
|
legacy_version is set to TLSv1.2 as required by RFC 8446.
|
||||||
|
|
||||||
|
* Fix an off-by-one in x509_verify_set_xsc_chain() to make sure that
|
||||||
|
the new validator checks for EXFLAG_CRITICAL in
|
||||||
|
x509_vfy_check_chain_extension() for all untrusted certs in the
|
||||||
|
chain. Take into account that the root is not necessarily trusted.
|
||||||
|
|
||||||
|
* Avoid passing last and depth to x509_verify_cert_error() on ENOMEM
|
||||||
|
|
||||||
|
* Rename depth to num_untrusted.
|
||||||
|
|
||||||
|
* Only use TLS versions internally rather than both TLS and DTLS
|
||||||
|
versions since the latter are the one's complement of the human
|
||||||
|
readable version numbers, which means that newer versions decrease
|
||||||
|
in values.
|
||||||
|
|
||||||
|
* Fix two bugs in the legacy verifier due to incorrect refactoring of
|
||||||
|
X509_verify_cert() for the new verifier: a return value was treated
|
||||||
|
as Boolean when it wasn't and thus it was not enough to decide
|
||||||
|
whether validation should carry on or not.
|
||||||
|
|
||||||
|
* Identify DTLS based on the version major value.
|
||||||
|
|
||||||
|
* Move handling of cipher/hash based cipher suites into the new record
|
||||||
|
layer.
|
||||||
|
|
||||||
|
* Add tls12_record_protection_unused() and call it from CCS functions.
|
||||||
|
|
||||||
|
* Move key/IV length checks closer to usage sites. Also add explicit
|
||||||
|
checks against EVP_CIPHER_{iv,key}_length().
|
||||||
|
|
||||||
|
* Replace two handrolled tls12_record_protection_engaged().
|
||||||
|
|
||||||
|
* Improve internal version handling: add handshake fields for our
|
||||||
|
minimum version, our maximum version and the TLS version negotiated
|
||||||
|
during the handshake. Convert most of the internal code to use these
|
||||||
|
version fields.
|
||||||
|
|
||||||
|
* Guard against future internal use of TLS1_get_{client,}_version()
|
||||||
|
macros.
|
||||||
|
|
||||||
|
* Remove the internal ssl_downgrade_max_version() which is no longer
|
||||||
|
needed.
|
||||||
|
|
||||||
|
* Fix checks for memory caps of constraints names. There are internal
|
||||||
|
caps on the number of name constraints and other names that the new
|
||||||
|
name constraints code allocates per cert chain. These checks were
|
||||||
|
checked too late, making these caps only partially effective.
|
||||||
|
|
||||||
|
* Use EXFLAG_INVALID to handle out of memory and parse errors in
|
||||||
|
x509v3_cache_extensions().
|
||||||
|
|
||||||
|
* Add support for DTLSv1.2 version handling.
|
||||||
|
|
||||||
|
* Enable DTLSv1.2 support.
|
||||||
|
|
||||||
|
* Add DTLSv1.2 support to openssl s_client/s_server.
|
||||||
|
|
||||||
|
* Remove no longer needed read ahead workarounds in the s_client and
|
||||||
|
s_server.
|
||||||
|
|
||||||
|
* Fix a copy-paste error a skid was confused with an akid when
|
||||||
|
checking for EXFLAG_INVALID. This broke OCSP validation with
|
||||||
|
certain mirrors.
|
||||||
|
|
||||||
|
* Made supported protocols and list of DHE more prominent in
|
||||||
|
tls_config_set_protocols.3. Various mdoc improvements for that
|
||||||
|
manual.
|
||||||
|
|
||||||
|
* Avoid a use-after-scope in tls13_cert_add()
|
||||||
|
|
||||||
|
* Split TLSv1.3 record protection from record layer.
|
||||||
|
|
||||||
|
* Move the TLSv1.3 handshake struct inside the shared handshake
|
||||||
|
struct.
|
||||||
|
|
||||||
|
* Fully initialize rrec in tls12_record_layer_open_record_protected()
|
||||||
|
to avoid confusing certain static analyzers.
|
||||||
|
|
||||||
|
* Use tls_set_errorx() on OCSP_basic_verify() failure since the latter
|
||||||
|
does not set errno.
|
||||||
|
|
||||||
|
* Convert openssl(1) x509 to new option handling and do the usual
|
||||||
|
clean up that goeas along with it.
|
||||||
|
|
||||||
|
* Add SSL_HANDSHAKE_TLS12 for TLSv1.2 specific handshake data.
|
||||||
|
|
||||||
|
* Rename new_cipher to cipher to align naming with keyblock or other
|
||||||
|
parts of the handshake data.
|
||||||
|
|
||||||
|
* Avoid mangled output in BIO_debug_callback().
|
||||||
|
|
||||||
|
* Fix client side renegotiation by replacing use of s->internal-type
|
||||||
|
with s->server.
|
||||||
|
|
||||||
|
* Avoid a symbol collision with SSL_is_dtls() between libssl and
|
||||||
|
openssl(1) in static builds.
|
||||||
|
|
||||||
|
* Move the TLSv1.2 record number increment into the new record layer.
|
||||||
|
|
||||||
|
* Move finished and peer finished into the handshake struct.
|
||||||
|
|
||||||
|
* Avoid transcript initialization when sending a TLS HelloRequest
|
||||||
|
to fix server side renegotiation.
|
||||||
|
|
||||||
|
* Remove pointless assignment in SSL_get0_alpn_selected().
|
||||||
|
|
||||||
|
* Provide EVP_PKEY_new_CMAC_KEY(3).
|
||||||
|
|
||||||
|
* Add missing prototype for d2i_DSAPrivateKey_fp(3) to x509.h.
|
||||||
|
|
||||||
|
* Show DTLSv1.2 message with openssl(1) s_server and s_client.
|
||||||
|
|
||||||
|
* Avoid leaking param->name in x509_verify_param_zero().
|
||||||
|
|
||||||
|
* Avoid a leak in an error path in openssl x509.
|
||||||
|
|
||||||
|
* Add some error checking to openssl x509.
|
||||||
|
|
||||||
|
* When sending an alert in TLSv1.3, only set its error code when no
|
||||||
|
other error was set previously. Certain clients rely on specific
|
||||||
|
SSL_R_ error codes to determine that they deal with a self signed
|
||||||
|
cert.
|
||||||
|
|
||||||
|
* Provide SSL_use_certificate_chain_file(3).
|
||||||
|
|
||||||
|
* Provide SSL_set_hostflags(3) and SSL_get0_peername(3).
|
||||||
|
|
||||||
|
* Provide various DTLSv1.2 specific functions and defines.
|
||||||
|
|
||||||
|
* Remove workarounds for SSL_is_dtls() in openssl(1).
|
||||||
|
|
||||||
|
* Document meaning of '*' in the genrsa output.
|
||||||
|
|
||||||
|
* Updated documentation for SSL_get_shared_ciphers(3).
|
||||||
|
|
||||||
|
* Add documentation for SSL_get_finished(3).
|
||||||
|
|
||||||
|
* Document EVP_PKEY_new_CMAC_key(3)
|
||||||
|
|
||||||
|
* Document SSL_use_certificate_chain_file(3).
|
||||||
|
|
||||||
|
* Document SSL_set_hostflags(3) and SSL_get0_peername(3).
|
||||||
|
|
||||||
|
* Update SSL_get_version.3 manualf or DTLSv.1.2 support.
|
||||||
|
|
||||||
3.3.1 - Security fix
|
3.3.1 - Security fix
|
||||||
|
|
||||||
* Malformed ASN.1 in a certificate revocation list or a timestamp
|
* Malformed ASN.1 in a certificate revocation list or a timestamp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user