Probado en Windows VMware Workstation 16.2.0, con sistema operativo invitado Ubuntu Server 22
Al menos un dispositivo USB debe estar conectado a la máquina invitada
Cambiar el 'qh->field4' en el código ehci.c
Escribir 'sudo ./run.sh' para compilar y ejecutar el PoC
Ejemplo
Usar 'lsusb' para determinar el id del dispositivo, usar el id del dispositivo para establecer 'qh->field4'
El código de vmx asignará un struct de tamaño 0x18 (el tamaño se puede controlar en el código) como búfer para leer memoria física del invitado.
El tamaño total de este struct será 0x400
La dirección de este struct es 0x26d6caa80d0
Al final, vmx leerá 0x800 de tamaño (controlable en el código) de memoria física en 0x2606CAA84C0, que es el último byte 0x10 de 0x26d6caa80d0 (los primeros 0x8 ya se leyeron en la etapa de asignación)
Sin duda, causará una escritura fuera de los límites (OOB).