
Esecuzione di codice remoto in Microvirt MEmu
ID CVE: CVE-2019-14514
Nome del prodotto o dei prodotti interessati e versioni: Microvirt MEmu (tutte le versioni precedenti alla 7.0.2)
Tipo di problema: CWE-78: Neutralizzazione impropria di elementi speciali usati in un comando del sistema operativo ('Iniezione di comandi del sistema operativo')
Sommario
MEmu è un emulatore Android per Windows. Durante i nostri test, abbiamo trovato una porta TCP aperta che potrebbe essere sfruttata per ottenere l'esecuzione di codice con privilegi di root. Tutte le versioni di Microvirt MEmu precedenti alla 7.0.2 presentano un binario vulnerabile che ascolta sulla porta 21509. Un attaccante potrebbe ottenere l'esecuzione remota di codice con privilegi di root su un sistema Android emulato inviando messaggi appositamente predisposti contenenti caratteri speciali usati come delimitatori di comandi nelle shell Unix.
Descrizione
Il binario /system/bin/systemd (non correlato al sistema di init systemd di Freedesktop) viene eseguito dall'utente root e resta in ascolto di comandi sulla porta 21509. Se viene inviato un comando che inizia con installer:uninstall, l'input controllato dall'attaccante viene inserito in un template di comando shell e passato a /system/bin/sh senza verifica o escaping. Ciò significa che un attaccante remoto potrebbe inserire caratteri speciali come ;, && o || per inviare i propri comandi shell, che verranno eseguiti sul sistema emulato con privilegi di root.
Riproduzione
echo "installer:uninstall;[shell_command_to_execute]" | nc [emulator_ip] 21509
L'emulatore dovrebbe eseguire il comando e poi riavviarsi.
Rimedio
Aggiornare MEmu alla versione 7.0.2 o successiva.