针对 WinRE BitLocker 绕过的自动缓解措施——目前尚无完整补丁
YellowKey 是一个公开披露的 BitLocker 绕过方法,允许拥有物理访问权限的攻击者在受 BitLocker 保护的 Windows 11 驱动器上获得无限制的 shell——无需恢复密钥、无需 PIN、也无需任何凭据。
Windows 恢复环境中的一个组件 (autofstxe.exe) 执行事务性 NTFS 回放例程,该例程会删除 winpeshl.ini。其副作用是启动一个具有完全访问已解密卷权限的 shell。攻击者通过将文件夹复制到 USB 驱动器(或直接复制到 EFI 分区)、重启进入 WinRE 并按住 CTRL 来触发该攻击。
从 仅 TPM 切换为 TPM+PIN 可以完全阻止该攻击。由于启动时需要 PIN,无论 WinRE shell 如何生成,攻击者都无法解密驱动器——没有正确的 PIN,TPM 不会释放卷主密钥。
仅 TPM 的 BitLocker 会在同硬件上任何启动时自动解锁。而 TPM+PIN 需要一个只有用户知道的秘密,从而堵住了 YellowKey 的漏洞。
该脚本处理了默认情况下阻止 manage-bde 添加 PIN 保护器的组策略先决条件,然后安全地将驱动器从仅 TPM 转换为 TPM+PIN,一次运行即可完成。
运行 Add-BitLockerTPMPin.ps1(管理员权限)
│
▼
[版本检查] ──→ 在 Windows 10 上优雅退出(不受影响)
│
▼
[BitLocker 状态检查] ──→ 确认 C: 盘加密已激活
│
▼
[组策略修复] ──→ 设置 UseAdvancedStartup + UseTPMPIN + UseEnhancedPin
│ (必需——否则 manage-bde 会拒绝 TPM+PIN)
▼
[gpupdate /force] ──→ 立即应用策略,无需重启
│
▼
[manage-bde -protectors -add C: -TPMAndPIN] ──→ 交互式提示输入 PIN
│
▼
[列出保护器] ──→ 显示所有当前保护器以供验证
│
▼
[移除仅 TPM 保护器] ──→ 可选,带确认提示
# 在提升的 PowerShell 提示符下,分别运行以下两条命令:
Set-ExecutionPolicy Bypass -Scope Process -Force
# 所有受 BitLocker 保护的驱动器(自动检测):
.\Add-BitLockerTPMPin.ps1
# 或指定特定驱动器:
.\Add-BitLockerTPMPin.ps1 -Drive C
.\Add-BitLockerTPMPin.ps1 -Drive D
系统会交互式地提示您为每个驱动器设置 PIN。支持字母数字 PIN(脚本通过注册表启用了增强型 PIN)。
注意: TPM+PIN 保护器仅适用于 操作系统驱动器(通过 TPM 启动的驱动器)。数据驱动器(D:、E: 等)使用密码或恢复密钥保护器——脚本会自动检测并跳过它们。
找到受 BitLocker 保护的驱动器:
C:\ 完全加密 保护:开启
D:\ 完全加密 保护:开启
已设置组策略键。正在刷新策略...
==============================
驱动器:C:\
==============================
正在添加 TPM+PIN 保护器。系统将提示您输入 PIN。
PIN 必须为 6 个字符或以上。支持字母数字。
输入用于保护卷的 PIN:
再次输入 PIN 以确认:
已添加密钥保护器:
TPM 和 PIN:
ID:{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
C:\ 上的当前保护器:
...
找到仅 TPM 保护器:{YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
是否移除 C:\ 上的仅 TPM 保护器?这将仅保留 TPM+PIN。(y/N):y
已移除仅 TPM 保护器。
==============================
驱动器:D:\
==============================
D:\ 没有 TPM 保护器——TPM+PIN 仅适用于操作系统驱动器。跳过。
完成。使用以下命令验证:manage-bde -status <drive>
manage-bde -status C:
# 应显示:密钥保护器:TPM 和 PIN
# 保护状态:保护已开启
运行前请准备好恢复密钥。 脚本仅在确认 TPM+PIN 保护器已成功添加后才移除仅 TPM 保护器,但如果机器在运行中重启或 manage-bde -add 步骤部分失败,您将需要恢复密钥来解锁驱动器。
立即检索您的恢复密钥:
# 将恢复密钥打印到控制台(存储到安全位置)
manage-bde -protectors -get C: -Type RecoveryPassword
或者在 Microsoft 账户中查找:account.microsoft.com/devices/recoverykey
选择 PIN 很重要。 短数字 PIN 对针对性的物理攻击提供的保护较弱。建议至少使用 8 个字符。脚本已启用字母数字 PIN。
脚本在 HKLM:\SOFTWARE\Policies\Microsoft\FVE 下设置四个注册表值:
这些正是 Windows 组策略 (gpedit.msc) 写入的键。通过注册表设置它们等同于通过 MMC 管理单元配置策略。
如果您希望单独执行每个步骤:
# 1. 设置组策略注册表键
$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. 添加 TPM+PIN 保护器
manage-bde -protectors -add C: -TPMAndPIN
# 3. 找到仅 TPM 保护器 ID
manage-bde -protectors -get C:
# 4. 移除它(用第 3 步得到的 ID 替换 GUID)
manage-bde -protectors -delete C: -id {YOUR-TPM-ONLY-GUID}
# 5. 验证
manage-bde -status C:
yellowkey-mitigation/
├── Add-BitLockerTPMPin.ps1 # 主要缓解脚本
└── README.md
此脚本与 Claude (Anthropic) 共同开发。所有逻辑已由作者在 Windows 11 上审查并测试。
MIT——可自由使用、修改和分发。
| 详细信息 |
|---|
| CVE | CVE-2026-45585 |
| CVSS 评分 | 6.8(中危) |
| CVSS 向量 | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-77(命令注入) |
| 攻击向量 | 需要物理访问 |
| 发布时间 | 2026 年 5 月 19 日 |
| 补丁 | 尚无——微软仅发布了手动缓解措施 |
| MSRC 公告 | msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585 |
| PoC | 已公开 (Nightmare-Eclipse/YellowKey) |
| 受影响版本 | Windows 11 (24H2, 25H2, 26H1), Windows Server 2022/2025 |
| 未受影响版本 | Windows 10 |
| 键 | 值 | 作用 |
|---|
UseAdvancedStartup | 1 | 启用“启动时需要附加身份验证”策略——没有此设置,所有 UseTPM* 键将被忽略 |
UseTPMPIN | 2 | 0 = 阻止,1 = 强制要求,2 = 允许 TPM+PIN |
UseTPM | 2 | 允许同时使用仅 TPM 和 PIN(防止策略冲突) |
UseEnhancedPin | 1 | 允许在 PIN 中使用字母数字字符 |