
تقوية BitLocker TPM+PIN ضد CVE-2026-45585 (YellowKey)
تخفيف آلي لاختراق BitLocker عبر WinRE — لا يوجد تصحيح كامل بعد
YellowKey هي ثغرة اختراق لـ BitLocker تم الكشف عنها علنًا، تمنح مهاجمًا لديه وصول مادي شلًا غير مقيد على قرص Windows 11 محمي بـ BitLocker — بدون مفتاح الاسترداد، وبدون PIN، وبدون أي بيانات اعتماد.
أحد المكونات داخل بيئة استرداد Windows (autofstx.exe) يقوم بتنفيذ إجراء إعادة تشغيل لـ Transactional NTFS يحذف winpeshl.ini. التأثير الجانبي هو شل يطلق مع وصول كامل إلى وحدة التخزين المفكوكة. يقوم المهاجم بتشغيله عن طريق نسخ مجلد إلى محرك أقراص USB (أو مباشرة إلى قسم EFI)، وإعادة التشغيل إلى WinRE، والضغط على CTRL.
التحول من TPM-only إلى TPM+PIN يمنع الهجوم تمامًا. مع اشتراط PIN عند الإقلاع، لا يمكن للمهاجم فك تشفير القرص بغض النظر عن كيفية ظهور شل WinRE — لن يقوم TPM بإطلاق المفتاح الرئيسي لحجم التخزين بدون PIN الصحيح.
BitLocker بدون TPM فقط يفتح تلقائيًا عند أي إقلاع على نفس الجهاز. TPM+PIN يتطلب سرًا لا يعرفه إلا المستخدم، مما يسد الفجوة التي خلقها YellowKey.
يتولى السكريبت المتطلبات الأساسية لنهج المجموعة التي تمنع manage-bde من إضافة حامي PIN افتراضيًا، ثم ينقل القرص بأمان من TPM-only إلى 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-only] ──→ اختياري، يطلب تأكيدًا
# قم بتشغيل هذين كأمرين منفصلين في موجه PowerShell مرتفع:
Set-ExecutionPolicy Bypass -Scope Process -Force
# جميع الأقراص المحمية بـ BitLocker (اكتشاف تلقائي):
.\Add-BitLockerTPMPin.ps1
# أو استهداف قرص معين:
.\Add-BitLockerTPMPin.ps1 -Drive C
.\Add-BitLockerTPMPin.ps1 -Drive D
سيُطلب منك تفاعليًا تعيين PIN لكل قرص. PIN أبجدي عددي مدعوم (السكريبت يفعل الأرقام المحسنة عبر السجل).
ملاحظة: حماة TPM+PIN تنطبق على قرص النظام فقط (القرص الذي يقوم بالإقلاع عبر TPM). أقراص البيانات (D:, E:, إلخ) تستخدم حماة كلمة مرور أو مفتاح استرداد — سيكتشفها السكريبت ويتخطاها تلقائيًا.
تم العثور على أقراص محمية بـ BitLocker:
C:\ FullyEncrypted Protection: On
D:\ FullyEncrypted Protection: On
تم ضبط مفاتيح نهج المجموعة. جاري تحديث النهج...
==============================
القرص: C:\
==============================
جاري إضافة حامي TPM+PIN. سيُطلب منك إدخال PIN.
يجب أن يكون PIN مكونًا من 6 أحرف أو أكثر. الأبجدي العددي مدعوم.
أدخل PIN لاستخدامه لحماية وحدة التخزين:
قم بتأكيد PIN بإعادة كتابته:
تمت إضافة حماة المفتاح:
TPM And PIN:
ID: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
الحماة الحالية على C:\:
...
تم العثور على حامي TPM-only: {YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY}
إزالة حامي TPM-only على C:\؟ هذا يترك فقط TPM+PIN. (y/N): y
تمت إزالة حامي TPM-only.
==============================
القرص: D:\
==============================
D:\ ليس لديه حامي TPM — TPM+PIN ينطبق فقط على قرص النظام. يتم التخطي.
تم. تحقق باستخدام: manage-bde -status <drive>
manage-bde -status C:
# يجب أن يظهر: Key Protectors: TPM And PIN
# Protection Status: Protection On
احصل على مفتاح الاسترداد الخاص بك قبل التشغيل. يقوم السكريبت بإزالة حامي TPM-only فقط بعد تأكيد إضافة حامي TPM+PIN بنجاح، ولكن إذا تم إعادة تشغيل الجهاز في منتصف التشغيل أو فشلت خطوة 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). تعيينها عبر السجل يعادل تكوين النهج عبر snap-in 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-only
manage-bde -protectors -get C:
# 4. إزالته (استبدل GUID بالمعرف من الخطوة 3)
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 Score | 6.8 (متوسطة) |
| CVSS Vector | CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-77 (حقن أوامر) |
| ناقل الهجوم | يتطلب وصولًا ماديًا |
| تاريخ النشر | 19 مايو 2026 |
| تصحيح | لا يوجد بعد — أصدرت Microsoft تخفيفًا يدويًا فقط |
| إرشادات MSRC | msrc.microsoft.com/update-guide/vulnerability/CVE-2026-45585 |
| إثبات المفهوم | متاح للجمهور (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-only بجانب PIN (يمنع تعارض النهج) |
UseEnhancedPin | 1 | يسمح بالأحرف الأبجدية العددية في PIN |