Skip to content

Commit 71c569d

Browse files
Merge pull request #1286 from Mbed-TLS/mbedtls-3.6.1rc0-pr
Mbedtls 3.6.1rc0 PR
2 parents 72064b2 + 4c8ca72 commit 71c569d

File tree

133 files changed

+143305
-754
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

133 files changed

+143305
-754
lines changed

BRANCHES.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ The following branches are currently maintained:
107107
- [`development`](https://github.com/Mbed-TLS/mbedtls/)
108108
- [`mbedtls-3.6`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-3.6)
109109
maintained until March 2027, see
110-
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.0>.
110+
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v3.6.1>.
111111
- [`mbedtls-2.28`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-2.28)
112112
maintained until the end of 2024, see
113-
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v2.28.8>.
113+
<https://github.com/Mbed-TLS/mbedtls/releases/tag/v2.28.9>.
114114

115115
Users are urged to always use the latest version of a maintained branch.

CMakeLists.txt

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ cmake_policy(SET CMP0012 NEW)
4040
if(TEST_CPP)
4141
project("Mbed TLS"
4242
LANGUAGES C CXX
43-
VERSION 3.6.0
43+
VERSION 3.6.1
4444
)
4545
else()
4646
project("Mbed TLS"
4747
LANGUAGES C
48-
VERSION 3.6.0
48+
VERSION 3.6.1
4949
)
5050
endif()
5151

@@ -72,7 +72,7 @@ if(CMAKE_HOST_WIN32)
7272
# CMakeLists.txt.
7373
option(GEN_FILES "Generate the auto-generated files as needed" OFF) # off in development
7474
else()
75-
option(GEN_FILES "Generate the auto-generated files as needed" ON)
75+
option(GEN_FILES "Generate the auto-generated files as needed" OFF)
7676
endif()
7777

7878
option(DISABLE_PACKAGE_CONFIG_AND_INSTALL "Disable package configuration, target export and installation" ${MBEDTLS_AS_SUBPROJECT})
@@ -449,7 +449,7 @@ if(NOT DISABLE_PACKAGE_CONFIG_AND_INSTALL)
449449
write_basic_package_version_file(
450450
"cmake/MbedTLSConfigVersion.cmake"
451451
COMPATIBILITY SameMajorVersion
452-
VERSION 3.6.0)
452+
VERSION 3.6.1)
453453

454454
install(
455455
FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/MbedTLSConfig.cmake"

ChangeLog

+183
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,188 @@
11
Mbed TLS ChangeLog (Sorted per branch, date)
22

3+
= Mbed TLS 3.6.1 branch released 2024-08-30
4+
5+
API changes
6+
* The experimental functions psa_generate_key_ext() and
7+
psa_key_derivation_output_key_ext() are no longer declared when compiling
8+
in C++. This resolves a build failure under C++ compilers that do not
9+
support flexible array members (a C99 feature not adopted by C++).
10+
Fixes #9020.
11+
12+
Default behavior changes
13+
* In a PSA-client-only build (i.e. MBEDTLS_PSA_CRYPTO_CLIENT &&
14+
!MBEDTLS_PSA_CRYPTO_C), do not automatically enable local crypto when the
15+
corresponding PSA mechanism is enabled, since the server provides the
16+
crypto. Fixes #9126.
17+
* A TLS handshake may now call psa_crypto_init() if TLS 1.3 is enabled.
18+
This can happen even if TLS 1.3 is offered but eventually not selected
19+
in the protocol version negotiation.
20+
* By default, the handling of TLS 1.3 tickets by the Mbed TLS client is now
21+
disabled at runtime. Applications that were using TLS 1.3 tickets
22+
signalled by MBEDTLS_ERR_SSL_RECEIVED_NEW_SESSION_TICKET return values now
23+
need to enable the handling of TLS 1.3 tickets through the new
24+
mbedtls_ssl_conf_tls13_enable_signal_new_session_tickets() API.
25+
26+
New deprecations
27+
* The experimental functions psa_generate_key_ext() and
28+
psa_key_derivation_output_key_ext() are deprecated in favor of
29+
psa_generate_key_custom() and psa_key_derivation_output_key_custom().
30+
They have almost exactly the same interface, but the variable-length
31+
data is passed in a separate parameter instead of a flexible array
32+
member.
33+
* The following cryptographic mechanisms are planned to be removed
34+
in Mbed TLS 4.0:
35+
- DES (including 3DES).
36+
- PKCS#1v1.5 encryption/decryption (RSAES-PKCS1-v1_5).
37+
(OAEP, PSS, and PKCS#1v1.5 signature are staying.)
38+
- Finite-field Diffie-Hellman with custom groups.
39+
(RFC 7919 groups remain supported.)
40+
- Elliptic curves of size 225 bits or less.
41+
* The following cipher suites are planned to be removed from (D)TLS 1.2
42+
in Mbed TLS 4.0:
43+
- TLS_RSA_* (including TLS_RSA_PSK_*), i.e. cipher suites using
44+
RSA decryption.
45+
(RSA signatures, i.e. TLS_ECDHE_RSA_*, are staying.)
46+
- TLS_ECDH_*, i.e. cipher suites using static ECDH.
47+
(Ephemeral ECDH, i.e. TLS_ECDHE_*, is staying.)
48+
- TLS_DHE_*, i.e. cipher suites using finite-field Diffie-Hellman.
49+
(Ephemeral ECDH, i.e. TLS_ECDHE_*, is staying.)
50+
- TLS_*CBC*, i.e. all cipher suites using CBC.
51+
* The following low-level application interfaces are planned to be removed
52+
from the public API in Mbed TLS 4.0:
53+
- Hashes: hkdf.h, md5.h, ripemd160.h, sha1.h, sha3.h, sha256.h, sha512.h;
54+
- Random generation: ctr_drbg.h, hmac_drbg.h, entropy.h;
55+
- Ciphers and modes: aes.h, aria.h, camellia.h, chacha20.h, chachapoly.h,
56+
cipher.h, cmac.h, gcm.h, poly1305.h;
57+
- Private key encryption mechanisms: pkcs5.h, pkcs12.h.
58+
- Asymmetric cryptography: bignum.h, dhm.h, ecdh.h, ecdsa.h, ecjpake.h,
59+
ecp.h, rsa.h.
60+
The cryptographic mechanisms remain present, but they will only be
61+
accessible via the PSA API (psa_xxx functions introduced gradually
62+
starting with Mbed TLS 2.17) and, where relevant, `pk.h`.
63+
For guidance on migrating application code to the PSA API, please consult
64+
the PSA transition guide (docs/psa-transition.md).
65+
* The following integration interfaces are planned to be removed
66+
in Mbed TLS 4.0:
67+
- MBEDTLS_xxx_ALT replacement of cryptographic modules and functions.
68+
Use PSA transparent drivers instead.
69+
- MBEDTLS_PK_RSA_ALT and MBEDTLS_PSA_CRYPTO_SE_C.
70+
Use PSA opaque drivers instead.
71+
72+
Features
73+
* When the new compilation option MBEDTLS_PSA_KEY_STORE_DYNAMIC is enabled,
74+
the number of volatile PSA keys is virtually unlimited, at the expense
75+
of increased code size. This option is off by default, but enabled in
76+
the default mbedtls_config.h. Fixes #9216.
77+
78+
Security
79+
* Unlike previously documented, enabling MBEDTLS_PSA_HMAC_DRBG_MD_TYPE does
80+
not cause the PSA subsystem to use HMAC_DRBG: it uses HMAC_DRBG only when
81+
MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG and MBEDTLS_CTR_DRBG_C are disabled.
82+
CVE-2024-45157
83+
* Fix a stack buffer overflow in mbedtls_ecdsa_der_to_raw() and
84+
mbedtls_ecdsa_raw_to_der() when the bits parameter is larger than the
85+
largest supported curve. In some configurations with PSA disabled,
86+
all values of bits are affected. This never happens in internal library
87+
calls, but can affect applications that call these functions directly.
88+
CVE-2024-45158
89+
* With TLS 1.3, when a server enables optional authentication of the
90+
client, if the client-provided certificate does not have appropriate values
91+
in keyUsage or extKeyUsage extensions, then the return value of
92+
mbedtls_ssl_get_verify_result() would incorrectly have the
93+
MBEDTLS_X509_BADCERT_KEY_USAGE and MBEDTLS_X509_BADCERT_EXT_KEY_USAGE bits
94+
clear. As a result, an attacker that had a certificate valid for uses other
95+
than TLS client authentication could be able to use it for TLS client
96+
authentication anyway. Only TLS 1.3 servers were affected, and only with
97+
optional authentication (required would abort the handshake with a fatal
98+
alert).
99+
CVE-2024-45159
100+
101+
Bugfix
102+
* Fix TLS 1.3 client build and runtime when support for session tickets is
103+
disabled (MBEDTLS_SSL_SESSION_TICKETS configuration option). Fixes #6395.
104+
* Fix compilation error when memcpy() is a function-like macros. Fixes #8994.
105+
* MBEDTLS_ASN1_PARSE_C and MBEDTLS_ASN1_WRITE_C are now automatically enabled
106+
as soon as MBEDTLS_RSA_C is enabled. Fixes #9041.
107+
* Fix undefined behaviour (incrementing a NULL pointer by zero length) when
108+
passing in zero length additional data to multipart AEAD.
109+
* Fix rare concurrent access bug where attempting to operate on a
110+
non-existent key while concurrently creating a new key could potentially
111+
corrupt the key store.
112+
* Fix error handling when creating a key in a dynamic secure element
113+
(feature enabled by MBEDTLS_PSA_CRYPTO_SE_C). In a low memory condition,
114+
the creation could return PSA_SUCCESS but using or destroying the key
115+
would not work. Fixes #8537.
116+
* Fix issue of redefinition warning messages for _GNU_SOURCE in
117+
entropy_poll.c and sha_256.c. There was a build warning during
118+
building for linux platform.
119+
Resolves #9026
120+
* Fix a compilation warning in pk.c when PSA is enabled and RSA is disabled.
121+
* Fix the build when MBEDTLS_PSA_CRYPTO_CONFIG is enabled and the built-in
122+
CMAC is enabled, but no built-in unauthenticated cipher is enabled.
123+
Fixes #9209.
124+
* Fix redefinition warnings when SECP192R1 and/or SECP192K1 are disabled.
125+
Fixes #9029.
126+
* Fix psa_cipher_decrypt() with CCM* rejecting messages less than 3 bytes
127+
long. Credit to Cryptofuzz. Fixes #9314.
128+
* Fix interference between PSA volatile keys and built-in keys
129+
when MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS is enabled and
130+
MBEDTLS_PSA_KEY_SLOT_COUNT is more than 4096.
131+
* Document and enforce the limitation of mbedtls_psa_register_se_key()
132+
to persistent keys. Resolves #9253.
133+
* Fix Clang compilation error when MBEDTLS_USE_PSA_CRYPTO is enabled
134+
but MBEDTLS_DHM_C is disabled. Reported by Michael Schuster in #9188.
135+
* Fix server mode only build when MBEDTLS_SSL_SRV_C is enabled but
136+
MBEDTLS_SSL_CLI_C is disabled. Reported by M-Bab on GitHub in #9186.
137+
* When MBEDTLS_PSA_CRYPTO_C was disabled and MBEDTLS_ECDSA_C enabled,
138+
some code was defining 0-size arrays, resulting in compilation errors.
139+
Fixed by disabling the offending code in configurations without PSA
140+
Crypto, where it never worked. Fixes #9311.
141+
* Fix unintended performance regression when using short RSA public keys.
142+
Fixes #9232.
143+
* Fixes an issue where some TLS 1.2 clients could not connect to an
144+
Mbed TLS 3.6.0 server, due to incorrect handling of
145+
legacy_compression_methods in the ClientHello.
146+
Fixes #8995, #9243.
147+
* Fix TLS connections failing when the handshake selects TLS 1.3
148+
in an application that does not call psa_crypto_init().
149+
Fixes #9072.
150+
* Fix TLS connection failure in applications using an Mbed TLS client in
151+
the default configuration connecting to a TLS 1.3 server sending tickets.
152+
See the documentation of
153+
mbedtls_ssl_conf_tls13_enable_signal_new_session_tickets() for more
154+
information.
155+
Fixes #8749.
156+
* Fix a memory leak that could occur when failing to process an RSA
157+
key through some PSA functions due to low memory conditions.
158+
* Fixed a regression introduced in 3.6.0 where the CA callback set with
159+
mbedtls_ssl_conf_ca_cb() would stop working when connections were
160+
upgraded to TLS 1.3. Fixed by adding support for the CA callback with TLS
161+
1.3.
162+
* Fixed a regression introduced in 3.6.0 where clients that relied on
163+
optional/none authentication mode, by calling mbedtls_ssl_conf_authmode()
164+
with MBEDTLS_SSL_VERIFY_OPTIONAL or MBEDTLS_SSL_VERIFY_NONE, would stop
165+
working when connections were upgraded to TLS 1.3. Fixed by adding
166+
support for optional/none with TLS 1.3 as well. Note that the TLS 1.3
167+
standard makes server authentication mandatory; users are advised not to
168+
use authmode none, and to carefully check the results when using optional
169+
mode.
170+
* Fixed a regression introduced in 3.6.0 where context-specific certificate
171+
verify callbacks, set with mbedtls_ssl_set_verify() as opposed to
172+
mbedtls_ssl_conf_verify(), would stop working when connections were
173+
upgraded to TLS 1.3. Fixed by adding support for context-specific verify
174+
callback in TLS 1.3.
175+
176+
Changes
177+
* Warn if mbedtls/check_config.h is included manually, as this can
178+
lead to spurious errors. Error if a *adjust*.h header is included
179+
manually, as this can lead to silently inconsistent configurations,
180+
potentially resulting in buffer overflows.
181+
When migrating from Mbed TLS 2.x, if you had a custom config.h that
182+
included check_config.h, remove this inclusion from the Mbed TLS 3.x
183+
configuration file (renamed to mbedtls_config.h). This change was made
184+
in Mbed TLS 3.0, but was not announced in a changelog entry at the time.
185+
3186
= Mbed TLS 3.6.0 branch released 2024-03-28
4187

5188
API changes

ChangeLog.d/9126.txt

-5
This file was deleted.

ChangeLog.d/announce-4.0-removals.txt

-39
This file was deleted.

ChangeLog.d/asn1-missing-guard-in-rsa.txt

-3
This file was deleted.

ChangeLog.d/check-config.txt

-9
This file was deleted.

ChangeLog.d/disable-new-session-tickets.txt

-14
This file was deleted.

ChangeLog.d/dynamic-keystore.txt

-10
This file was deleted.

ChangeLog.d/fix-clang-psa-build-without-dhm.txt

-3
This file was deleted.

ChangeLog.d/fix-compilation-when-memcpy-is-function-like-macro.txt

-2
This file was deleted.

ChangeLog.d/fix-concurrently-loading-non-existent-keys.txt

-4
This file was deleted.

ChangeLog.d/fix-legacy-compression-issue.txt

-6
This file was deleted.

ChangeLog.d/fix-psa-cmac.txt

-4
This file was deleted.

ChangeLog.d/fix-redefination_warning_messages_for_GNU_SOURCE.txt

-5
This file was deleted.

ChangeLog.d/fix-rsa-performance-regression.txt

-3
This file was deleted.

ChangeLog.d/fix-secure-element-key-creation.txt

-5
This file was deleted.

ChangeLog.d/fix-server-mode-only-build.txt

-3
This file was deleted.

ChangeLog.d/fix-test-suite-pk-warnings.txt

-3
This file was deleted.

ChangeLog.d/fix_ubsan_mp_aead_gcm.txt

-3
This file was deleted.

ChangeLog.d/mbedtls_psa_register_se_key.txt

-3
This file was deleted.

ChangeLog.d/pk-norsa-warning.txt

-2
This file was deleted.

ChangeLog.d/psa_cipher_decrypt-ccm_star-iv_length_enforcement.txt

-3
This file was deleted.

ChangeLog.d/psa_generate_key_custom.txt

-14
This file was deleted.

0 commit comments

Comments
 (0)