mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 19:08:26 -06:00
Implement detection of volumes with vulnerable XTS master key.
If vulnerability detected, a warning message is displayed during mount or backup/restore header, and changing the password is disallowed since it will not change the master key.
This commit is contained in:
@@ -522,10 +522,16 @@ static NTSTATUS MountDrive (DriveFilterExtension *Extension, Password *password,
|
||||
|
||||
if (ReadVolumeHeader (!hiddenVolume, header, password, pkcs5_prf, pim, &Extension->Queue.CryptoInfo, Extension->HeaderCryptoInfo) == 0)
|
||||
{
|
||||
// Header decrypted
|
||||
// Header decrypted
|
||||
status = STATUS_SUCCESS;
|
||||
Dump ("Header decrypted\n");
|
||||
|
||||
if (Extension->HeaderCryptoInfo->bVulnerableMasterKey)
|
||||
{
|
||||
// The volume header master key is vulnerable
|
||||
Dump ("The volume header master key is vulnerable\n");
|
||||
}
|
||||
|
||||
// calculate Fingerprint
|
||||
ComputeBootLoaderFingerprint (Extension->LowerDeviceObject, header);
|
||||
|
||||
@@ -2017,6 +2023,7 @@ void GetBootEncryptionStatus (PIRP irp, PIO_STACK_LOCATION irpSp)
|
||||
bootEncStatus->ConfiguredEncryptedAreaStart = Extension->ConfiguredEncryptedAreaStart;
|
||||
bootEncStatus->ConfiguredEncryptedAreaEnd = Extension->ConfiguredEncryptedAreaEnd;
|
||||
bootEncStatus->EncryptedAreaStart = Extension->Queue.EncryptedAreaStart;
|
||||
bootEncStatus->MasterKeyVulnerable = Extension->HeaderCryptoInfo->bVulnerableMasterKey;
|
||||
|
||||
if (SetupInProgress)
|
||||
{
|
||||
|
||||
@@ -89,6 +89,7 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
|
||||
mount->VolumeMountedReadOnlyAfterDeviceWriteProtected = FALSE;
|
||||
mount->VolumeMountedReadOnlyAfterPartialSysEnc = FALSE;
|
||||
mount->VolumeMasterKeyVulnerable = FALSE;
|
||||
|
||||
// If we are opening a device, query its size first
|
||||
if (bRawDevice)
|
||||
@@ -648,6 +649,9 @@ NTSTATUS TCOpenVolume (PDEVICE_OBJECT DeviceObject,
|
||||
Dump ("Volume header decrypted\n");
|
||||
Dump ("Required program version = %x\n", (int) Extension->cryptoInfo->RequiredProgramVersion);
|
||||
Dump ("Legacy volume = %d\n", (int) Extension->cryptoInfo->LegacyVolume);
|
||||
Dump ("Master key vulnerable = %d\n", (int) Extension->cryptoInfo->bVulnerableMasterKey);
|
||||
|
||||
mount->VolumeMasterKeyVulnerable = Extension->cryptoInfo->bVulnerableMasterKey;
|
||||
|
||||
if (IsHiddenSystemRunning() && !Extension->cryptoInfo->hiddenVolume)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user