cryptodisk: Wipe out the cached keys from protectors
An attacker may insert a malicious disk with the same crypto UUID and trick GRUB to mount the fake root. Even though the key from the key protector fails to unlock the fake root, it's not wiped out cleanly so the attacker could dump the memory to retrieve the secret key. To defend such attack, wipe out the cached key when we don't need it. Cc: Fabian Vogt <fvogt@suse.com> Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> Tested-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
parent
6abf8af3c5
commit
b35480b48e
@ -1405,7 +1405,11 @@ grub_cryptodisk_clear_key_cache (struct grub_cryptomount_args *cargs)
|
||||
return;
|
||||
|
||||
for (i = 0; cargs->protectors[i]; i++)
|
||||
grub_free (cargs->key_cache[i].key);
|
||||
{
|
||||
if (cargs->key_cache[i].key)
|
||||
grub_memset (cargs->key_cache[i].key, 0, cargs->key_cache[i].key_len);
|
||||
grub_free (cargs->key_cache[i].key);
|
||||
}
|
||||
|
||||
grub_free (cargs->key_cache);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user