Anavem
Languagefr
How to Configure UEFI Memory Protection for VBS in Microsoft Intune

How to Configure UEFI Memory Protection for VBS in Microsoft Intune

Configure advanced UEFI Memory Attributes Table policies through Microsoft Intune to enable Hypervisor-Enforced Code Integrity and protect Windows devices against kernel-level attacks using Virtualization-Based Security.

April 25, 2026 18 min
hardintune 9 steps 18 min

Why Configure UEFI Memory Protection for Virtualization-Based Security?

Kernel-level attacks represent one of the most sophisticated threats to modern Windows environments. Traditional antivirus solutions operate at the user level and cannot effectively protect against malware that compromises the Windows kernel itself. This is where Virtualization-Based Security (VBS) and Hypervisor-Enforced Code Integrity (HVCI) become critical defense mechanisms.

UEFI Memory Protection, specifically the Memory Attributes Table (MAT) requirement, ensures that your device firmware properly supports the memory isolation needed for HVCI to function reliably. When properly configured through Microsoft Intune, this creates a hardware-enforced barrier that prevents even sophisticated rootkits and kernel exploits from executing malicious code in protected memory regions.

What Does HVCI Actually Protect Against?

HVCI leverages the Windows hypervisor to create isolated memory regions where critical kernel code executes. This protection specifically defends against:

  • Return-oriented programming (ROP) attacks that attempt to hijack kernel execution flow
  • Kernel code injection where malware tries to insert malicious code into kernel memory
  • Driver-based attacks using unsigned or vulnerable kernel drivers
  • Memory corruption exploits that attempt to modify kernel data structures

The UEFI Memory Attributes Table requirement adds an additional layer by ensuring the underlying firmware correctly marks memory regions with appropriate access permissions, preventing firmware-level bypass attempts.

How Does Microsoft Intune Simplify HVCI Deployment?

Managing HVCI across an enterprise traditionally required complex Group Policy configurations and manual registry modifications on each device. Microsoft Intune's Settings Catalog approach streamlines this by providing centralized policy management with automatic deployment and compliance monitoring. The configuration service provider (CSP) handles the low-level UEFI and hypervisor settings, while Intune provides the management layer for policy assignment, monitoring, and troubleshooting across your entire Windows device fleet.

Implementation Guide

Full Procedure

01

Verify Hardware and Firmware Compatibility

Before deploying UEFI Memory Protection policies, you need to confirm your devices meet the strict hardware requirements. HVCI requires specific firmware capabilities that aren't present on older systems.

First, check if your test device supports the required features. Open PowerShell as administrator and run:

Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard

Look for these critical values in the output:

  • VirtualizationBasedSecurityHardwareRequirementState: Should be "1" (Met)
  • HypervisorEnforcedCodeIntegrityHardwareRequirementState: Should be "1" (Met)
  • SecurityServicesConfigured: Should include "1" (Credential Guard) or "2" (HVCI)

Next, verify UEFI Memory Attributes Table support by checking the firmware version:

Get-ComputerInfo | Select-Object BiosFirmwareType, BiosVersion

If BiosFirmwareType shows "Uefi", check your manufacturer's documentation to confirm EFI_MEMORY_ATTRIBUTES_TABLE support. Most systems from 2018+ support this, but legacy firmware may cause boot failures.

Warning: Deploying HVCI on incompatible hardware will cause blue screen crashes. Always test on a pilot group first.

Verification: Run msinfo32 and search for "Virtualization-based security" - it should show hardware requirements as "Met".

02

Create UEFI Memory Protection Configuration Profile

Now you'll create the Intune configuration profile that enforces UEFI Memory Protection. This uses the Settings Catalog to configure Virtualization-Based Security policies.

Sign in to the Microsoft Intune admin center at https://endpoint.microsoft.com and navigate to Devices > Configuration > Create > New policy.

Configure the basic profile settings:

  • Platform: Windows 10 and later
  • Profile type: Settings catalog
  • Name: "UEFI Memory Protection - HVCI Enforcement"
  • Description: "Enables Hypervisor-Enforced Code Integrity with UEFI Memory Attributes Table requirement"

Click Next to proceed to configuration settings. In the Configuration settings section, click + Add settings and search for "Virtualization Based Technology".

You'll see several VBS-related settings appear. Select these key settings:

  • Hypervisor Enforced Code Integrity
  • Require UEFI Memory Attributes Table
  • Turn on Virtualization Based Security (if not already enabled)
Pro tip: Use the search function in Settings Catalog rather than browsing categories - it's much faster to find specific VBS settings.

Verification: Confirm you see all three settings added to your configuration profile before proceeding to the next step.

03

Configure Hypervisor-Enforced Code Integrity Settings

This step configures the core HVCI settings that provide kernel-level memory protection. The configuration determines how strictly the policy is enforced and whether it can be disabled remotely.

For the Hypervisor Enforced Code Integrity setting, you have three options:

Setting ValueDescriptionSecurity LevelReversibility
0 - DisabledHVCI turned offLowEasy
1 - Enabled with UEFI lockHVCI on, locked in firmwareHighestRequires BIOS access
2 - Enabled without UEFI lockHVCI on, can be disabled remotelyHighPolicy/registry change

For production environments, select "1 - Enabled with UEFI lock". This provides maximum security by preventing attackers from disabling HVCI even with administrative privileges.

Configure the Require UEFI Memory Attributes Table setting to "1 - Enabled". This forces the system to verify that the firmware properly supports memory attribute tables before enabling HVCI.

Warning: The UEFI lock option (value 1) can only be reversed by accessing BIOS/UEFI settings directly. Don't use this until you've thoroughly tested compatibility.

For the Turn on Virtualization Based Security setting, select "1 - Enabled" if VBS isn't already active on your devices.

Verification: Review your settings - HVCI should show "1", UEFI MAT should show "1", and VBS should show "1".

04

Configure Device Assignment and Deployment

Before deploying to production, you need to carefully plan your device targeting to avoid widespread compatibility issues. Start with a small pilot group to validate the configuration.

Click Next to reach the Assignments section. Create a pilot deployment first:

Click + Add group under Included groups and select a small test group (5-10 devices maximum). For the assignment type, choose:

  • Available for enrolled devices: Users can manually install from Company Portal
  • Required: Automatically deploys to all devices in the group

For pilot testing, use Required but limit the scope. Add exclusions if needed by clicking + Add group under Excluded groups.

Configure the deployment schedule:

{
  "deploymentType": "Required",
  "makeAvailableTime": "As soon as possible",
  "installDeadline": "As soon as possible",
  "restartGracePeriod": "4 hours",
  "restartNotification": "Show all notifications"
}

Click Next to review your configuration. Verify all settings are correct:

  • Profile name and description
  • VBS settings (HVCI=1, UEFI MAT=1, VBS=1)
  • Target groups (pilot only)
Pro tip: Create a dynamic device group based on device model or manufacturer to easily target compatible hardware for HVCI deployment.

Verification: Confirm the assignment shows your pilot group with "Required" deployment type before clicking Create.

05

Monitor Policy Deployment and Device Compliance

After creating the policy, you need to monitor its deployment status and ensure devices are applying the configuration correctly. Policy deployment can take several sync cycles to complete.

Navigate to Devices > Configuration and locate your "UEFI Memory Protection - HVCI Enforcement" profile. Click on it to view the deployment dashboard.

Monitor these key metrics:

  • Device status: Shows Success, Error, Conflict, or Not applicable
  • User status: User-based deployment results
  • Per-setting status: Individual setting deployment results

To force immediate policy sync on test devices, you can trigger manual sync:

# On the target device, run as administrator:
Get-ScheduledTask | Where-Object {$_.TaskName -eq "PushLaunch"} | Start-ScheduledTask

# Or use Intune remote action:
# Devices > All devices > Select device > Sync

Check for common deployment errors in the device details:

  • Error 0x80070032: Policy conflicts with existing configuration
  • Error 0x87D1FDE8: Setting not supported on this device
  • Error 0x80070005: Access denied (usually driver compatibility)
Warning: If you see widespread "Error" status, immediately check the excluded groups and pause deployment. Incompatible devices may experience boot failures.

Verification: Successful deployment should show "Success" status for all pilot devices within 2-4 hours of policy creation.

06

Verify HVCI Activation on Target Devices

Once the policy deploys successfully, you need to verify that HVCI is actually running and providing memory protection. The policy deployment success doesn't guarantee the feature is active.

On a test device, open Windows Security from the Start menu and navigate to Device security > Core isolation details. You should see:

  • Memory integrity: On
  • Microsoft Defender Application Guard: Available (if supported)

For command-line verification, run these PowerShell commands as administrator:

# Check VBS and HVCI status
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object *

# Verify specific HVCI status
(Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning

# Check for UEFI Memory Attributes Table
bcdedit /enum {current} | findstr hypervisorenforcedcodeintegrity

The SecurityServicesRunning should return "2" if HVCI is active. The bcdedit command should show "hypervisorenforcedcodeintegrity Yes".

You can also verify through System Information:

msinfo32

Search for "Virtualization-based security Services Running" - it should show "Yes" with HVCI listed.

Pro tip: Create a PowerShell script to check HVCI status across multiple devices using Invoke-Command for bulk verification.

Verification: Run Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object SecurityServicesRunning - should return "2".

07

Test Driver Compatibility and Resolve Issues

HVCI enforces strict driver signing and memory protection requirements. Incompatible drivers will prevent the system from booting or cause stability issues. You need to identify and resolve these before full deployment.

Check for incompatible drivers in Windows Security:

  1. Open Windows Security > Device security
  2. Click Core isolation details
  3. If available, click Review incompatible drivers

This shows drivers that don't meet HVCI requirements. Common problematic drivers include:

  • Older antivirus/security software
  • Legacy hardware drivers (especially network/graphics)
  • Virtualization software (VMware, VirtualBox)
  • Debugging/development tools

To identify problematic drivers via command line:

# Check for unsigned drivers
Get-WindowsDriver -Online | Where-Object {$_.DriverSignature -eq "Unsigned"}

# Check system event logs for HVCI violations
Get-WinEvent -FilterHashtable @{LogName='System'; ID=219} | Select-Object TimeCreated, Message

For driver issues, you have several options:

  • Update drivers: Download HVCI-compatible versions from manufacturer
  • Remove software: Uninstall incompatible applications
  • Exclude devices: Add problematic devices to exclusion groups
  • Use audit mode: Enable HVCI in audit mode first to identify issues without blocking boot
Warning: Never ignore driver compatibility warnings. Incompatible drivers can cause system instability, blue screens, or complete boot failure.

Verification: After resolving driver issues, restart the device and confirm HVCI remains active with no error events in the System log.

08

Expand Deployment to Production Groups

After successful pilot testing and driver compatibility validation, you can safely expand the UEFI Memory Protection policy to broader device groups. This requires careful planning and phased rollout.

Return to your configuration profile in the Intune admin center: Devices > Configuration > Select your HVCI profile > Assignments.

Plan your production rollout in phases:

PhaseTarget GroupDevice CountTimeline
1IT Department50-100Week 1
2Administrative Users200-500Week 2-3
3General Users1000+Week 4-6

For each phase, modify the assignments:

  1. Click Edit on the assignment
  2. Add new included groups for the current phase
  3. Maintain exclusion groups for incompatible devices
  4. Set deployment timing to "As soon as possible"

Monitor deployment metrics closely during each phase:

# PowerShell script to check HVCI status across domain computers
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
foreach ($computer in $computers) {
    try {
        $hvci = Invoke-Command -ComputerName $computer -ScriptBlock {
            (Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard).SecurityServicesRunning
        }
        Write-Output "$computer : HVCI Status = $hvci"
    }
    catch {
        Write-Output "$computer : Connection failed"
    }
}
Pro tip: Create separate configuration profiles for different hardware models if you encounter model-specific compatibility issues during rollout.

Verification: After each phase, confirm >95% success rate in the Intune deployment dashboard before proceeding to the next phase.

09

Configure Monitoring and Alerting for HVCI Status

Ongoing monitoring ensures HVCI remains active and alerts you to any security policy violations or compatibility issues that emerge after deployment.

Set up automated monitoring using Microsoft Defender for Endpoint or Azure Monitor. Create a custom detection rule for HVCI status:

// KQL query for HVCI monitoring in Microsoft Defender
DeviceInfo
| where Timestamp > ago(1d)
| extend HVCIStatus = iff(isnotempty(OSArchitecture) and OSArchitecture contains "x64", 
    iff(DeviceGuardSecurityServicesRunning has "2", "Enabled", "Disabled"), "N/A")
| where HVCIStatus == "Disabled"
| project Timestamp, DeviceName, OSVersion, HVCIStatus
| summarize DisabledDevices = dcount(DeviceName) by bin(Timestamp, 1h)

For environments without Defender for Endpoint, create a PowerShell monitoring script:

# HVCI monitoring script for scheduled execution
$logPath = "C:\Logs\HVCI-Monitor.log"
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

try {
    $deviceGuard = Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
    $hvciStatus = $deviceGuard.SecurityServicesRunning
    
    if ($hvciStatus -contains 2) {
        $status = "ENABLED"
    } else {
        $status = "DISABLED"
        # Send alert email or write to event log
        Write-EventLog -LogName Application -Source "HVCI Monitor" -EventId 1001 -EntryType Warning -Message "HVCI is disabled on $env:COMPUTERNAME"
    }
    
    "$timestamp - $env:COMPUTERNAME - HVCI Status: $status" | Out-File -FilePath $logPath -Append
}
catch {
    "$timestamp - $env:COMPUTERNAME - HVCI Check Failed: $($_.Exception.Message)" | Out-File -FilePath $logPath -Append
}

Deploy this script via Intune as a PowerShell script or scheduled task. Configure it to run daily and alert on HVCI failures.

Set up compliance policies to enforce HVCI status:

  1. Navigate to Devices > Compliance policies > Create policy
  2. Select Windows 10 and later platform
  3. Under System Security, configure custom compliance rules
Pro tip: Use Azure Log Analytics to centralize HVCI monitoring logs from all devices for trend analysis and reporting.

Verification: Test the monitoring by temporarily disabling HVCI on a test device and confirming alerts are generated within the expected timeframe.

Frequently Asked Questions

What happens if I deploy HVCI to devices without UEFI Memory Attributes Table support?+
Devices without proper EFI_MEMORY_ATTRIBUTES_TABLE support will experience boot failures or blue screen crashes when HVCI is enabled with UEFI MAT requirements. The system cannot properly isolate kernel memory without firmware support. Always test compatibility first and use device exclusion groups for legacy hardware. You can check support using Get-CimInstance Win32_DeviceGuard before deployment.
Can I reverse the UEFI lock setting if HVCI causes compatibility issues?+
Yes, but it requires physical access to the device. The UEFI lock prevents remote disabling of HVCI for security reasons. To reverse it, you must access the BIOS/UEFI settings directly and disable Secure Boot or VBS, then use 'bcdedit /set vsmlockpolicy 0' in an elevated PowerShell session. This is why thorough pilot testing is essential before using the lock option.
How much performance impact does HVCI have on Windows devices?+
HVCI typically adds 5-15% CPU overhead depending on workload characteristics. CPU-intensive applications and those with frequent kernel transitions see higher impact. Graphics-intensive applications may experience reduced performance due to additional memory protection checks. Monitor performance metrics during pilot deployment and consider excluding high-performance workstations if needed. The security benefits usually outweigh the performance cost for most enterprise scenarios.
Which drivers commonly cause HVCI compatibility issues?+
Legacy antivirus kernel drivers, older network adapter drivers, virtualization software (VMware Workstation, VirtualBox), debugging tools (WinDbg, Visual Studio drivers), and unsigned hardware drivers frequently cause issues. Gaming peripherals with kernel-level drivers and older VPN clients also problematic. Use Windows Security's 'Review incompatible drivers' feature to identify specific issues before deployment.
How do I monitor HVCI status across multiple devices after deployment?+
Use Microsoft Defender for Endpoint with KQL queries to monitor SecurityServicesRunning status, or deploy PowerShell monitoring scripts via Intune. Create compliance policies that check HVCI status and generate alerts for disabled devices. The Win32_DeviceGuard WMI class provides programmatic access to VBS status. Set up automated reporting using Azure Log Analytics to track HVCI deployment success rates and identify devices requiring attention.

Discussion

Share your thoughts and insights

Sign in to join the discussion