Details der kritischen Schwachstelle () im SLIRP-Handler, der standardmäßig in QEMU verwendet wird, um einen Kommunikationskanal zwischen dem virtuellen Netzwerkadapter im Gastbetriebssystem und dem Netzwerk-Backend auf der QEMU-Seite zu organisieren. Das Problem betrifft auch Virtualisierungssysteme auf KVM-Basis (im Modus ) und VirtualBox, die das slirp-Backend von QEMU verwenden, sowie Anwendungen, die den Netzwerk-Stack im Benutzermodus nutzen (TCP/IP-Emulator).
Die Schwachstelle ermöglicht die Ausführung von Code auf der Host-Seite mit den Rechten des QEMU-Handler-Prozesses, wenn vom Gastbetriebssystem ein speziell gestaltetes sehr großes Netzwerkpaket gesendet wird, für das eine Fragmentierung erforderlich ist. Aufgrund eines Fehlers in der Funktion ip_reass(), die beim Zusammenbauen der eingehenden Pakete aufgerufen wird, kann das erste Fragment nicht in den zugewiesenen Puffer passen und sein Ende wird in die nachfolgenden Speicherbereiche geschrieben.
Zum Testen gibt es bereits Ein funktionierender Exploit-Prototyp, der einen ASLR-Umgehung und die Ausführung von Code durch das Überschreiben des Speichers des Arrays main_loop_tlg vorsieht, das die Liste QEMUTimerList mit den durch den Timer aufgerufenen Handlers enthält.
Die Schwachstelle wurde bereits in und , aber bleibt ungepatcht in , und . In und das Problem tritt nicht auf, da slirp nicht verwendet wird. Die Schwachstelle bleibt ungepatcht in der letzten Version (der Patch ist derzeit verfügbar als ).
Quelle: opennet.ru
