12 KiB
title, description, ms.topic, ms.date
title | description | ms.topic | ms.date |
---|---|---|---|
BCD settings and BitLocker | This article for IT professionals describes the BCD settings that are used by BitLocker. | conceptual | 11/08/2022 |
Boot Configuration Data settings and BitLocker
This article for IT professionals describes the Boot Configuration Data (BCD) settings that are used by BitLocker.
When protecting data at rest on an operating system volume, during the boot process BitLocker verifies that the security sensitive BCD settings haven't changed since BitLocker was last enabled, resumed, or recovered.
BitLocker and BCD Settings
In Windows 7 and Windows Server 2008 R2, BitLocker validated BCD settings with the winload, winresume, and memtest prefixes to a large degree. However, this high degree of validation caused BitLocker to go into recovery mode for benign setting changes, for example, when applying a language pack, BitLocker would enter recovery mode.
In Windows 8, Windows Server 2012, and later operating systems, BitLocker narrows the set of BCD settings validated to reduce the chance of benign changes causing a BCD validation problem. If it's believed that there's a risk in excluding a particular BCD setting from the validation profile, include that BCD setting in the BCD validation coverage to suit the preferences for validation. If a default BCD setting is found to persistently trigger a recovery for benign changes, exclude that BCD setting from the validation coverage.
When secure boot is enabled
Computers with UEFI firmware can use secure boot to provide enhanced boot security. When BitLocker is able to use secure boot for platform and BCD integrity validation, as defined by the Allow Secure Boot for integrity validation group policy setting, the Use enhanced Boot Configuration Data validation profile group policy is ignored.
One of the benefits of using secure boot is that it can correct BCD settings during boot without triggering recovery events. Secure boot enforces the same BCD settings as BitLocker. Secure boot BCD enforcement isn't configurable from within the operating system.
Customizing BCD validation settings
To modify the BCD settings that are validated by BitLocker, the administrator will add or exclude BCD settings from the platform validation profile by enabling and configuring the Use enhanced Boot Configuration Data validation profile group policy setting.
For the purposes of BitLocker validation, BCD settings are associated with a specific set of Microsoft boot applications. These BCD settings can also be applied to the other Microsoft boot applications that aren't part of the set to which the BCD settings are already applicable for. This setting can be done by attaching any of the following prefixes to the BCD settings that are being entered in the group policy settings dialog:
- winload
- winresume
- memtest
- all of the above
All BCD settings are specified by combining the prefix value with either a hexadecimal (hex) value or a "friendly name."
The BCD setting hex value is reported when BitLocker enters recovery mode and is stored in the event log (event ID 523). The hex value uniquely identifies the BCD setting that caused the recovery event.
You can quickly obtain the friendly name for the BCD settings on a computer by using the command bcdedit.exe /enum all
.
Not all BCD settings have friendly names; for those settings without a friendly name, the hex value is the only way to configure an exclusion policy.
When specifying BCD values in the Use enhanced Boot Configuration Data validation profile group policy setting, use the following syntax:
- Prefix the setting with the boot application prefix
- Append a colon
:
- Append either the hex value or the friendly name
- If entering more than one BCD setting, each BCD setting will need to be entered on a new line
For example, either "winload:hypervisordebugport
" or "winload:0x250000f4
" yields the same value.
A setting that applies to all boot applications may be applied only to an individual application. However, the reverse isn't true. For example, one can specify either "all:locale
" or "winresume:locale
", but as the BCD setting "win-pe
" doesn't apply to all boot applications, "winload:winpe
" is valid, but "all:winpe
" isn't valid. The setting that controls boot debugging ("bootdebug
" or 0x16000010) will always be validated and will have no effect if it's included in the provided fields.
Note
Take care when configuring BCD entries in the Group Policy setting. The Local Group Policy Editor does not validate the correctness of the BCD entry. BitLocker will fail to be enabled if the Group Policy setting specified is invalid.
Default BCD validation profile
The following table contains the default BCD validation profile used by BitLocker in Windows 8, Windows Server 2012, and subsequent versions:
Hex Value | Prefix | Friendly Name |
---|---|---|
0x11000001 | all | device |
0x12000002 | all | path |
0x12000030 | all | loadoptions |
0x16000010 | all | bootdebug |
0x16000040 | all | advancedoptions |
0x16000041 | all | optionsedit |
0x16000048 | all | nointegritychecks |
0x16000049 | all | testsigning |
0x16000060 | all | isolatedcontext |
0x1600007b | all | forcefipscrypto |
0x22000002 | winload | systemroot |
0x22000011 | winload | kernel |
0x22000012 | winload | hal |
0x22000053 | winload | evstore |
0x25000020 | winload | nx |
0x25000052 | winload | restrictapiccluster |
0x26000022 | winload | winpe |
0x26000025 | winload | lastknowngood |
0x26000081 | winload | safebootalternateshell |
0x260000a0 | winload | debug |
0x260000f2 | winload | hypervisordebug |
0x26000116 | winload | hypervisorusevapic |
0x21000001 | winresume | filedevice |
0x22000002 | winresume | filepath |
0x26000006 | winresume | debugoptionenabled |
Full list of friendly names for ignored BCD settings
The following list is a full list of BCD settings with friendly names, which are ignored by default. These settings aren't part of the default BitLocker validation profile, but can be added if you see a need to validate any of these settings before allowing a BitLocker-protected operating system drive to be unlocked.
Note
Additional BCD settings exist that have hex values but do not have friendly names. These settings are not included in this list.
Hex Value | Prefix | Friendly Name |
---|---|---|
0x12000004 | all | description |
0x12000005 | all | locale |
0x12000016 | all | targetname |
0x12000019 | all | busparams |
0x1200001d | all | key |
0x1200004a | all | fontpath |
0x14000006 | all | inherit |
0x14000008 | all | recoverysequence |
0x15000007 | all | truncatememory |
0x1500000c | all | firstmegabytepolicy |
0x1500000d | all | relocatephysical |
0x1500000e | all | avoidlowmemory |
0x15000011 | all | debugtype |
0x15000012 | all | debugaddress |
0x15000013 | all | debugport |
0x15000014 | all | baudrate |
0x15000015 | all | channel |
0x15000018 | all | debugstart |
0x1500001a | all | hostip |
0x1500001b | all | port |
0x15000022 | all | emsport |
0x15000023 | all | emsbaudrate |
0x15000042 | all | keyringaddress |
0x15000047 | all | configaccesspolicy |
0x1500004b | all | integrityservices |
0x1500004c | all | volumebandid |
0x15000051 | all | initialconsoleinput |
0x15000052 | all | graphicsresolution |
0x15000065 | all | displaymessage |
0x15000066 | all | displaymessageoverride |
0x15000081 | all | logcontrol |
0x16000009 | all | recoveryenabled |
0x1600000b | all | badmemoryaccess |
0x1600000f | all | traditionalkseg |
0x16000017 | all | noumex |
0x1600001c | all | dhcp |
0x1600001e | all | vm |
0x16000020 | all | bootems |
0x16000046 | all | graphicsmodedisabled |
0x16000050 | all | extendedinput |
0x16000053 | all | restartonfailure |
0x16000054 | all | highestmode |
0x1600006c | all | bootuxdisabled |
0x16000072 | all | nokeyboard |
0x16000074 | all | bootshutdowndisabled |
0x1700000a | all | badmemorylist |
0x17000077 | all | allowedinmemorysettings |
0x22000040 | all | fverecoveryurl |
0x22000041 | all | fverecoverymessage |
0x31000003 | all | ramdisksdidevice |
0x32000004 | all | ramdisksdipath |
0x35000001 | all | ramdiskimageoffset |
0x35000002 | all | ramdisktftpclientport |
0x35000005 | all | ramdiskimagelength |
0x35000007 | all | ramdisktftpblocksize |
0x35000008 | all | ramdisktftpwindowsize |
0x36000006 | all | exportascd |
0x36000009 | all | ramdiskmcenabled |
0x3600000a | all | ramdiskmctftpfallback |
0x3600000b | all | ramdisktftpvarwindow |
0x21000001 | winload | osdevice |
0x22000013 | winload | dbgtransport |
0x220000f9 | winload | hypervisorbusparams |
0x22000110 | winload | hypervisorusekey |
0x23000003 | winload | resumeobject |
0x25000021 | winload | pae |
0x25000031 | winload | removememory |
0x25000032 | winload | increaseuserva |
0x25000033 | winload | perfmem |
0x25000050 | winload | clustermodeaddressing |
0x25000055 | winload | x2apicpolicy |
0x25000061 | winload | numproc |
0x25000063 | winload | configflags |
0x25000066 | winload | groupsize |
0x25000071 | winload | msi |
0x25000072 | winload | pciexpress |
0x25000080 | winload | safeboot |
0x250000a6 | winload | tscsyncpolicy |
0x250000c1 | winload | driverloadfailurepolicy |
0x250000c2 | winload | bootmenupolicy |
0x250000e0 | winload | bootstatuspolicy |
0x250000f0 | winload | hypervisorlaunchtype |
0x250000f3 | winload | hypervisordebugtype |
0x250000f4 | winload | hypervisordebugport |
0x250000f5 | winload | hypervisorbaudrate |
0x250000f6 | winload | hypervisorchannel |
0x250000f7 | winload | bootux |
0x250000fa | winload | hypervisornumproc |
0x250000fb | winload | hypervisorrootprocpernode |
0x250000fd | winload | hypervisorhostip |
0x250000fe | winload | hypervisorhostport |
0x25000100 | winload | tpmbootentropy |
0x25000113 | winload | hypervisorrootproc |
0x25000115 | winload | hypervisoriommupolicy |
0x25000120 | winload | xsavepolicy |
0x25000121 | winload | xsaveaddfeature0 |
0x25000122 | winload | xsaveaddfeature1 |
0x25000123 | winload | xsaveaddfeature2 |
0x25000124 | winload | xsaveaddfeature3 |
0x25000125 | winload | xsaveaddfeature4 |
0x25000126 | winload | xsaveaddfeature5 |
0x25000127 | winload | xsaveaddfeature6 |
0x25000128 | winload | xsaveaddfeature7 |
0x25000129 | winload | xsaveremovefeature |
0x2500012a | winload | xsaveprocessorsmask |
0x2500012b | winload | xsavedisable |
0x25000130 | winload | claimedtpmcounter |
0x26000004 | winload | stampdisks |
0x26000010 | winload | detecthal |
0x26000024 | winload | nocrashautoreboot |
0x26000030 | winload | nolowmem |
0x26000040 | winload | vga |
0x26000041 | winload | quietboot |
0x26000042 | winload | novesa |
0x26000043 | winload | novga |
0x26000051 | winload | usephysicaldestination |
0x26000054 | winload | uselegacyapicmode |
0x26000060 | winload | onecpu |
0x26000062 | winload | maxproc |
0x26000064 | winload | maxgroup |
0x26000065 | winload | groupaware |
0x26000070 | winload | usefirmwarepcisettings |
0x26000090 | winload | bootlog |
0x26000091 | winload | sos |
0x260000a1 | winload | halbreakpoint |
0x260000a2 | winload | useplatformclock |
0x260000a3 | winload | forcelegacyplatform |
0x260000a4 | winload | useplatformtick |
0x260000a5 | winload | disabledynamictick |
0x260000b0 | winload | ems |
0x260000c3 | winload | onetimeadvancedoptions |
0x260000c4 | winload | onetimeoptionsedit |
0x260000e1 | winload | disableelamdrivers |
0x260000f8 | winload | hypervisordisableslat |
0x260000fc | winload | hypervisoruselargevtlb |
0x26000114 | winload | hypervisordhcp |
0x21000005 | winresume | associatedosdevice |
0x25000007 | winresume | bootux |
0x25000008 | winresume | bootmenupolicy |
0x26000003 | winresume | customsettings |
0x26000004 | winresume | pae |
0x25000001 | memtest | passcount |
0x25000002 | memtest | testmix |
0x25000005 | memtest | stridefailcount |
0x25000006 | memtest | invcfailcount |
0x25000007 | memtest | matsfailcount |
0x25000008 | memtest | randfailcount |
0x25000009 | memtest | chckrfailcount |
0x26000003 | memtest | cacheenable |
0x26000004 | memtest | failuresenabled |