BitLocker is a built-in encryption tool in Windows that provides strong protection and manageability for both individuals and enterprises. However, vulnerabilities in various TPM implementations, such as Intel PTT (CVE-2019-0090) or the TPM specification itself (CVE-2023-1017), prove that relying on the default configuration is not secure enough.
BitLocker has a wide attack surface, including various attacks on TPM, DMA attacks, or the AES-CBC cipher itself. Therefore, it is necessary to be aware of the risks and apply meaningful security policies.
In this blog post we will go through the most important security policies for BitLocker protections, their impact, and recommended settings.
Protection again attacks on TPM
By default, BitLocker relies just on the TPM module to protect secrets. While this is efficient, as it doesn’t force users to use any other password other than their user account password, an information leak vulnerability in TPM can help attackers completely bypass BitLocker.
We recommend supplementing TPM protection with an additional PIN or a startup key. The additional authentication method can be configured by GPO in:
Computer Configuration\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Require additional authentication at startup
If using PIN, we also recommend enabling enhanced PINs, as this policy allows you to create stronger, more complex PINs:
Computer Configuration\Administrative Templates\Windows Components\BitLocker Drive Encryption\Operating System Drives\Allow enhanced PINs for startup
Protecting BitLocker against DMA attacks
When a BitLocker-protected computer starts, it automatically loads the decryption key into the memory. The key is in memory even before the first user login or when the computer is locked. This allows attackers to abuse DMA interfaces, such as Thunderbolt, ExpressCard, or FireWire to extract the keys from memory.
Windows offers two ways to protect from such an attack. The first technique is to use a policy which restricts the installation of new DMA devices when computer is locked, available in:
Computer Configuration\Administrative Templates\Windows Components\BitLocker Drive Encryption\Disable new DMA devices when this computer is locked
While this policy offers a certain level of protection, it may lead to more compatibility issues.
The second, a more robust way, is to use Kernel DMA Protection. Kernel DMA Protection requires a compatible system (usually enterprise-grade computers manufactured after the year 2020). Intel VT-d/AMD-Vi enabled, and a TPM 2.0 module. On some compatible systems, Kernel DMA Protection and its prerequisites need to be enabled manually in the UEFI/BIOS.
Kernel DMA protection utilizes the IOMMU to create an isolated virtual memory for each DMA device. You can check whether your device is able to leverage this feature in the msinfo32.exe console under “Kernel DMA Protection”.
Upper-mentioned group policy is considered redundant when this more advanced feature is enabled.
Selecting a stronger cipher
BitLocker is configured to use AES-XTS and AES-CBS cipher by default, depending on whether it’s a system drive, fixed data drive or removable drive. Specifics of AES-CBS cipher and its BitLocker implementation mean that attackers may be able to perform a theoretical plaintext manipulation attack.
This was initially solved by an optional feature named elephant diffuser, which was removed in Windows 8. The feature removal was controversial at the time and seen as a move to weaken the encryption and appeal to governments.
We recommend using AES-XTS for all drive types. Drives encrypted with AES-XTS will only be unlockable by systems running Windows 10 version 1511 (released in 2015). Optionally, you can increase the key size from the default 128 bits to 256 bits.
The upper mentioned settings can be modified by the following policy:
Computer Configuration\Administrative Templates\Windows Components\BitLocker Drive Encryption\Choose drive encryption method and cipher strength (Windows 10 [Version 1511] and later)
Brute force protections
To prevent the brute force of user credentials, we recommend enabling an Account Lockout Policy. The policy prevents users from logging in for some amount of time after a specified number of unsuccessful attempts.
The policy can be set by modifying:
Computer Configuration\Windows Settings\Security Settings\Account Policies\Account Lockout Policy
The recommended settings vary based on the target environment, but we recommend setting the threshold to no more than 20 attempts.
Additionally, you can set up a total BitLocker lockout after a certain number of unsuccessful attempts. After the BitLocker lockout, users will be able to log in only with the recovery key.
Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Interactive Logon: Machine account lockout threshold
We recommend setting the threshold to a higher value than the threshold in the Account Lockout Policy.