Merge pull request #5601 from SiliconLabs/erase_secret_before_free_backport_2_28

Backport 2.28: Erase secrets in allocated memory before freeing said memory
This commit is contained in:
Gilles Peskine
2022-03-07 17:04:01 +01:00
committed by GitHub
2 changed files with 6 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
Security
* Zeroize dynamically-allocated buffers used by the PSA Crypto key storage
module before freeing them. These buffers contain secret key material, and
could thus potentially leak the key through freed heap.

View File

@@ -347,6 +347,7 @@ psa_status_t psa_save_persistent_key( const psa_core_key_attributes_t *attr,
status = psa_crypto_storage_store( attr->id,
storage_data, storage_data_length );
mbedtls_platform_zeroize( storage_data, storage_data_length );
mbedtls_free( storage_data );
return( status );
@@ -392,6 +393,7 @@ psa_status_t psa_load_persistent_key( psa_core_key_attributes_t *attr,
status = PSA_ERROR_STORAGE_FAILURE;
exit:
mbedtls_platform_zeroize( loaded_data, storage_data_length );
mbedtls_free( loaded_data );
return( status );
}