Files
Petr Stepan 2712030aea Clean repo
2026-06-08 15:38:04 +02:00

13 KiB
Raw Permalink Blame History

Secure Boot CA 2023 — kontrola a remediace

Jediný PowerShell skript Invoke-SecureBootRemediation.ps1 pro audit a řízenou remediaci expirujících Secure Boot certifikátů na Windows Serverech (fyzické stroje, Hyper-V VM, VMware VM).


1. Co řešíme

Microsoft v upozornění KB5062710 oznámil, že původní Secure Boot certifikáty z roku 2011 expirují v průběhu roku 2026. Tyto certifikáty jsou uloženy přímo ve firmware (UEFI KEK a DB databázích) a zajišťují důvěryhodnost celého boot procesu.

Certifikát Umístění Expirace Náhrada 2023
Microsoft Corporation KEK CA 2011 KEK 24. 6. 2026 Microsoft Corporation KEK 2K CA 2023
Microsoft UEFI CA 2011 DB 27. 6. 2026 Microsoft UEFI CA 2023 + Option ROM UEFI CA 2023
Microsoft Windows Production PCA 2011 DB 19. 10. 2026 Windows UEFI CA 2023

Dopad, pokud se nic neudělá: server bude dál bootovat, ale přestane přijímat nové ochrany boot procesu — aktualizace Boot Manageru, revokace (DBX) a mitigace nově objevených boot-level zranitelností. Postupně se sníží ochrana a ovlivní to scénáře závislé na Secure Boot důvěře (BitLocker hardening, third-party bootloadery).

Co je skutečné „hotovo": nestačí jen mít nové certifikáty v KEK/DB — aktualizace je dokončená až když jsou splněny všechny 4 podmínky a Boot Manager je ověřen:

  1. Windows UEFI CA 2023 v DB + Microsoft Corporation KEK 2K CA 2023 v KEK
  2. AvailableUpdates = 0x0 nebo 0x4000
  3. UEFICA2023Status = "Updated"
  4. UEFICA2023Error = 0 nebo neexistuje
  5. Boot Manager: WindowsUEFICA2023Capable = 2 nebo certutil ověřil podpis souboru bootmgfw.efi

Poslední krok (aktivace Boot Manageru) se aplikuje až po restartu a skript to ověří přímo na souboru.


2. Jak skript správně použít

Požadavky

  • Windows PowerShell 5.1+, spuštěno jako Administrator
  • Build Windows z 14. 10. 2025 nebo novější (KB5066835) — bez něj neexistují servicing registry klíče ani úloha. Skript na to upozorní.
  • Žádné externí moduly. UEFI databáze a podpis bootloaderu čte nativně.

Skript NIKDY nerestartuje server

Restart je nutný k dokončení aktualizace, ale necháváme ho na vás (plánované okno, ohled na BitLocker). Výjimka: parametr -AutoRestart pro automatizované scénáře.

Typický průběh (interaktivně)

# 1) Spustit na serveru jako Administrator
.\Invoke-SecureBootRemediation.ps1

Skript provede detekci, zobrazí výstup ve 4 sekcích a u stavů, kde to dává smysl, se zeptá, zda remediaci aplikovat. Po souhlasu nastaví registry a spustí servicing úlohu (počká na ni). Pak:

2) Naplánujte RESTART serveru
3) Po restartu spusťte skript znovu
4) Opakujte, dokud stav nebude HOTOVO

Aktualizace se aplikuje po částech na více restartů — hodnota AvailableUpdates postupně klesá 0x5944 → 0x5904 → 0x5104 → 0x4104 → 0x4100 → 0x4000 → 0x0.

Důležité před restartem

Pokud má server BitLocker s ochranou vázanou na TPM/PCR7, změna Boot Manageru může vyvolat recovery prompt. Skript BitLocker stav zobrazí a zvýrazní — před restartem ověřte recovery key.

Parametry

Parametr Účel
(bez parametru) Interaktivní detekce → dotaz → remediace
-CheckOnly Jen detekce + výpis + exit kód (0 = hotovo, 1 = nutná akce, 2 = blokováno). Bez změn a bez dotazu. Vhodné pro RMM/monitoring.
-WhatIf Ukáže, co by remediace udělala, bez provedení změn.
-AssumeYes Přeskočí interaktivní dotaz a remediaci rovnou aplikuje (pokud je smysluplná).
-Force Spustí remediaci i v případě, že povinné certifikáty jsou již přítomny.
-AutoRestart Po stavu AU=0x4100 (Boot Manager staged, čeká na restart) restartuje server automaticky bez dotazu. POZOR: okamžitý restart.
-EspDriveLetter <X> Písmeno jednotky pro dočasný mount ESP při ověřování Boot Manageru (výchozí S). Změňte, pokud S: je na serveru obsazeno.

Příklady

# Jen kontrola stavu — pro skript/monitoring, bez zásahu
.\Invoke-SecureBootRemediation.ps1 -CheckOnly

# Náhled co by se stalo, bez změn
.\Invoke-SecureBootRemediation.ps1 -WhatIf

# Neinteraktivní aplikace (CI/CD, dávkový rollout)
.\Invoke-SecureBootRemediation.ps1 -AssumeYes

# Server kde S: je obsazeno, použít T: pro ESP
.\Invoke-SecureBootRemediation.ps1 -EspDriveLetter T

# Neinteraktivní + auto-restart po staged Boot Manageru
.\Invoke-SecureBootRemediation.ps1 -AssumeYes -AutoRestart

3. Co skript dělá (detailně)

Výstup — 4 sekce

Skript zobrazí vždy čtyři sekce:

PŘEDPOKLADY:
  1. [+] Administrátorská práva
  2. [+] Windows Server — Zjištěno: Windows Server 2022 Standard (build 20348.xxx)
  3. [+] UEFI + Secure Boot zapnutý
  4. [+] Úroveň záplat >= 10/2025 — stavové registry klíče přítomny
  5. [+] Scheduled task 'Secure-Boot-Update' k dispozici
  6. [+] PowerShell SecureBoot cmdlety — Get-SecureBootUEFI dostupný

CERTIFIKÁTY:
  [+] Windows UEFI CA 2023 v DB              (povinný)    platný do 2045-06-10
  [+] Microsoft Corporation KEK 2K CA 2023   (povinný)
  [ ] Boot Manager (bootmgfw.efi)            nedostupný (ESP nelze připojit)
  [ ] Microsoft UEFI CA 2023                 (volitelný)
  [ ] Option ROM UEFI CA 2023                (volitelný)

REGISTRY:
  AvailableUpdates         : 0x5944  (naplánováno — start)
  UEFICA2023Status         : NotStarted
  UEFICA2023Error          : (žádná)
  WindowsUEFICA2023Capable : 1 = cert v DB (boot mgr zatím ne)

UDÁLOSTI (System log — Secure Boot):
  2026-06-05 18:42  EventID 1801  Čeká na podmínky (monitor)
  2026-06-05 18:43  EventID 1808  Certifikáty úspěšně aplikovány

Pokud hard prerekvizita selže, skript dále nepokračuje a zobrazí přesný důvod.

Fáze — co je povinné pro HOTOVO

Fáze Povinná Splněno když
Secure Boot zapnutý Confirm-SecureBootUEFI = True
Servicing task k dispozici task Secure-Boot-Update existuje
KEK: Microsoft Corporation KEK 2K CA 2023 cert v KEK databázi
DB: Windows UEFI CA 2023 cert v DB databázi
AvailableUpdates = 0x0 nebo 0x4000 servisování dokončeno
UEFICA2023Status = Updated registry klíč
Boot Manager ověřen (2023 CA) Capable=2 nebo certutil potvrdil podpis souboru
DB: Microsoft UEFI CA 2023 (3rd-party) volitelné (option ROM / non-Windows boot)
DB: Option ROM UEFI CA 2023 volitelné
DBX: revokace starého boot manageru 2011 volitelné (finální hardening)

Detekce — odkud čte

  • Prostředí a HW (WMI/CIM): fyzický / Hyper-V VM / VMware VM, výrobce, model, BIOS verze a datum
  • Secure Boot stav a operating mode (User / Deployed / Setup / Audit) ze standardních UEFI proměnných
  • Certifikáty v KEK / DB / DBX — parsováním EFI_SIGNATURE_LIST na X.509 (subject, thumbprint, platnost), s ASCII fallbackem
  • Boot Manager bootmgfw.efi na ESP:
    • Pokus 1: prohledá AZ pro ESP s existujícím písmenem jednotky
    • Pokus 2: připojí ESP přes mountvol <X>: /S (výchozí S:, lze změnit -EspDriveLetter), zkopíruje soubor do %TEMP%\SecureBootCA2023\ a ověří podpis přes certutil -dump — přečte embedded PKCS#7 blob přímo z PE souboru, bez závislosti na local cert store; záloha Event 1799
  • Registry HKLM\SYSTEM\CurrentControlSet\Control\SecureBoot[\Servicing]: AvailableUpdates, MicrosoftUpdateManagedOptIn, HighConfidenceOptOut, UEFICA2023Status (NotStarted / InProgress / Updated / Failed), UEFICA2023Error, UEFICA2023ErrorEvent, WindowsUEFICA2023Capable (0 / 1 / 2), ConfidenceLevel
  • BitLocker systémové jednotky: stav ochrany a typ protektoru (zvýraznění TPM/PCR7 rizika)
  • Event Log (System, zdroj TPM-WMI): 1795, 1796, 1799, 1800, 1801, 1802, 1803, 1808

Vyhodnocení — kategorie

Kategorie Význam Akce
OK 4 podmínky splněny + Boot Manager ověřen žádná
OK_TRANSITION HOTOVO, ale staré 2011 certy ještě přítomné (normální přechodný stav) žádná, monitorovat
UPDATE_NEEDED Žádné 2023 certy nenasazeny zahájit remediaci
UPDATE_PARTIAL Část certifikátů nasazena, servisování probíhá spustit task, restart
UPDATE_PENDING_RESTART Boot Manager 2023 staged (AU=0x4100) — čeká na restart RESTART
UPDATE_BOOTMANAGER Certy v DB/KEK OK, ale bootloader dosud nepoužívá 2023 CA spustit task, restart
UPDATE_FAILED Event 1795 / UEFICA2023ErrorEvent / status Failed firmware/OEM, troubleshooting
FIRMWARE_UPDATE_NEEDED ConfidenceLevel: Temporarily Paused / Event 1802 update firmwaru u OEM
NOT_SUPPORTED ConfidenceLevel: Not Supported dokumentovat jako výjimku
BUILD_OUTDATED Certy přítomny, ale chybí servicing infrastruktura Windows Update (KB5066835+)
TASK_MISSING Chybí servicing úloha nainstalovat KB5066835+
SETUP_MODE Secure Boot v Setup Mode (chybí enrolled PK) obnovit klíče v UEFI
SECUREBOOT_DISABLED Secure Boot vypnutý zapnout v UEFI/BIOS
NO_SECUREBOOT Legacy BIOS dokumentovat jako výjimku
NO_SECUREBOOT_VM VM bez UEFI nebo vTPM dokumentovat jako výjimku

Remediace (jen po souhlasu, sekvenčně)

  1. Registry — nastaví MicrosoftUpdateManagedOptIn=1, AvailableUpdates=0x5944 (jen při první inicializaci nebo po dokončení), HighConfidenceOptOut=0; zápis se ověří zpětným čtením.
  2. Servicing úloha — spustí \Microsoft\Windows\PI\Secure-Boot-Update a čeká na změnu AvailableUpdates (timeout 180 s).
  3. Ověření — znovu proběhne detekce a zobrazí aktualizovaný stav.

Po remediaci skript jasně řekne, kdy je restart nutný a upozorní na BitLocker — bez restartu.

Stav v log souboru

Průběh se loguje do %ProgramData%\SecureBootCA2023\SecureBootRemediation.log a stav cyklu do %ProgramData%\SecureBootCA2023\state.json.

Výstup pro automatizaci (-CheckOnly exit kódy)

Exit kód Význam
0 HOTOVO — OK nebo OK_TRANSITION
1 Nutná akce — UPDATE_* kategorie
2 Blokováno — prerekvizita selhala, NO_SECUREBOOT, SETUP_MODE, apod.

Kódování

Skript je uložen jako UTF-8 s BOM a na startu vynutí UTF-8 výstup konzole, aby čeština i symboly fungovaly i ve Windows PowerShell 5.1.


4. Zdroje

Microsoft — oficiální dokumentace

Téma Odkaz
Přehled: expirace certifikátů a CA aktualizace (KB5062710) support.microsoft.com
Guidance for IT Professionals and Organizations (KB5062713) support.microsoft.com
Registry key updates for Secure Boot — IT-managed (KB5068202) support.microsoft.com
GPO metoda (KB5068198) support.microsoft.com
WinCS API (KB5068197) support.microsoft.com
Secure Boot DB and DBX variable update events support.microsoft.com
Troubleshooting (KB5085046) support.microsoft.com
Known issues a resolutions, vč. Hyper-V fix (KB5085790) support.microsoft.com
Minimální build 14. 10. 2025 (KB5066835) support.microsoft.com
Windows Server Secure Boot playbook (2026) techcommunity.microsoft.com

Komunitní projekty (inspirace pro logiku a přehled)

Projekt Odkaz
CheckCA2023 (claude-boucher) — GUI monitor, podrobná registry/bit reference github.com/claude-boucher/CheckCA2023
SecureBoot-CA2023-Automatic-Update (mathisokle) — automatizace, ESP mount logika github.com/mathisokle/SecureBoot-CA2023-Automatic-Update

Skript záměrně NErestartuje server (výjimka: -AutoRestart). Implementuje metodu registry klíčů (KB5068202); metody GPO / Intune / WinCS nepokrývá.