
Evaluación y servicio independientes para la rotación de certificados de Secure Boot de 2011 a 2023 (CVE-2023-24932 / KB5025885). Solo evaluación por defecto; sin dependencias, sin red, sin telemetría.
Un único script de PowerShell autocontenido que evalúa la postura de certificados de Secure Boot de una máquina Windows para la renovación de 2011 → 2023 (CVE-2023-24932 / KB5025885) y, solo cuando se lo pides explícitamente, inscribe esa máquina en el canal de servicio de Microsoft.
Publicado por Exchange Technology Services para clientes y socios que gestionan sus propios endpoints.
Los certificados de Secure Boot que Microsoft emitió en 2011 están caducando y siendo sustituidos por las versiones de 2023.
| Certificado | Fecha | Almacén | Función |
|---|---|---|---|
| Microsoft Corporation KEK CA 2011 | caducado el 24 jun 2026 | KEK | Autoriza actualizaciones de DB y DBX |
| Microsoft UEFI CA 2011 | caducado el 27 jun 2026 | DB | Firma cargadores de terceros / ROM de opción |
| Windows Production PCA 2011 | 19 oct 2026 | DB | Firma el cargador de arranque de Windows |
Ninguna máquina deja de arrancar en ninguna de estas fechas. La guía de Microsoft indica que un dispositivo que alcance la caducidad sin los nuevos certificados "seguirá iniciándose y funcionando con normalidad."
Lo que se pierde es la capacidad de recibir actualizaciones de seguridad de arranque temprano: nuevas revocaciones de Secure Boot, mitigaciones de bypass de BitLocker, correcciones del administrador de arranque. Eso es exposición acumulada, no una interrupción del servicio.
Después del 19 oct 2026, una máquina cuyo firmware nunca incorporó Windows UEFI CA 2023 también deja de validar los medios de arranque de Windows recién firmados, lo que puede afectar a los medios de recuperación, instalación y PXE.
El KEK es la puerta. Sin Microsoft Corporation KEK 2K CA 2023 en el firmware, Windows Update no puede entregar la actualización de DB en absoluto. Una máquina a la que le falte no podrá subsanarse hasta que el KEK llegue mediante Windows Update o una actualización de BIOS del OEM. Este es el bloqueador más común en la práctica, y el script lo señala explícitamente en lugar de escribir un valor que no haría nada.
Windows PowerShell 5.1, como Administrador: leer las variables UEFI requiere elevación de privilegios.
1. Desbloquea el archivo (Windows bloquea los scripts descargados):
Unblock-File .\Invoke-SecureBootCertServicing.ps1
2. Evalúa: seguro, no hace ningún cambio:
powershell.exe -ExecutionPolicy Bypass -File .\Invoke-SecureBootCertServicing.ps1
3. Aplica, solo si la evaluación indica que la máquina está lista:
.\Invoke-SecureBootCertServicing.ps1 -Apply -SuspendBitLocker
El informe se escribe con Write-Host, por lo que se muestra en la consola y lo registra Start-Transcript. Un redireccionamiento simple con > no lo capturará, y canalizarlo a otro comando tampoco.
Start-Transcript C:\Temp\secureboot.log
.\Invoke-SecureBootCertServicing.ps1
Stop-Transcript
Para una copia legible por máquina, útil al recopilar resultados en una flota de equipos:
.\Invoke-SecureBootCertServicing.ps1 -JsonPath C:\Temp\secureboot.json
El informe muestra estado de servicio y estado de migración por separado.
Estos dos estados realmente discrepan sobre el terreno. Una máquina puede informar UEFICA2023Status = Updated mientras los dos binarios del administrador de arranque en disco siguen firmados con 2011. Eso ocurre cuando el firmware incorporó la CA 2023 preinscrita de fábrica, por lo que la parte de certificados se completó mientras la parte del administrador de arranque nunca llegó a ejecutarse. Si se fusionan ambos en un solo campo, esa máquina se reporta como terminada cuando en realidad está a medio migrar.
Por la misma razón, el script no deriva el estado de WindowsUEFICA2023Capable. La documentación de Microsoft dice de ese valor, textualmente: "Solo como referencia - no utilice esta clave para obtener el estado de las actualizaciones de Secure Boot." Solo se captura como diagnóstico.
Los pasos de servicio modifican el estado del firmware, lo que puede mover los PCR de TPM a los que está sellado un protector de BitLocker, lo que puede provocar una solicitud de clave de recuperación en el siguiente arranque.
-Apply a gran escala.-SuspendBitLocker suspende la protección durante el siguiente reinicio para que el cambio se vuelva a sellar sin solicitudes. BitLocker se reanuda automáticamente después.El estado de BitLocker se lee de tres formas independientes (Get-BitLockerVolume, manage-bde y Win32_EncryptableVolume) y se concilian los resultados. Si los lectores discrepan, o si ninguno puede leer el volumen, el script se niega a modificar el firmware en lugar de adivinar.
Las máquinas virtuales están excluidas por defecto: la CA 2023 llega a la línea base del firmware mediante una actualización de BIOS, y el firmware de una VM proviene de su hipervisor: un invitado en un host sin actualizar no puede completar la migración por sí solo.
Probado de extremo a extremo en Windows 11 (compilación 26200, PowerShell 5.1, ejecutándose como SYSTEM), UEFI con Secure Boot habilitado, BitLocker totalmente cifrado con protectores TPM + RecoveryPassword en un perfil PCR 7,11:
Windows UEFI CA 2023 mientras bootmgfw.efi seguía firmado por Microsoft Windows Production PCA 2011 — y no la reportó como terminada, a pesar de que esa máquina informaba simultáneamente UEFICA2023Status = Updated y WindowsUEFICA2023Capable = 2.0x80 (código de salida 1).-Apply escribió 0x5944, confirmado por una lectura independiente del registro.-SuspendBitLocker seguido de un reinicio: la máquina volvió sin solicitud de recuperación y BitLocker se reanudó automáticamente.Start-Transcript capturó el informe completo; la salida JSON no contenía material de claves de recuperación.Aún no observado: una máquina que complete la migración total a FullyMigrated. El paso final está controlado por el despliegue escalonado por dispositivo de Microsoft, que escapa al control de cualquiera. El script expone el motivo declarado por ese gate en lugar de dejarlo como una operación nula sin explicación.
MIT — consulta LICENSE. Se proporciona tal cual, sin garantía. Revísalo antes de ejecutarlo en tu entorno; es un único archivo legible precisamente por esa razón.
| Propiedad | Detalle |
|---|
| Comportamiento predeterminado | Solo evaluación. Cero escrituras sin -Apply. |
| Dependencias | Ninguna. Sin módulos, sin instalador. Windows PowerShell 5.1. |
| Acceso a red | Ninguno. Nunca contacta con ningún host. |
| Telemetría / informes | Ninguna. Todo lo que encuentra lo imprime en tu consola. Nada sale de la máquina. |
| Claves de recuperación de BitLocker | Nunca se leen, imprimen ni transmiten. Solo comprueba si existe un protector de contraseña de recuperación. |
Lo que escribe -Apply | Exactamente un valor de registro: AvailableUpdates = 0x5944 bajo HKLM\SYSTEM\CurrentControlSet\Control\Secureboot. La adhesión documentada a KB5025885. Aditivo: añade el certificado de 2023 sin eliminar el de 2011. |
| Acciones irreversibles | Rechazo categórico. El bit de revocación DBX 0x80 es permanente mientras Secure Boot permanezca habilitado; el script rechaza cualquier valor que lo contenga salvo que se pase -AllowRevocation explícitamente. No lo pases. |
| Reinicios | Nunca reinicia la máquina ni solicita nada al usuario. |
| Veredicto | Significado | Código de salida |
|---|
ReadyToArm | KEK 2023 presente, DB aún no migrada, sin inscribir. -Apply es el siguiente paso. | 0 |
HalfMigrated | El firmware confía en la CA 2023, pero la máquina sigue arrancando un cargador firmado en 2011. Correcto hoy; no arrancaría si 2011 llegara a revocarse. Aún necesita la actualización del administrador de arranque. | 0 |
HalfMigrated-Armed | Como el anterior, y ya inscrita. Reinicia la máquina: no vuelvas a ejecutar -Apply. | 0 |
AlreadyQueued | Inscrita, a la espera del despliegue escalonado de Microsoft. | 0 |
InProgress / RebootPending | Servicio en curso. Reinicia y vuelve a ejecutar para ver el progreso. | 0 |
FullyMigrated | Completado. El administrador de arranque está firmado con 2023. | 2 |
BlockedNoKek2023 | Falta el KEK 2023. Instala primero las actualizaciones de Windows pendientes y/o la actualización de BIOS del OEM. | 3 |
BlockedFirmwareKek | El firmware no tiene ningún KEK firmado por la Platform Key de esta máquina. Necesita una actualización de BIOS del OEM (o, en una VM, una actualización del host). | 3 |
NotApplicable-* | BIOS heredada (legacy) o Secure Boot deshabilitado. | 2 |
Error | El servicio notificó un fallo; se imprime el código de error. | 0 |
| Parámetro | Valor predeterminado | Finalidad |
|---|
-Apply | desactivado | Realiza la escritura. Sin él, solo lectura. |
-SuspendBitLocker | desactivado | Suspende BitLocker durante el reinicio del servicio. |
-RebootCount | 1 | Número de reinicios que abarca la suspensión (1–15). |
-JsonPath | ninguno | Escribe también la evaluación como JSON. |
-MountPoint | unidad del sistema | Volumen a evaluar. |
-ApplyValue | 0x5944 | El DWORD AvailableUpdates. |
-AllowRevocation | desactivado | Necesario para cualquier valor que lleve el bit DBX irreversible 0x80. No lo pases. |
-AllowVirtualMachine | desactivado | Permite armar una VM. |
-AllowServer | desactivado | Permite armar una SKU de servidor. |