Testado no Windows VMware Workstation 16.2.0, com sistema operacional convidado Ubuntu Server 22
Pelo menos um dispositivo USB deve estar conectado à máquina convidada
Altere o 'qh->field4' no código ehci.c
Digite 'sudo ./run.sh' para compilar e executar o PoC
Exemplo
use 'lsusb' para determinar o ID do dispositivo, use o ID do dispositivo para definir 'qh->field4'
o código vmx alocará um buffer de struct com tamanho 0x18 (o tamanho pode ser controlado no código) para ler a memória física do convidado.
o tamanho total dessa struct será 0x400
o endereço dessa struct é 0x26d6caa80d0
no final, o vmx lerá 0x800 de tamanho (pode ser controlado no código) de memória física para 0x2606CAA84C0, que são os últimos 0x10 bytes de 0x26d6caa80d0 (os primeiros 0x8 já foram lidos no estágio de alocação)
com certeza, isso causará uma escrita fora dos limites (OOB).