
Simples dispatcher de IOCTL para CVE-2018-8060/8061
Descrição:
O driver de kernel HWiNFO AMD64 versão 8.98 e inferior permite que um usuário sem privilégios envie IOCTL ao driver do dispositivo. Se os ponteiros do buffer de entrada e/ou saída forem nulos ou se os dados desses buffers forem inválidos, ocorre um ponteiro nulo/inválido, resultando em pânico do kernel do Windows, também conhecido como Tela Azul.
POC:
Um usuário sem privilégios envia alguns IOCTLs, ao dispositivo simbólico "HWiNFO32", maiores que 0x85FE2600 com dados de buffer de entrada/saída arbitrários, resultando em uma desreferência de ponteiro dentro do escopo do driver do dispositivo; causando um pânico do kernel. Alguns casos resultam em CWE-476 (Desreferência de Ponteiro Nulo) ou CWE-781 (Validação de Endereço Incorreta em IOCTL com Código de Controle de E/S METHOD_NEITHER)
Descrição:
O driver de kernel HWiNFO AMD64 versão 8.98 e inferior permite que um usuário sem privilégios envie um IOCTL especial ao driver do dispositivo, resultando em leitura ou gravação direta de memória física.
POC:
Um usuário sem privilégios que envia um IOCTL especial, ou seja, 0x85FE2608 ao dispositivo simbólico "HWiNFO32", com buffer de entrada (espaço do usuário) contendo um endereço de memória física, tamanho e um endereço de memória virtual, resulta no mapeamento da memória física pelo driver e na leitura dela, copiando seu conteúdo para o endereço virtual.
O arquivo 8061.data é formatado desta maneira: