Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
stop-zenbleed-win — سكربت PowerShell لتطبيق الحل البديل الخاص بـ Zenbleed (CVE-2023-20593) عبر MSR على Windows | Kitploit
أدوات/GitHubGitHub/sbaresearch/stop-zenbleed-win
تحليل الثغرات الأمنيةالاستغلالالبرمجة النصية والأتمتةأمن الأجهزة
GitHubsbaresearch/stop-zenbleed-win

stop-zenbleed-win

سكربت PowerShell لتطبيق الحل البديل الخاص بـ Zenbleed (CVE-2023-20593) عبر MSR على Windows

عرض المستودع
82منذ 3 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إيقاف Zenbleed (CVE-2023-20593) على ويندوز

تُؤثّر ثغرة Zenbleed المكتشفة حديثًا (CVE-2023-20593) على جميع معالجات Zen2 من AMD. لسوء الحظ، لن توفّر AMD تحديثات للميكروكود للعديد من معالجاتها حتى نوفمبر أو ديسمبر 2023. كيف يمكن البقاء آمنًا في هذه الأثناء؟ لحسن الحظ، يوجد حل برمجي بديل. في حين أن تطبيق الحل البرمجي البديل يتلخص في سطر واحد على لينكس، فإن الأمور أكثر تعقيدًا على ويندوز.

لتطبيق الحل البرمجي البديل، يجب تعيين بت معيّن (وهو ما يُعرف بـ chicken bit DE_CFG[9]) في سجل MSR الخاص بوحدة المعالجة المركزية. كما أشار Travis Ormandy، يمكن استخدام الأمر التالي لتجنّب Zenbleed على لينكس:

root@kitploit:~
# wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

تحت ويندوز، يكون ضبط سجل MSR أكثر صعوبة. فبرامج تشغيل مستوى النواة فقط هي المسموح لها بالكتابة إلى سجل MSR. علاوة على ذلك، لتحميل برنامج تشغيل على مستوى النواة، يجب أن يكون موقّعًا. لهذا السبب قررنا استخدام برنامج تشغيل WinRing0 الموجود من OpenLibSys.org. كتبنا سكربت PowerShell يقوم بتحميل WinRing0، وإرسال طلبات الكتابة المناسبة إلى سجل MSR إلى برامج التشغيل، ثم إلغاء تحميل برنامج تشغيل WinRing0 فورًا بعد ذلك. حاليًا، يعمل سكربت PowerShell الخاص بنا فقط عند تعطيل Hyper-V. سكربت PowerShell الخاص بنا مستضاف هنا: https://github.com/sbaresearch/stop-zenbleed-win

يُرجى ملاحظة أن سكربت PowerShell يأتي مع بعض المحاذير. يرجى قراءة قسم 'المحاذير' وإجراء تحليل مخاطر لبيئتك الخاصة قبل استخدام السكربت.

الاستخدام

  • شغّل Stop-Zenbleed.ps1 في PowerShell 5.x بصلاحيات المسؤول (admin)
  • السكربت مُصمَّم للعمل فقط على وحدات المعالجة المركزية AMD Zen2 المتأثرة بـ Zenbleed. قد يسبب مشاكل غير متوقعة على الأنظمة الأخرى، يرجى توخي الحذر.

المحاذير

  • يجب عليك تعطيل Hyper-V. وإلا فإن نظام Windows نفسه يعمل في الحلقة 1 (CPU ring 1)، ولن يتمكن برنامج التشغيل على مستوى النواة من الحصول على وصول للكتابة إلى سجل MSR. تعطيل Hyper-V للأسف يعني تعطيل Credential Guard وDevice Guard، وهما إجراءان أمنيان موصى بهما في الظروف العادية. من وجهة نظرنا، تفادي هجوم محتمل لسرقة المعلومات عبر JavaScript (يُعتبر استغلال Zenbleed عبر JavaScript أمرًا ممكنًا على الأقل وفقًا لـ tom's Hardware: https://www.tomshardware.com/news/zenbleed-bug-allows-data-theft-from-amds-zen-2-processors-patches-released) عن طريق إيقاف ثغرة Zenbleed (CVE-2023-20593) يفوق مخاطر تعطيل إجراءين من إجراءات الدفاع في العمق.
  • برنامج تشغيل WinRing0 على مستوى النواة يعاني من CVE-2020–14979، وهي ثغرة تصعيد صلاحيات محلية. انظر https://posts.specterops.io/cve-2020-14979-local-privilege-escalation-in-evga-precisionx1-cf63c6b95896 و https://github.com/openhardwaremonitor/openhardwaremonitor/issues/1557. WinRing0 هو برنامج تشغيل مفتوح المصدر على مستوى النواة وتستخدمه برامج أخرى مفتوحة المصدر أيضًا مثل مكتبة OpenHardwareMonitor. المشكلة هي أن برنامج التشغيل ينشئ كائن جهاز (device object) بدون قائمة تحكم بالوصول (ACL)، مما يسمح لجميع مستخدمي ويندوز المحليين بالتواصل مع برنامج التشغيل. وبما أن برنامج التشغيل يسمح بالوصول المباشر إلى العتاد، فإن تصعيد الصلاحيات إلى صلاحيات NT AUTHORITY\SYSTEM يصبح ممكنًا. الإصلاح الحقيقي يتطلب تغييرًا في برنامج تشغيل WinRing0 وبالتالي توقيعًا جديدًا، وهو أمر معقّد. مكتبة OpenHardwareMonitor، كحل بديل، تقوم بتصحيح حقوق الوصول فور تحميل برنامج التشغيل (https://github.com/openhardwaremonitor/openhardwaremonitor/commit/0e435cafc61fe84d429e8a9500d666e34e3de67b). سكربت PowerShell الخاص بنا يتعامل مع CVE-2020–14979 عن طريق إلغاء تحميل برنامج التشغيل فورًا بعد تعيين chicken bit. ومع ذلك، توجد نافذة زمنية صغيرة للاستغلال في كل مرة يتم فيها تنفيذ السكربت. نظرًا لأن تعيين chicken bit ليس دائمًا، يجب تنفيذ السكربت عند كل إعادة تشغيل. في تحليل المخاطر لدينا، فوائد الحماية من Zenbleed (والذي يمكن أن يحدث عن بُعد) تفوق مرة أخرى مخاطر تصعيد الصلاحيات المحلية. علاوة على ذلك، نوصي بتنفيذ السكربت في أقرب وقت ممكن أثناء عملية الإقلاع للحد من قابلية الاستغلال من قبل عمليات المستخدم. يرجى إجراء تحليل مخاطر لبيئتك الخاصة قبل نشر سكربت PowerShell.
  • هذا الحل البرمجي البديل مخصص ليكون حلاً مؤقتًا إلى أن تقوم AMD بإصلاح الخلل في وحدات المعالجة المركزية الخاصة بها.

كيف أعرف أنه يعمل؟

root@kitploit:~
PS C:\stop-zenbleed-win> powershell -ExecutionPolicy RemoteSigned .\Stop-Zenbleed.ps1
[>] Installing driver...
[SC] CreateService SUCCESS

[>] Starting driver...

SERVICE_NAME: WinRing0_1_2_0
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :

[>] Opening driver...
[+] Driver access OK, handle: 2456

[>] Try 1 to apply fix on processor 1
[+] Fix is applied on processor 1 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 2 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 3
[+] Fix is applied on processor 3 (MSR 0xC0011029=0x3004310E08202)
[+] Fix is applied on processor 4 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 5
[+] Fix is applied on processor 5 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 6 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 7
[+] Fix is applied on processor 7 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 8 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 9
[+] Fix is applied on processor 9 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 10 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 11
[+] Fix is applied on processor 11 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 12 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 13
[+] Fix is applied on processor 13 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 14 (MSR 0xC0011029=0x300C310E08203)
[>] Try 1 to apply fix on processor 15
[+] Fix is applied on processor 15 (MSR 0xC0011029=0x300C310E08202)
[+] Fix is applied on processor 16 (MSR 0xC0011029=0x300C310E08203)

[>] Closing driver...

[>] Stopping driver...

SERVICE_NAME: WinRing0_1_2_0
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

[>] Uninstalling driver...
[SC] DeleteService SUCCESS

بعد تنفيذ سكربت PowerShell الخاص بنا، يجب ألّا يُنتج استغلال إثبات المفهوم (POC) أي مخرجات إضافية.

حقوق النشر

  • يتم توفير Stop-Zenbleed.ps1 بموجب رخصة GNU GPL v3.0: LICENSE
  • WinRing0 © 2007-2009 OpenLibSys.org ويتم توفيره بموجب الشروط التالية: WinRing0/LICENSE
تنزيل الأداة