2243 words
11 minutes
Option 1 — Enabled:Boot Menu Protection

Option 1 — Enabled Menu Protection#

Current Support Status: Not currently supported by Windows


Table of Contents#

  1. What It Does
  2. Why It Exists
  3. Visual Anatomy — Policy Evaluation Stack
  4. How to Set It (PowerShell)
  5. XML Representation
  6. Interaction with Other Options
  7. When to Enable vs Disable
  8. Real-World Scenario — End-to-End Walkthrough
  9. What Happens If You Get It Wrong
  10. Valid for Supplemental Policies?
  11. OS Version Requirements
  12. Summary Table

1. What It Does#

Enabled:Boot Menu Protection is a WDAC / App Control for Business policy rule option with the index value 1 that, in its intended design, would prevent users from interrupting the boot sequence to access the Windows Advanced Boot Options menu — the menu that presents recovery options such as Safe Mode, Disable Driver Signature Enforcement, and Enable Low-Resolution Video. Accessing these options is a known pathway to bypassing code integrity enforcement because Safe Mode loads a minimal set of drivers and can disable or weaken Code Integrity policies. The intent of this option is to close that boot-time bypass by locking out the F8/Shift+F8 interrupt that normally surfaces the boot menu.

However, this option is currently not supported. Microsoft has defined the rule option in the WDAC schema and tooling, assigned it an index, and documented it in the policy XML specification, but the underlying operating system does not yet implement the enforcement behavior. Setting this option in a policy XML has no observable effect on the boot menu behavior at runtime. The option is reserved for a future Windows release.

Despite being non-functional today, it is important to understand its design intent, placement in the boot trust chain, and what compensating controls exist in the current OS to achieve the same goal through other means (Secure Boot configuration, BitLocker lockout policies, and UEFI password protection).


2. Why It Exists#

The Boot-Time Attack Vector#

The Windows Advanced Boot Options menu (F8 during boot) is one of the few remaining user-accessible pathways to modify kernel behavior after Secure Boot has handed control to the Windows Boot Manager. Specifically:

  • “Disable Driver Signature Enforcement” — Temporarily disables kernel-mode code integrity for the duration of that boot session. An attacker or privileged user can use this option to load unsigned drivers, rootkits, or kernel-level implants that would otherwise be blocked by WDAC.
  • Safe Mode — Loads a minimal driver set and may start fewer security services. Some EDR/AV products do not fully initialize in Safe Mode, creating a window for tampering.
  • Startup Settings → Disable Early Launch Antimalware — Disables ELAM protection, removing the first-boot malware scan.

The Threat Model#

flowchart TD
    classDef threat fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef protect fill:#0d1f12,color:#86efac,stroke:#166534
    classDef neutral fill:#162032,color:#58a6ff,stroke:#1e3a5f
    classDef option fill:#1a1a0d,color:#fde68a,stroke:#713f12

    A([Attacker with physical\nor admin access]) --> B{Press F8 at boot}:::threat
    B --> C[Advanced Boot Options menu]:::threat
    C --> D[Disable Driver Signature\nEnforcement]:::threat
    C --> E[Boot into Safe Mode]:::threat
    C --> F[Disable ELAM]:::threat
    D --> G([Unsigned driver / rootkit loads\nWDAC kernel CI bypassed]):::threat
    E --> H([EDR/AV not initialized\nTampering possible]):::threat
    F --> I([First-boot malware scan\nskipped]):::threat

    J([Option 1 Design Intent]) --> K{Lock F8 menu\nwhen WDAC enforced}:::option
    K --> L([Boot menu inaccessible\nduring enforced policy]):::protect

Why a Dedicated Option Is Needed#

Secure Boot alone does not prevent F8 boot menu access — it only validates the bootloader signature before handing control to the Windows Boot Manager. Once the signed bootloader is running, it provides the F8 pathway as a user convenience feature. Revoking that convenience programmatically, through the active Code Integrity policy, was the architectural goal of Option 1.


3. Visual Anatomy — Policy Evaluation Stack#

flowchart TD
    classDef kernel fill:#162032,color:#58a6ff,stroke:#1e3a5f
    classDef usermode fill:#0d1f12,color:#86efac,stroke:#166534
    classDef option fill:#1a1a0d,color:#fde68a,stroke:#713f12
    classDef unsupported fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef neutral fill:#1c1c2e,color:#a5b4fc,stroke:#3730a3

    A([System Power On]) --> B[UEFI Firmware]:::kernel
    B --> C[Secure Boot Validation]:::kernel
    C --> D[Windows Boot Manager\nbootmgfw.efi]:::kernel
    D --> E{F8 / Shift+F8\nDetected?}:::neutral

    E -- Yes --> F{Option 1\nEnabled:Boot Menu Protection\nPresent in Policy?}:::option
    F -- Yes & Supported --> G([Boot menu BLOCKED]):::kernel
    F -- Yes & NOT Supported --> H([Boot menu shows ANYWAY\nOption 1 has no effect today]):::unsupported
    F -- No --> I([Boot menu shows\nnormally]):::neutral

    E -- No --> J[Windows OS Loader\nwinload.efi]:::kernel
    G --> J
    J --> K[Early Launch Anti-Malware\nELAM]:::kernel
    K --> L[Kernel + Drivers Load\nCode Integrity checks]:::kernel
    L --> M[User Session Starts\nWDAC Enforcement]:::usermode

Current Reality vs Intended Design#

flowchart LR
    classDef intended fill:#0d1f12,color:#86efac,stroke:#166534
    classDef actual fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef neutral fill:#162032,color:#58a6ff,stroke:#1e3a5f

    subgraph Intended["Intended Behavior (Future)"]
        direction TB
        A1([Option 1 in Policy]) --> B1([Boot Manager reads policy]):::intended
        B1 --> C1([F8 menu disabled]):::intended
        C1 --> D1([Boot-time bypass closed]):::intended
    end

    subgraph Actual["Actual Behavior (Today)"]
        direction TB
        A2([Option 1 in Policy]) --> B2([Boot Manager ignores option]):::actual
        B2 --> C2([F8 menu available]):::actual
        C2 --> D2([Boot-time bypass possible]):::actual
    end

4. How to Set It (PowerShell)#

Although the option has no runtime effect today, the PowerShell syntax is defined and functional for XML manipulation. It is documented here for completeness and future readiness.

Set Option 1 (No-Op Today)#

Terminal window
# Enable Option 1 — no effect on current Windows versions
Set-RuleOption -FilePath "C:\Policies\MyBasePolicy.xml" -Option 1

Remove Option 1#

Terminal window
# Remove Option 1
Set-RuleOption -FilePath "C:\Policies\MyBasePolicy.xml" -Option 1 -Delete

Verify the Option Is Present in Policy XML#

Terminal window
[xml]$Policy = Get-Content "C:\Policies\MyBasePolicy.xml"
$ns = New-Object System.Xml.XmlNamespaceManager($Policy.NameTable)
$ns.AddNamespace("si", "urn:schemas-microsoft-com:sipolicy")
$rules = $Policy.SelectNodes("//si:Rule/si:Option", $ns) | Select-Object -ExpandProperty '#text'
if ($rules -contains "Enabled:Boot Menu Protection") {
Write-Host "Option 1 (Boot Menu Protection) is SET in policy XML" -ForegroundColor Yellow
Write-Host "NOTE: This option has no effect on current Windows versions." -ForegroundColor Red
} else {
Write-Host "Option 1 is not set." -ForegroundColor Gray
}

Compensating Controls (Current Best Practice)#

Since Option 1 is non-functional, the following compensating controls achieve the equivalent security goal today:

Terminal window
# 1. Disable F8 boot menu via bcdedit (disables Advanced Options prompt)
bcdedit /set {bootmgr} displaybootmenu no
bcdedit /set {default} bootmenupolicy standard
# 2. Set a short boot timeout (prevents F8 window)
bcdedit /timeout 0
# 3. Require BitLocker PIN at boot (physical access attack mitigated)
# Enable BitLocker with TPM+PIN:
Enable-BitLocker -MountPoint "C:" -TpmAndPinProtector -Pin (Read-Host -AsSecureString "Enter PIN")
# 4. Lock UEFI settings with administrator password (prevent boot order change)
# (Done via UEFI firmware interface — no PowerShell API)
# 5. Verify HVCI is enabled (makes kernel CI tamper-resistant)
$hvci = Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
$hvci.SecurityServicesRunning # Should include 2 (HVCI)

5. XML Representation#

Option 1 Present in Policy XML#

<?xml version="1.0" encoding="utf-8"?>
<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy" PolicyType="Base Policy">
<VersionEx>10.0.0.0</VersionEx>
<PolicyTypeID>{A244370E-44C9-4C06-B551-F6016E563076}</PolicyTypeID>
<Rules>
<Rule>
<Option>Enabled:UMCI</Option>
</Rule>
<Rule>
<Option>Enabled:Boot Menu Protection</Option>
</Rule>
</Rules>
</SiPolicy>

XML Schema Reference#

The WDAC XML schema (sipolicy.xsd) includes Enabled:Boot Menu Protection as a valid enumeration value in the RuleOptionType simple type. This is why Set-RuleOption accepts it without error and ConvertFrom-CIPolicy produces a valid binary. The binary compiler includes the option bit in the compiled policy, but the boot manager does not yet read or act on that bit.


6. Interaction with Other Options#

Option Relationship Matrix#

OptionNameRelationship with Option 1
0EnabledIndependent; UMCI is user-mode enforcement, Option 1 is boot-time
2RequiredIndependent; WHQL is driver signing, Option 1 is boot menu access
3Enabled ModeIndependent; audit mode does not affect boot menu
9Enabled Boot Options MenuDirect counterpart — Option 9 explicitly enables the advanced boot menu; intended conflict with Option 1
10Enabled Audit on FailureRelated — both operate in the boot trust chain

Interaction with Option 9#

flowchart TD
    classDef option fill:#1a1a0d,color:#fde68a,stroke:#713f12
    classDef conflict fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef neutral fill:#162032,color:#58a6ff,stroke:#1e3a5f

    Opt1["Option 1\nEnabled:Boot Menu Protection\n(Blocks F8 menu)"]:::option
    Opt9["Option 9\nEnabled:Advanced Boot Options Menu\n(Enables F8 menu when policy fails)"]:::option

    Opt1 -->|"Intended conflict\n(one locks, one enables)"| Opt9
    note1["NOTE: Since Option 1 is unsupported,\nOption 9 currently wins by default"]:::conflict
    Opt9 --> note1

7. When to Enable vs Disable#

flowchart TD
    classDef yes fill:#0d1f12,color:#86efac,stroke:#166534
    classDef no fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef warn fill:#1a1a0d,color:#fde68a,stroke:#713f12
    classDef question fill:#162032,color:#58a6ff,stroke:#1e3a5f

    Start([Should I set Option 1?]) --> Q1{Is this a future-proofing\nor schema compliance exercise?}:::question
    Q1 -- Yes --> WARN1([Set it in XML for future readiness\nbut expect NO current enforcement]):::warn
    Q1 -- No --> Q2{Do you want to prevent\nF8 boot menu access NOW?}:::question
    Q2 -- Yes --> COMP([Use compensating controls:\nbcdedit, BitLocker PIN, UEFI password]):::yes
    Q2 -- No --> SKIP([Leave Option 1 unset\nNo current benefit to setting it]):::no

    WARN1 --> NOTE([Document in change log:\nOption 1 is pending OS support]):::warn

Decision Reference Table#

ScenarioRecommendation
High-security endpoint requiring boot menu lockoutUse bcdedit + BitLocker PIN (compensating controls)
Future OS compatibility preparationSet Option 1 in base policy with documentation note
Standard enterprise rolloutOmit Option 1; no current benefit
Research / lab environment testing future featuresSet Option 1 to observe when OS support arrives
Compliance requirement citing “boot menu protection”Implement via compensating controls; note Option 1 gap in risk register

8. Real-World Scenario — End-to-End Walkthrough#

Scenario: Insider Threat Attempts Safe Mode Bypass#

An insider with physical access to an endpoint attempts to bypass WDAC enforcement by booting into Safe Mode to load an unsigned driver and exfiltrate data. This walkthrough shows current behavior vs intended behavior.

sequenceDiagram
    autonumber
    actor Insider as Insider Threat
    participant Physical as Physical Machine
    participant UEFI as UEFI Secure Boot
    participant BootMgr as Windows Boot Manager
    participant BootMenu as Advanced Boot Options
    participant SafeMode as Safe Mode Session
    participant WDAC as WDAC Enforcement

    Note over Insider,WDAC: CURRENT BEHAVIOR (Option 1 not supported)
    Insider ->> Physical: Power on / restart machine
    Physical ->> UEFI: POST and Secure Boot validation
    UEFI -->> BootMgr: Bootloader validated, launch
    Insider ->> BootMgr: Press F8 during boot
    BootMgr ->> BootMenu: Display Advanced Boot Options
    Note over BootMenu: Option 1 in policy — NO EFFECT today
    Insider ->> BootMenu: Select "Safe Mode"
    BootMenu ->> SafeMode: Boot into Safe Mode
    SafeMode -->> WDAC: WDAC partially active or weakened
    Insider ->> SafeMode: Load unsigned driver via sc.exe
    SafeMode -->> Insider: Driver loads (WDAC weakened in Safe Mode)

    Note over Insider,WDAC: INTENDED BEHAVIOR (When Option 1 is supported)
    Insider ->> Physical: Power on / restart machine
    Physical ->> UEFI: POST and Secure Boot validation
    UEFI -->> BootMgr: Bootloader validated, launch
    BootMgr ->> BootMgr: Read active WDAC policy
    BootMgr ->> BootMgr: Detect Option 1 (Boot Menu Protection)
    Insider ->> BootMgr: Press F8 during boot
    BootMgr -->> Insider: F8 BLOCKED — boot continues normally
    BootMgr ->> SafeMode: Normal boot — WDAC fully enforced

Current Compensating Control Walkthrough#

sequenceDiagram
    autonumber
    actor Admin
    participant Endpoint as Endpoint Machine
    participant bcdedit as bcdedit Tool
    participant BitLocker as BitLocker Service
    participant UEFI as UEFI Firmware

    Admin ->> bcdedit: bcdedit /set {bootmgr} displaybootmenu no
    bcdedit -->> Admin: Boot menu timeout suppressed
    Admin ->> bcdedit: bcdedit /timeout 0
    bcdedit -->> Admin: Zero-second boot timeout set
    Admin ->> BitLocker: Enable-BitLocker with TPM+PIN protector
    BitLocker -->> Admin: Drive encrypted; PIN required at boot
    Admin ->> UEFI: Set UEFI administrator password
    UEFI -->> Admin: UEFI settings locked
    Admin ->> Endpoint: Verify: attempt F8 at next boot
    Endpoint -->> Admin: Boot proceeds directly to Windows
    Note over Admin,UEFI: Option 1 effect achieved via compensating controls

9. What Happens If You Get It Wrong#

Misunderstanding: Assuming Option 1 Works Today#

flowchart TD
    classDef block fill:#1f0d0d,color:#fca5a5,stroke:#7f1d1d
    classDef warn fill:#1a1a0d,color:#fde68a,stroke:#713f12
    classDef ok fill:#0d1f12,color:#86efac,stroke:#166534

    A([Admin sets Option 1 in policy\nassuming it works]) --> B{OS enforces it?}
    B -- No --> C([False security assurance]):::block
    C --> D([Boot menu bypass available]):::block
    D --> E([Attacker uses F8 to enter Safe Mode]):::block
    E --> F([WDAC weakened in Safe Mode]):::block
    F --> G([Unsigned driver / malware loads]):::block
    B -- Yes FUTURE --> H([Boot menu locked]):::ok

Misunderstanding: Not Knowing It Is Non-Functional#

An organization includes Option 1 in their WDAC baseline policy believing it closes the boot menu bypass vector. Their security audit passes because the policy XML contains the option. However, the control is not actually enforced, creating a compliance gap and a real security hole.

Mitigation: Always document Option 1 as “pending OS support” in your policy change log, and implement the bcdedit + BitLocker + UEFI compensating controls to achieve the actual security objective.

Misconfig Consequences Summary#

MistakeImpactSeverity
Relying on Option 1 without compensating controlsBoot menu bypass unclosedCritical — unmitigated bypass
Setting Option 1 thinking it blocks F8 todayFalse security postureHigh — compliance gap
Not documenting Option 1 as non-functionalAudit findings at security reviewMedium
Not implementing bcdedit compensating controlsBoot-time attack surface openHigh

10. Valid for Supplemental Policies?#

No. Enabled:Boot Menu Protection is defined as a base-policy-only option. Even if it were supported by the OS, its effect would need to apply at the boot manager level before any user or tenant context is established — a point in the boot sequence where supplemental policies (which extend base policies at runtime) have no relevance. Supplemental policies are merged into the base policy by the Code Integrity engine after the kernel loads; they cannot retroactively affect the boot manager’s behavior.


11. OS Version Requirements#

Windows VersionStatus
Windows 10 (all versions to date)Not supported — option defined but not enforced
Windows 11 (all versions to date)Not supported — same status
Windows Server 2016–2022Not supported
Future Windows release (TBD)Pending implementation by Microsoft

Official Microsoft Guidance: “This option isn’t currently supported.” — Windows App Control for Business documentation.

Why It Appears in Tooling Despite Being Unsupported#

The rule option schema is versioned independently of OS enforcement capability. Microsoft pre-registers options in the schema to allow policy authors to future-proof their XML, enabling a smooth transition when OS support is eventually added without requiring policy rewrites. Setting the option today ensures the binary policy will automatically take effect once the OS gains enforcement support — provided the policy is redeployed or remains active.


12. Summary Table#

AttributeValue
Rule Option NameEnabled:Boot Menu Protection
Rule Option Index1
Default StateNot set
Current OS EnforcementNone — not yet supported
Intended Effect when EnabledBlock F8 / Advanced Boot Options menu during enforced WDAC boot
Intended Effect when DisabledAdvanced Boot Options accessible (default behavior)
Valid in Base PolicyYes (syntactically valid, semantically no-op)
Valid in Supplemental PolicyNo
Requires RebootN/A (no effect)
Compensating Controlsbcdedit displaybootmenu no, bcdedit /timeout 0, BitLocker TPM+PIN, UEFI password
Option 9 RelationshipDirect counterpart — Option 9 enables boot menu, Option 1 intended to disable it
Minimum OS Version for EnforcementUnknown — future Windows release
PowerShell Cmdlet (Set)Set-RuleOption -FilePath <xml> -Option 1
PowerShell Cmdlet (Remove)Set-RuleOption -FilePath <xml> -Option 1 -Delete
Risk if Misconstrued as WorkingCritical — unmitigated boot-time bypass pathway
Documentation StatusPre-registered in schema; enforcement pending
Option 1 — Enabled:Boot Menu Protection
https://mranv.pages.dev/posts/app-control-rule-option-01-boot-menu-protection/
Author
Anubhav Gain
Published at
2026-05-02
License
CC BY-NC-SA 4.0