
Experimentos relacionados con CVE-2015-3456
Hay:
exploit/ es un "exploit" (solo hace fallar a QEMU).mock/ contiene una versión reducida de QEMU. Solo
queda la vulnerabilidad.patch/ contiene un programa para parchear una instancia en
ejecución de QEMU. El punto principal es no necesitar símbolos de
depuración, ni el ejecutable original en el disco. Por lo tanto,
se debe proporcionar cierta información para que este programa funcione como se espera.La idea principal detrás de todo el parcheo en vivo es modificar el
command_to_handler array para hacer que cada comando apunte a la
función "no implementada". Mientras el proceso está parcialmente detenido por
ptrace (solo el hilo principal), esta parece una forma segura de
corregir la vulnerabilidad (siempre que no te importe que el
controlador de disquete deje de funcionar).
Este tipo de parcheo funciona porque command_to_handler es una
variable estática no inicializada y, por lo tanto, termina en el
segmento BSS, que es escribible. Además, excepto para PIE, la
posición de este segmento en la memoria se conoce en tiempo de
compilación. Desafortunadamente, QEMU normalmente se compila como PIE y, por tanto, ese no es el caso.
¡Por supuesto, úsalo bajo tu propio riesgo: modificar un proceso en ejecución podría causar estragos en el mundo!
Información más detallada está disponible aquí: http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
Para entender mejor el parcheo en vivo, aquí tienes algunos enlaces: