
BitLocker TPM+PIN Endurecimento Contra CVE-2026-45585 (YellowKey)
Mitigação automatizada para o bypass do BitLocker via WinRE — nenhum patch completo disponível ainda
YellowKey é um bypass do BitLocker divulgado publicamente que concede a um invasor com acesso físico um shell irrestrito em uma unidade Windows 11 protegida por BitLocker — sem a chave de recuperação, sem o PIN e sem qualquer credencial.
Um componente dentro do Ambiente de Recuperação do Windows () executa uma rotina de replay do NTFS Transactional que exclui . O efeito colateral é um shell que é iniciado com acesso total ao volume descriptografado. O invasor o aciona copiando uma pasta para uma unidade USB (ou diretamente para a partição EFI), reiniciando no WinRE e segurando CTRL.
autofstx.exewinpeshl.ini| Detalhes | |
|---|---|
| CVE | CVE-2026-45585 |
| Pontuação CVSS | 6.8 (Médio) |
| Vetor CVSS | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-77 (Injeção de Comando) |
| Vetor de Ataque | Acesso físico necessário |
| Publicado | 19 de maio de 2026 |
| Patch | Nenhum ainda — Microsoft emitiu apenas mitigação manual |
| Aviso MSRC | msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585 |
| PoC | Disponível publicamente (Nightmare-Eclipse/YellowKey) |
| Afetados | Windows 11 (24H2, 25H2, 26H1), Windows Server 2022/2025 |
| Não afetados | Windows 10 |
Mudar de somente TPM para TPM+PIN bloqueia o ataque completamente. Com um PIN exigido na inicialização, o invasor não pode descriptografar a unidade independentemente de como o shell do WinRE seja gerado — o TPM não liberará a chave mestra do volume sem o PIN correto.
BitLocker somente TPM desbloqueia automaticamente em qualquer inicialização do mesmo hardware. TPM+PIN exige um segredo que apenas o usuário conhece, fechando a brecha do YellowKey.
O script lida com os pré-requisitos de Política de Grupo que bloqueiam o manage-bde de adicionar um protetor PIN por padrão e, em seguida, transita com segurança a unidade de somente TPM para TPM+PIN em uma única execução.
Execute Add-BitLockerTPMPin.ps1 (admin)
│
▼
[Verificação de Versão] ──→ sai graciosamente no Windows 10 (não afetado)
│
▼
[Verificação de Status do BitLocker] ──→ confirma que a criptografia está ativa em C:
│
▼
[Correção de Política de Grupo] ──→ define UseAdvancedStartup + UseTPMPIN + UseEnhancedPin
│ (necessário — manage-bde rejeita TPM+PIN sem eles)
▼
[gpupdate /force] ──→ aplica a política imediatamente sem reinicialização
│
▼
[manage-bde -protectors -add C: -TPMAndPIN] ──→ solicita o PIN interativamente
│
▼
[Listar Protetores] ──→ mostra todos os protetores atuais para verificação
│
▼
[Remover Protetor Somente TPM] ──→ opcional, solicitado com confirmação
# Execute estes como dois comandos separados em um prompt PowerShell elevado:
Set-ExecutionPolicy Bypass -Scope Process -Force
# Todas as unidades protegidas por BitLocker (detecção automática):
.\Add-BitLockerTPMPin.ps1
# Ou direcione uma unidade específica:
.\Add-BitLockerTPMPin.ps1 -Drive C
.\Add-BitLockerTPMPin.ps1 -Drive D
Você será solicitado interativamente a definir um PIN por unidade. PINs alfanuméricos são suportados (o script ativa PINs aprimorados via registro).
Nota: Protetores TPM+PIN se aplicam apenas à unidade do sistema (a unidade que inicializa através do TPM). Unidades de dados (D:, E:, etc.) usam protetores de senha ou chave de recuperação — o script as detectará e pulará automaticamente.
Unidades protegidas por BitLocker encontradas:
C:\ TotalmenteCriptografado Proteção: Ativada
D:\ TotalmenteCriptografado Proteção: Ativada
Chaves de Política de Grupo definidas. Atualizando política...
==============================
Unidade: C:\
==============================
Adicionando protetor TPM+PIN. Você será solicitado a fornecer um PIN.
O PIN deve ter 6+ caracteres. Alfanumérico é suportado.
Digite o PIN a ser usado para proteger o volume:
Confirme o PIN digitando-o novamente:
Protetores de Chave Adicionados:
TPM E PIN:
ID: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
Protetores atuais em C:\:
...
Protetor somente TPM encontrado: {YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
Remover protetor somente TPM em C:\? Isso deixa apenas TPM+PIN. (s/N): s
Protetor somente TPM removido.
==============================
Unidade: D:\
==============================
D:\ não possui protetor TPM — TPM+PIN se aplica apenas à unidade do sistema. Pulando.
Concluído. Verifique com: manage-bde -status <unidade>
manage-bde -status C:
# Deve mostrar: Key Protectors: TPM And PIN
# Protection Status: Protection On
Tenha sua chave de recuperação antes de executar. O script remove o protetor somente TPM apenas após confirmar que o protetor TPM+PIN foi adicionado com sucesso, mas se a máquina for reiniciada durante a execução ou a etapa manage-bde -add falhar parcialmente, você precisará da chave de recuperação para desbloquear a unidade.
Recupere sua chave de recuperação agora:
# Imprima a chave de recuperação no console (armazene-a em um local seguro)
manage-bde -protectors -get C: -Type RecoveryPassword
Ou encontre-a em sua conta Microsoft em account.microsoft.com/devices/recoverykey.
A escolha do PIN é importante. Um PIN numérico curto oferece proteção fraca contra ataques físicos direcionados. Use pelo menos 8 caracteres. PINs alfanuméricos são ativados pelo script.
O script define quatro valores de registro em HKLM:\SOFTWARE\Policies\Microsoft\FVE:
| Chave | Valor | Propósito |
|---|---|---|
UseAdvancedStartup | 1 | Ativa a política "Exigir autenticação adicional na inicialização" — sem isso, todas as chaves UseTPM* são ignoradas |
UseTPMPIN | 2 | 0 = bloquear, 1 = exigir, 2 = permitir TPM+PIN |
UseTPM | 2 | Permite somente TPM juntamente com PIN (evita conflitos de política) |
UseEnhancedPin | 1 | Permite caracteres alfanuméricos no PIN |
Estas são exatamente as chaves que a Política de Grupo do Windows (gpedit.msc) escreve. Definí-las via registro é equivalente a configurar a política através do snap-in MMC.
Se preferir executar os passos individualmente:
# 1. Definir chaves de registro da Política de Grupo
$p = "HKLM:\SOFTWARE\Policies\Microsoft\FVE"
if (-not (Test-Path $p)) { New-Item -Path $p -Force }
Set-ItemProperty -Path $p -Name "UseAdvancedStartup" -Value 1 -Type DWord -Force
Set-ItemProperty -Path $p -Name "UseTPMPIN" -Value 2 -Type DWord -Force
Set-ItemProperty -Path $p -Name "UseTPM" -Value 2 -Type DWord -Force
Set-ItemProperty -Path $p -Name "UseEnhancedPin" -Value 1 -Type DWord -Force
gpupdate /force
# 2. Adicionar protetor TPM+PIN
manage-bde -protectors -add C: -TPMAndPIN
# 3. Encontrar o ID do protetor somente TPM
manage-bde -protectors -get C:
# 4. Removê-lo (substituir GUID pelo ID da etapa 3)
manage-bde -protectors -delete C: -id {SEU-GUID-SOMENTE-TPM}
# 5. Verificar
manage-bde -status C:
yellowkey-mitigation/
├── Add-BitLockerTPMPin.ps1 # Script principal de mitigação
└── README.md
Este script foi desenvolvido em coautoria com Claude (Anthropic). Toda a lógica foi revisada e testada no Windows 11 pelo autor.
MIT — Livre para usar, modificar e distribuir.