Kick Off 2026 Right: Audit Your Windows Endpoints for Secure Boot Certificate Readiness

Hey folks, happy 2026!

As we start the new year, one thing every Windows admin should check off the list is verifying that your endpoints are ready for the Microsoft Secure Boot certificate transition. The old 2011 certificates start expiring in June 2026, and without the new Windows UEFI CA 2023 in place, devices won’t receive future boot manager security updates—leaving them vulnerable.

Microsoft is rolling out the 2023 certificates via Windows Update, but it’s smart to audit your fleet now and confirm the status. If you haven’t yet, make sure you have applied the needed Intune configuration profile your Windows endpoints through Intune:

Secure Boot CSP Documentation – Microsoft

Next, you’re going want to audit your environment – so here is a script to help. Deploy this through Intune Detections & Remediations for a nice interactive report for review!

Here’s the script: GitHub Link (V2 updates 3/14/2026)

<#
.SYNOPSIS
  Check Secure Boot state and whether 'Windows UEFI CA 2023' is present in dbdefault and db.

.DESCRIPTION
  - Verifies Secure Boot is enabled (uses Confirm-SecureBootUEFI if available).
  - Reads UEFI variables safely and searches for the certificate identifier.
  - Outputs one of: MISSING, ACTIVE, INACTIVE (and returns exit codes).

.EXAMPLE
  powershell -ExecutionPolicy Bypass -File .\securebootcertcheck_new.ps1
#>

[CmdletBinding()]
param()

function Write-Log {
    param(
        [string] $Message,
        [switch] $Problem
    )
    if ($Problem) { Write-Error $Message } else { Write-Output $Message }
}

function Is-RunningElevated {
    try {
        $principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
        return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    } catch {
        return $false
    }
}

function Get-UEFIVariableText {
    param(
        [Parameter(Mandatory=$true)][string] $VarName
    )
    try {
        $entry = Get-SecureBootUEFI $VarName -ErrorAction Stop
        if (-not $entry -or -not $entry.bytes) { return $null }
        # Prefer UTF8, fallback to ASCII
        try { return [System.Text.Encoding]::UTF8.GetString($entry.bytes) } catch { return [System.Text.Encoding]::ASCII.GetString($entry.bytes) }
    } catch {
        return $null
    }
}

# Warn if not elevated (Get-SecureBootUEFI usually requires elevation)
if (-not (Is-RunningElevated)) {
    Write-Warning "Script is not running elevated. Get-SecureBootUEFI may fail or return incomplete results."
}

# Determine Secure Boot status
# Secure Boot state
$SecureBootEnabled = $false
$SecureBootStateKnown = $false
if (Get-Command Confirm-SecureBootUEFI -ErrorAction SilentlyContinue) {
    try {
        $SecureBootEnabled = Confirm-SecureBootUEFI
        $SecureBootStateKnown = $true
    } catch {
        $SecureBootStateKnown = $false
    }
}

# Secure Boot wording
$sbStatus = if ($SecureBootStateKnown) {
    if ($SecureBootEnabled) { 'Secure Boot Enabled' } else { 'Secure Boot Disabled' }
} else {
    'Secure Boot Unknown'
}

$dbText = Get-UEFIVariableText -VarName 'db'
$expected = 'Windows UEFI CA 2023'
$dbDefaultText = Get-UEFIVariableText -VarName 'dbdefault'

if ($dbText -and $dbText -match [regex]::Escape($expected)) {
    Write-Output "CERTS ACTIVE - $sbStatus"
    exit 0
}elseif (-not $dbDefaultText -or ($dbDefaultText -notmatch [regex]::Escape($expected))) {
    Write-Output "CERTS MISSING - $sbStatus"
    exit 1
}else {
    Write-Output "CERTS INACTIVE - $sbStatus"
    exit 1
}

Apply this script through Intune Detections and Remediations for a nice visual report regarding Secure Boot! Here are the setting you need to get this rolling in Intune!

Kevin Malinoski Avatar

Published by

Categories:

5 responses to “Kick Off 2026 Right: Audit Your Windows Endpoints for Secure Boot Certificate Readiness”

  1. CZYMOCH, ROBERT Avatar
    CZYMOCH, ROBERT

    This is a fantastic write up. However, your script returned Certs missing on a machine I know has the cert and is booting off it in UEFI. I am looking at your script and trying to figure out why it determines that the cert is missing.

    Like

    1. Kevin Malinoski Avatar

      The script uses the following framework: https://www.dell.com/support/kbdoc/en-us/000385747/how-to-check-secure-boot-certificates

      If you are missing certificates, you should look into the vendor and model of the device to determine if a BIOS update is needed

      If the BIOS is valid then the machine will get updated secure boot cert. Some vendors, I know HP, has a nice document on this:

      https://support.hp.com/us-en/document/ish_13070353-13070429-16

      Like

    2. Kevin Malinoski Avatar

      Hey Robert – just a quick follow up that I updated the script syntax to resolve this issue that you reported! Let me know if you have any other issues with it!

      Like

  2. Roger W Avatar
    Roger W

    So you dont have to update BIOS before activating the policys?

    Like

    1. Kevin Malinoski Avatar

      You will eventually need compatible firmware from your manufacturer but I have seen no issues in enabling the policies in this document. As always, test on a small group of devices!

      Like

Leave a reply to CZYMOCH, ROBERT Cancel reply