
Exécution de code à distance dans Microvirt MEmu
CVEID : CVE-2019-14514
Nom du ou des produits concernés et version(s) : Microvirt MEmu (toutes les versions antérieures à 7.0.2)
Type de problème : CWE-78 : Neutralisation incorrecte d'éléments spéciaux utilisés dans une commande OS ('OS Command Injection')
Résumé
MEmu est un émulateur Android pour Windows. Lors de nos tests, nous avons découvert un port TCP ouvert qui pourrait être exploité pour obtenir une exécution de code avec les privilèges root. Toutes les versions de Microvirt MEmu antérieures à 7.0.2 comportent un binaire vulnérable qui écoute sur le port 21509. Un attaquant pourrait obtenir une exécution de code à distance avec les privilèges root sur un système Android émulé en envoyant des messages spécialement conçus contenant des caractères spéciaux utilisés comme délimiteurs de commandes dans les shells Unix.
Description
Le binaire /system/bin/systemd (sans rapport avec le système d'init systemd de Freedesktop) est exécuté par l'utilisateur root et écoute les commandes sur le port 21509. Si une commande commençant par installer:uninstall est envoyée, l'entrée contrôlée par l'attaquant sera insérée dans un modèle de commande shell et transmise à /system/bin/sh sans vérification ni échappement. Cela signifie qu'un attaquant distant pourrait insérer des caractères spéciaux comme ;, && ou || pour envoyer ses propres commandes shell qui seront exécutées sur le système émulé avec les privilèges root.
Reproduction
echo "installer:uninstall;[shell_command_to_execute]" | nc [emulator_ip] 21509
L'émulateur devrait exécuter la commande puis redémarrer.
Remède
Mettez à jour MEmu vers la version 7.0.2 ou une version ultérieure.