SuperSU BETA: Root Android Lollipop sur Stock Kernel

Jusqu'à présent, si vous vouliez utiliser root sous Android 5.0, vous deviez créer un noyau modifié sur votre appareil pour contourner certaines restrictions de SELinux. Développeur reconnu principal, Chainfire a récemment publié le package CF-Auto-Root, précédemment nécessaire, qui apportait les modifications nécessaires au ramdisk du noyau pour supprimer la restriction SELinux du script install-recovery.sh sur AOSP. Ce matin, cependant, Chainfire a fait sourire plusieurs personnes, alors qu'il annonçait sur Twitter que cela ne serait plus nécessaire.

Jusqu'à présent, Chainfire avait prévu de lancer un outil de correction automatique basé sur ZIP, afin de corriger automatiquement les images du noyau à partir de la récupération TWRP, jusqu'à ce qu'il trouve une méthode appropriée pour en éliminer le besoin.

Cette révélation signifie que les utilisateurs d'Android 5.0 n'ont plus besoin d'exécuter un noyau modifié pour obtenir un accès root via SuperSU (ou d'autres solutions root). Bien que le problème des appareils Nexus dotés de chargeurs de démarrage déverrouillables ne soit pas énorme, le besoin de modifications du disque mémoire était préoccupant pour de nombreux utilisateurs d'appareils verrouillés par le chargeur de démarrage pour lesquels aucun déverrouillage n'est disponible (oui, ils existent malheureusement). La réponse à leurs prières est maintenant ici, et nous pouvons présenter une explication exclusive des changements nécessaires. Au moins pour l'instant (jusqu'à ce que / jusqu'à ce que Google corrige ce problème), il est possible d'obtenir un accès root, puis d'installer et d'utiliser SuperSU sur un périphérique Android 5.0 d'origine, sans modification du disque mémoire virtuel du noyau. La raison en est la nécessité pour SuperSU d’exécuter un service en tant que root, afin de permettre un accès root sans contrainte sur les périphériques protégés par SELinux.

Auparavant, SuperSU utilisait le service AOSP flash_recovery préinstallé (utilisé dans AOSP pour mettre à jour la récupération après une installation OTA) pour démarrer le démon SuperSU (qui fournit en réalité les privilèges root aux applications qui le demandent). Avec la sortie de Lollipop, ce service a été ajouté à un contexte SELinux restreint, ce qui signifie qu'il ne dispose plus d'un accès sans faille au système. Les modifications précédentes du noyau visaient à supprimer les restrictions SELinux de ce script.

La dernière version bêta de ChainSFire de SuperSU résout ce problème en utilisant le service de base 'Zygote' (responsable du lancement de tous les services Java, et donc de toutes les applications installées sur un appareil). Étant donné que Zygote est l’un des seuls services disponibles sur Android L, qui est lancé en tant que racine dans le contexte SELinux «init» sans restriction, il est donc une cible de choix pour une utilisation dans le fonctionnement de SuperSU. Après l’amorçage, le contexte «init» SELinux du service Zygote est transféré vers son contexte «Zygote» final (restreint). Chainfire a réussi à modifier les fichiers Zygote, afin de pouvoir exécuter le code en tant qu'utilisateur root, dans le contexte non restreint «init», ramenant ainsi SuperSU sur Android L, sans modification du noyau.

Ce n'est pas la première fois que Chainfire se tourne vers Zygote pour résoudre ces problèmes. La version 2.23 bêta antérieure utilisait Zygote comme moyen de contourner éventuellement d’autres problèmes liés à SELinux (qui provoquaient l’interruption des applications root sur Android L). Cela a permis à certaines applications (mais pas à toutes) non fonctionnelles de fonctionner - les autres nécessitant des mises à jour de la part de leurs développeurs. Malheureusement, lorsque le code AOSP 5.0 a été consulté, il est apparu que Google avait déjà rompu cette méthode de prise en charge du service Zygote. Étant donné que toutes ses tentatives précédentes de reprendre Zygote avaient échoué, il s’agit là d’un progrès prometteur.

Chainfire a tenu à souligner que SuperSU est capable depuis longtemps de modifier les politiques SELinux sur un système en fonctionnement (et met en garde sur la facilité avec laquelle un OEM peut le désactiver et empêcher réellement un accès root simple et significatif), et comment ces modifications sont apportées. Zygote doit être effectué avec soin, étant donné que le service est exécuté dans différents contextes, pour différentes tâches, ce qui laisse entrevoir la possibilité d’un certain nombre d’échecs subtils (méchants). Cette nouvelle version 2.27 de la version bêta de SuperSU est conçue pour les passionnés et autres experts en technologie, avec lesquels il est possible de jouer. Je croise les doigts - il n'y a pas de bugs inattendus, et c'est un moyen viable d'aller de l'avant.

Prenez note - même si cette version bêta fonctionne et que Zygote est l’avantage privilégié pour obtenir un accès root, le processus n’est plus qu’une modification d’une ligne à la ligne précédente, ce qui ferait des disques ramdisks du noyau corrigés l’avenir de la racine. accès sur Android (éliminant ainsi la racine pour les appareils verrouillés par le chargeur de démarrage). En effet, à l’avance, le nouveau processus risque de ne pas fonctionner avec une version AOSP complètement à jour, en raison de modifications assez importantes apportées à SELinux au cours des derniers mois, qui n'étaient pas incluses dans les dispositifs de vente au détail, mais sera sans doute là dans les prochaines versions. Tôt ou tard, cependant, il semble probable que les disques ramdisks du noyau modifiés seront nécessaires pour root, mais cette nouvelle version bêta pourrait offrir un court sursis d'exécution avant que nous devions aller dans cette direction.

Consultez les notes de publication pour plus d’informations sur les risques inhérents à la mise à l’essai, ainsi que pour des liens. Les développeurs doivent également savoir que Chainfire travaille actuellement avec le guide “How-To SU” (entièrement mis à jour pour Android 5.0), qui devrait être disponible dans les prochains jours.

[Un grand merci à Chainfire pour son travail ici et son aide dans la préparation de cet article.]