
Esperimenti relativi a CVE-2015-3456
Ci sono:
exploit/ è un "exploit" (fa solo crashare QEMU).mock/ contiene una versione ridotta di QEMU. Rimane solo la
vulnerabilità.patch/ contiene un programma per applicare una patch a
un'istanza in esecuzione di QEMU. Il punto principale è non avere
bisogno dei simboli di debug, né dell'eseguibile originale su
disco. Pertanto, alcune informazioni devono essere fornite
affinché questo programma funzioni come previsto.L'idea principale dietro tutto il live patching è modificare
l'array command_to_handler per far sì che ogni comando punti alla
funzione "non implementata". Mentre il processo è parzialmente
fermato da ptrace (solo il thread principale), questo sembra un modo
sicuro per correggere la vulnerabilità (finché non ti interessa che
il controller del floppy non funzioni più).
Questo tipo di patch funziona perché command_to_handler è una
variabile statica non inizializzata e quindi finisce nel segmento BSS
che è scrivibile. Inoltre, eccetto per PIE, la posizione di questo
segmento in memoria è nota in fase di compilazione. Sfortunatamente,
QEMU è di solito compilato come PIE e quindi questo non vale.
Ovviamente, usalo a tuo rischio: modificare un processo in esecuzione potrebbe devastare il mondo!
Informazioni più dettagliate sono disponibili qui: http://vincent.bernat.im/en/blog/2015-hotfix-qemu-venom.html
Per comprendere meglio il live patching, ecco alcuni link: