VIKIROOT
Ceci est un PoC CVE-2016-5195 pour Android 6.0.1 Marshmallow 64 bits (peut-être 7.0 ?), ainsi qu'un outil de root temporel universel et stable. Il ne nécessite pas d'exécutable SUID ni de modification du système de fichiers.
Fonctionnalités
- Contournement de SELinux (voir ci-dessous pour les détails).
- Mémoire uniquement : ne modifie pas le système de fichiers et ne nécessite pas d'exécutable spécial.
- Stable : n'affecte pas la stabilité de votre appareil.
- Évolutif : facile d'ajouter de nouveaux noyaux et/ou de nouveaux appareils.
- Réversible : la porte dérobée est effacée automatiquement après la fin du shell root, ce qui signifie qu'aucun redémarrage n'est nécessaire après utilisation.
Attention
Par « contournement de SELinux », j'entends que la charge utile s'exécutera dans le domaine init même si SELinux est en mode enforcing, cependant, un correctif de sepolicy est toujours nécessaire pour rendre le domaine init unconfined. Cela signifie généralement qu'une image de démarrage modifiée est requise.
Prérequis
- I, Robot d'Isaac Asimov.
- Appareil compatible « dirtycow ».
- sepolicy corrigé.
Construction
Les binaires pré-compilés sont disponibles sur la page des versions. Sinon, ajoutez simplement la chaîne d'outils NDK standalone dans PATH et exécutez make.
Utilisation
Vous pouvez l'exécuter via un shell adb (placez-le sous /data/local/tmp) et obtenir un shell root soit dans le terminal intégré, soit via un serveur de terminal distant comme nc. Pour plus de détails, exécutez-le sans paramètres.
Dépannage
- Tout d'abord, veuillez lire la partie « Attention » ci-dessus.
- « espace insuffisant pour la charge utile » ou « noyau inconnu » : un redémarrage est nécessaire.
- « en attente du shell de connexion inverse » : veuillez réveiller votre appareil, ouvrir l'application horloge/alarme ou basculer l'interrupteur Bluetooth pour déclencher la porte dérobée.
- Toujours pas de chance : veuillez exécuter la version « dbg » et m'envoyer un e-mail avec les fichiers générés qui ne sont qu'un dump d'une partie du noyau et ne contiennent aucune information personnelle.
Crédits
- scumjr pour la méthode de patch vDSO.
- Tzul pour m'avoir aidé à déboguer le problème sepolicy.
- RenaKunisaki pour l'avoir fait fonctionner avec bionic.
À FAIRE
- Enrichir la base de données du noyau pour la prise en charge x86, etc.
- Le tester sur Android 7 Nougat (aide recherchée !).