mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-11-09 23:00:03 +08:00
The TLS 1.3 server accepted a malformed key_share extension in the ClientHello and then closed the connection without sending an alert: - a zero-length key_exchange was accepted; - a key_exchange whose length did not match its group was only caught later, by the key agreement, which returned without pending an alert; - data trailing the client_shares list was ignored. Reject these in ssl_tls13_parse_key_shares_ext() and in the shared key-exchange reader mbedtls_ssl_tls13_read_public_xxdhe_share(): - a zero-length key_exchange and trailing data after client_shares are rejected with a decode_error alert; - a key_exchange whose length does not match the group is rejected with an illegal_parameter alert, which is what OpenSSL does. The shared reader is also used by the client, so it now checks that a ServerHello key_share is consumed exactly. Expose ssl_tls13_parse_key_shares_ext() with MBEDTLS_STATIC_TESTABLE and add unit tests that feed crafted key_share extensions to the server parser. Fixes #10887. Fixes #10737. Signed-off-by: Joachim Bauernberger <joachim.bauernberger@protonmail.com>
9 lines
527 B
Plaintext
9 lines
527 B
Plaintext
Bugfix
|
|
* On the TLS 1.3 server, reject a malformed key_share extension in the
|
|
ClientHello instead of closing the connection without an alert. A
|
|
zero-length key_exchange and trailing data after the client_shares list
|
|
are now rejected with a decode_error alert, and a key_exchange whose
|
|
length does not match the group with an illegal_parameter alert. The
|
|
shared key-exchange reader now also checks that a ServerHello key_share
|
|
is consumed exactly on the client side. Fixes #10887. Fixes #10737.
|