bootutil: Fix AES and SHA-256 contexts not zeroized with mbedTLS
For some reason, the calls to mbedtls_aes_free, mbedtls_nist_kw_free and mbedtls_sha256_free_drop were commented out which means the AES and SHA-256 contexts were not properly de-initialized after usage when mbedTLS is used. In the case of AES-KW it seems that might lead to a memory leak depending on the mbedTLS configuration, but in any case and independently of the mbedTLS configuration, this leads to the contexts not be zeroized after usage. Not zeroizing a context means it stays in RAM an undefined amount of time, which might enable an attacker to access it and to dump the sensitive data it contains. Signed-off-by: Thomas Altenbach <thomas.altenbach@legrand.com>
This commit is contained in:
parent
ca06b9fe6d
commit
5d5f04923f
|
@ -53,9 +53,7 @@ static inline void bootutil_aes_ctr_init(bootutil_aes_ctr_context *ctx)
|
||||||
|
|
||||||
static inline void bootutil_aes_ctr_drop(bootutil_aes_ctr_context *ctx)
|
static inline void bootutil_aes_ctr_drop(bootutil_aes_ctr_context *ctx)
|
||||||
{
|
{
|
||||||
/* XXX: config defines MBEDTLS_PLATFORM_NO_STD_FUNCTIONS so no need to free */
|
mbedtls_aes_free(ctx);
|
||||||
/* (void)mbedtls_aes_free(ctx); */
|
|
||||||
(void)ctx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int bootutil_aes_ctr_set_key(bootutil_aes_ctr_context *ctx, const uint8_t *k)
|
static inline int bootutil_aes_ctr_set_key(bootutil_aes_ctr_context *ctx, const uint8_t *k)
|
||||||
|
|
|
@ -45,9 +45,7 @@ static inline void bootutil_aes_kw_init(bootutil_aes_kw_context *ctx)
|
||||||
|
|
||||||
static inline void bootutil_aes_kw_drop(bootutil_aes_kw_context *ctx)
|
static inline void bootutil_aes_kw_drop(bootutil_aes_kw_context *ctx)
|
||||||
{
|
{
|
||||||
/* XXX: config defines MBEDTLS_PLATFORM_NO_STD_FUNCTIONS so no need to free */
|
mbedtls_nist_kw_free(ctx);
|
||||||
/* (void)mbedtls_aes_free(ctx); */
|
|
||||||
(void)ctx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int bootutil_aes_kw_set_unwrap_key(bootutil_aes_kw_context *ctx, const uint8_t *k, uint32_t klen)
|
static inline int bootutil_aes_kw_set_unwrap_key(bootutil_aes_kw_context *ctx, const uint8_t *k, uint32_t klen)
|
||||||
|
|
|
@ -126,9 +126,7 @@ static inline int bootutil_sha_init(bootutil_sha_context *ctx)
|
||||||
|
|
||||||
static inline int bootutil_sha_drop(bootutil_sha_context *ctx)
|
static inline int bootutil_sha_drop(bootutil_sha_context *ctx)
|
||||||
{
|
{
|
||||||
/* XXX: config defines MBEDTLS_PLATFORM_NO_STD_FUNCTIONS so no need to free */
|
mbedtls_sha256_free(ctx);
|
||||||
/* (void)mbedtls_sha256_free(ctx); */
|
|
||||||
(void)ctx;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue