Merge branch 'development-restricted' into prepare-rc-2.22.0-updated
* development-restricted: Parse HelloVerifyRequest buffer overread: add changelog entry Parse HelloVerifyRequest: avoid buffer overread at the start Parse HelloVerifyRequest: avoid buffer overread on the cookie
This commit is contained in:
commit
28482397d3
2 changed files with 16 additions and 2 deletions
|
@ -18,6 +18,8 @@ Security
|
|||
untrusted operating system attacking a secure enclave) to fully recover
|
||||
an ECDSA private key. Found and reported by Alejandro Cabrera Aldaya,
|
||||
Billy Brumley and Cesar Pereida Garcia. CVE-2020-10932
|
||||
* Fix a potentially remotely exploitable buffer overread in a
|
||||
DTLS client when parsing the Hello Verify Request message.
|
||||
|
||||
Features
|
||||
* The new build option MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH automatically
|
||||
|
|
|
@ -1578,6 +1578,19 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl )
|
|||
|
||||
MBEDTLS_SSL_DEBUG_MSG( 2, ( "=> parse hello verify request" ) );
|
||||
|
||||
/* Check that there is enough room for:
|
||||
* - 2 bytes of version
|
||||
* - 1 byte of cookie_len
|
||||
*/
|
||||
if( mbedtls_ssl_hs_hdr_len( ssl ) + 3 > ssl->in_msglen )
|
||||
{
|
||||
MBEDTLS_SSL_DEBUG_MSG( 1,
|
||||
( "incoming HelloVerifyRequest message is too short" ) );
|
||||
mbedtls_ssl_send_alert_message( ssl, MBEDTLS_SSL_ALERT_LEVEL_FATAL,
|
||||
MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR );
|
||||
return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO );
|
||||
}
|
||||
|
||||
/*
|
||||
* struct {
|
||||
* ProtocolVersion server_version;
|
||||
|
@ -1606,8 +1619,6 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl )
|
|||
}
|
||||
|
||||
cookie_len = *p++;
|
||||
MBEDTLS_SSL_DEBUG_BUF( 3, "cookie", p, cookie_len );
|
||||
|
||||
if( ( ssl->in_msg + ssl->in_msglen ) - p < cookie_len )
|
||||
{
|
||||
MBEDTLS_SSL_DEBUG_MSG( 1,
|
||||
|
@ -1616,6 +1627,7 @@ static int ssl_parse_hello_verify_request( mbedtls_ssl_context *ssl )
|
|||
MBEDTLS_SSL_ALERT_MSG_DECODE_ERROR );
|
||||
return( MBEDTLS_ERR_SSL_BAD_HS_SERVER_HELLO );
|
||||
}
|
||||
MBEDTLS_SSL_DEBUG_BUF( 3, "cookie", p, cookie_len );
|
||||
|
||||
mbedtls_free( ssl->handshake->verify_cookie );
|
||||
|
||||
|
|
Loading…
Reference in a new issue