
Experimentos relacionados ao CVE-2015-3456
Existem:
exploit/ é um "exploit" (apenas faz o QEMU falhar).mock/ contém uma versão reduzida do QEMU. Apenas a
vulnerabilidade permanece.patch/ contém um programa para aplicar patch em uma instância em execução do
QEMU. O objetivo principal é não precisar de símbolos de depuração, nem do
executável original no disco. Portanto, algumas informações têm que ser fornecidas
para este programa funcionar como esperado.A ideia principal em torno de todo o live patching é modificar o
array command_to_handler para fazer cada comando apontar para a função "não
implementada". Enquanto o processo está parcialmente parado pelo
ptrace (apenas a thread principal), isso parece uma forma segura de corrigir a
vulnerabilidade (desde que você não se importe que o controlador de disquete não
funcione mais).
Esse tipo de patch funciona porque command_to_handler é uma variável
estática não inicializada e, portanto, acaba no segmento BSS, que
é gravável. Além disso, exceto para PIE, a posição desse segmento na
memória é conhecida em tempo de compilação. Infelizmente, o QEMU é geralmente
compilado como PIE e, portanto, esse não é o caso.
É claro que use por sua conta e risco: modificar um processo em execução pode causar estragos no mundo!
Informações mais detalhadas estão disponíveis aqui: http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
Para entender melhor o live patching, aqui estão alguns links: