
Durcissement de BitLocker TPM+PIN contre CVE-2026-45585 (YellowKey)
Atténuation automatisée pour le contournement de BitLocker via WinRE — aucun correctif complet disponible pour l'instant
YellowKey est un contournement de BitLocker publiquement divulgué qui donne à un attaquant avec accès physique un shell sans restriction sur un lecteur Windows 11 protégé par BitLocker — sans la clé de récupération, sans le code PIN et sans aucun identifiant.
Un composant de l'environnement de récupération Windows (autofstx.exe) exécute une routine de reprise de Transactional NTFS qui supprime winpeshl.ini. L'effet secondaire est un shell qui se lance avec un accès complet au volume déchiffré. L'attaquant le déclenche en copiant un dossier sur une clé USB (ou directement sur la partition EFI), en redémarrant dans WinRE et en maintenant la touche CTRL enfoncée.
Passer de TPM seul à TPM+PIN bloque complètement l'attaque. Avec un code PIN requis au démarrage, l'attaquant ne peut pas déchiffrer le lecteur, quelle que soit la manière dont le shell WinRE est généré — le TPM ne libérera pas la clé principale du volume sans le code PIN correct.
BitLocker avec TPM seul se déverrouille automatiquement à chaque démarrage sur le même matériel. TPM+PIN nécessite un secret que seul l'utilisateur connaît, ce qui comble la faille YellowKey.
Le script gère les prérequis de la stratégie de groupe qui empêchent manage-bde d'ajouter un protecteur PIN par défaut, puis transfère en toute sécurité le lecteur de TPM seul à TPM+PIN en une seule exécution.
Exécuter Add-BitLockerTPMPin.ps1 (admin)
│
▼
[Vérification de version] ──→ se termine proprement sur Windows 10 (non affecté)
│
▼
[Vérification de l'état BitLocker] ──→ confirme que le chiffrement est actif sur C:
│
▼
[Correction de la stratégie de groupe] ──→ définit UseAdvancedStartup + UseTPMPIN + UseEnhancedPin
│ (requis — manage-bde rejette TPM+PIN sans ces éléments)
▼
[gpupdate /force] ──→ applique la stratégie immédiatement sans redémarrage
│
▼
[manage-bde -protectors -add C: -TPMAndPIN] ──→ demande un code PIN de manière interactive
│
▼
[Lister les protecteurs] ──→ affiche tous les protecteurs actuels pour vérification
│
▼
[Supprimer le protecteur TPM seul] ──→ optionnel, avec demande de confirmation
# Exécutez ces deux commandes séparément dans une invite PowerShell élevée :
Set-ExecutionPolicy Bypass -Scope Process -Force
# Tous les lecteurs protégés par BitLocker (détection automatique) :
.\Add-BitLockerTPMPin.ps1
# Ou ciblez un lecteur spécifique :
.\Add-BitLockerTPMPin.ps1 -Drive C
.\Add-BitLockerTPMPin.ps1 -Drive D
Vous serez invité de manière interactive à définir un code PIN par lecteur. Les codes PIN alphanumériques sont pris en charge (le script active les codes PIN améliorés via le registre).
Remarque : Les protecteurs TPM+PIN s'appliquent uniquement au lecteur système (celui qui démarre via le TPM). Les lecteurs de données (D:, E:, etc.) utilisent des protecteurs par mot de passe ou par clé de récupération — le script les détectera et les ignorera automatiquement.
Lecteurs protégés par BitLocker trouvés :
C:\ FullyEncrypted Protection : Activée
D:\ FullyEncrypted Protection : Activée
Clés de stratégie de groupe définies. Actualisation de la stratégie...
==============================
Lecteur : C:\
==============================
Ajout du protecteur TPM+PIN. Un code PIN vous sera demandé.
Le code PIN doit comporter 6 caractères ou plus. L'alphanumérique est pris en charge.
Saisissez le code PIN à utiliser pour protéger le volume :
Confirmez le code PIN en le saisissant à nouveau :
Protecteurs de clés ajoutés :
TPM Et PIN :
ID : {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
Protecteurs actuels sur C:\ :
...
Protecteur TPM seul trouvé : {YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
Supprimer le protecteur TPM seul sur C:\ ? Cela laisse uniquement TPM+PIN. (o/N) : o
Protecteur TPM seul supprimé.
==============================
Lecteur : D:\
==============================
D:\ n'a pas de protecteur TPM — TPM+PIN s'applique uniquement au lecteur système. Ignoré.
Terminé. Vérifiez avec : manage-bde -status <lecteur>
manage-bde -status C:
# Devrait afficher : Protecteurs de clés : TPM Et PIN
# État de la protection : Protection activée
Ayez votre clé de récupération avant d'exécuter le script. Le script ne supprime le protecteur TPM seul qu'après avoir confirmé que le protecteur TPM+PIN a été ajouté avec succès, mais si la machine redémarre pendant l'exécution ou si l'étape manage-bde -add échoue partiellement, vous aurez besoin de la clé de récupération pour déverrouiller le lecteur.
Récupérez votre clé de récupération maintenant :
# Afficher la clé de récupération dans la console (stockez-la dans un endroit sûr)
manage-bde -protectors -get C: -Type RecoveryPassword
Ou trouvez-la dans votre compte Microsoft à l'adresse account.microsoft.com/devices/recoverykey.
Le choix du code PIN est important. Un code PIN numérique court offre une faible protection contre les attaques physiques ciblées. Utilisez au moins 8 caractères. Les codes PIN alphanumériques sont activés par le script.
Le script définit quatre valeurs de registre sous HKLM:\SOFTWARE\Policies\Microsoft\FVE :
Ce sont exactement les clés que la stratégie de groupe Windows (gpedit.msc) écrit. Les définir via le registre équivaut à configurer la stratégie via le composant logiciel enfichable MMC.
Si vous préférez exécuter les étapes individuellement :
# 1. Définir les clés de registre de la stratégie de groupe
$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. Ajouter le protecteur TPM+PIN
manage-bde -protectors -add C: -TPMAndPIN
# 3. Trouver l'ID du protecteur TPM seul
manage-bde -protectors -get C:
# 4. Le supprimer (remplacer le GUID par l'ID obtenu à l'étape 3)
manage-bde -protectors -delete C: -id {VOTRE-GUID-TPM-SEUL}
# 5. Vérifier
manage-bde -status C:
yellowkey-mitigation/
├── Add-BitLockerTPMPin.ps1 # Script d'atténuation principal
└── README.md
Ce script a été co-développé avec Claude (Anthropic). Toute la logique a été revue et testée sur Windows 11 par l'auteur.
MIT — Libre d'utilisation, de modification et de distribution.
| Détails |
|---|
| CVE | CVE-2026-45585 |
| Score CVSS | 6,8 (Moyen) |
| Vecteur CVSS | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-77 (Injection de commande) |
| Vecteur d'attaque | Accès physique requis |
| Publié | 19 mai 2026 |
| Correctif | Aucun pour l'instant — Microsoft n'a émis qu'une atténuation manuelle |
| Avis MSRC | msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585 |
| PoC | Publiquement disponible (Nightmare-Eclipse/YellowKey) |
| Affecté | Windows 11 (24H2, 25H2, 26H1), Windows Server 2022/2025 |
| Non affecté | Windows 10 |
| Clé | Valeur | Objectif |
|---|
UseAdvancedStartup | 1 | Active la stratégie « Exiger une authentification supplémentaire au démarrage » — sans cela, toutes les clés UseTPM* sont ignorées |
UseTPMPIN | 2 | 0 = bloquer, 1 = exiger, 2 = autoriser TPM+PIN |
UseTPM | 2 | Autorise TPM seul en complément du PIN (empêche les conflits de stratégie) |
UseEnhancedPin | 1 | Autorise les caractères alphanumériques dans le code PIN |