
Remote code execution in Microvirt MEmu
CVEID: CVE-2019-14514
Name des betroffenen Produkts/der betroffenen Produkte und Versionen: Microvirt MEmu (alle Versionen vor 7.0.2)
Problemtyp: CWE-78: Unzureichende Neutralisierung von Sonderzeichen in einem OS-Befehl ('OS Command Injection')
Zusammenfassung
MEmu ist ein Android-Emulator für Windows. Während unserer Tests haben wir einen offenen TCP-Port gefunden, der ausgenutzt werden könnte, um eine Codeausführung mit Root-Rechten zu erlangen. Alle Microvirt MEmu-Versionen vor 7.0.2 enthalten eine anfällige Binärdatei, die auf Port 21509 lauscht. Ein Angreifer könnte durch Senden von präparierten Nachrichten, die als Befehlsbegrenzer in Unix-Shells verwendete Sonderzeichen enthalten, eine Remote-Codeausführung mit Root-Rechten auf einem emulierten Android-System erlangen.
Beschreibung
/system/bin/systemd-Binärdatei (nicht verwandt mit dem Freedesktop-systemd-Init-System) wird vom Root-Benutzer ausgeführt und empfängt Befehle auf Port 21509. Wenn ein Befehl gesendet wird, der mit installer:uninstall beginnt, wird die vom Angreifer gesteuerte Eingabe in eine Shell-Befehlsschablone eingefügt und ohne Überprüfung oder Maskierung an /system/bin/sh übergeben. Dies bedeutet, dass ein entfernter Angreifer Sonderzeichen wie ;, && oder || einfügen kann, um eigene Shell-Befehle zu senden, die auf dem emulierten System mit Root-Rechten ausgeführt werden.
Reproduktion
echo "installer:uninstall;[shell_command_to_execute]" | nc [emulator_ip] 21509
Der Emulator sollte den Befehl ausführen und dann neu starten.
Abhilfe
Aktualisieren Sie MEmu auf Version 7.0.2 oder höher.