15 février 2021

Méfiez-vous de l’installation de quoi que ce soit avec SELinux réglé sur permissif

Par admin2020

Dans le monde du modding Android, les gens ont tendance à considérer l’accès root comme la pierre angulaire de tout. Il permet aux utilisateurs de prendre le contrôle complet de leurs appareils et d’ajouter des fonctionnalités qui ne sont pas toujours disponibles dans la configuration de stock. Mais comme on dit – «avec une grande puissance vient une grande responsabilité» – il n’est pas sage de contourner le modèle de sécurité d’Android à moins de savoir dans quoi vous vous engagez. Pour les passionnés d’Android sur nos forums, vous êtes probablement conscient du potentiel que des portes dérobées existent sur votre appareil, et vous êtes plus susceptible d’exécuter un mod compatible root de confiance en plus de la dernière version d’Android avec les derniers correctifs de sécurité. Cela dit, vous connaissez peut-être quelques personnes qui ne se soucient pas vraiment des modifications de racine qu’elles installent, tant qu’elles semblent travailler pour elles. C’est pourquoi vous pouvez toujours trouver un camion de mods qui ne fonctionnent que lorsque SELinux est réglé sur permissif, ce qui, à son tour, laisse leurs utilisateurs extrêmement vulnérables aux menaces de sécurité.

Qu’est-ce que SELinux

SELinux, ou Linux à sécurité renforcée, est un module de sécurité du noyau Linux spécialement conçu pour l’accès et la gestion des politiques de sécurité. Initialement introduit dans Android 4.3 Jelly Bean et réglé sur son mode d’application par défaut depuis Android 4.4 KitKat, SELinux aide à appliquer les droits de contrôle d’accès et tente d’empêcher les attaques par élévation de privilèges. En un mot, SELinux agit comme un obstacle au contrôle non autorisé de votre appareil, comme une application ou une vulnérabilité visant à obtenir un accès root de manière malveillante. Régler SELinux sur «Enforcing» par défaut est l’un des principaux moyens de protéger les utilisateurs normaux contre de telles attaques.

Pourquoi Permissive SELinux n’est pas recommandé

Pour réitérer, la manière typique d’obtenir un accès root sur un appareil Android n’a pas nécessairement besoin de changer le statut de SELinux. Le passage du mode SELinux de «Enforcing» à «Permissive» désactive intentionnellement l’une des principales fonctionnalités de sécurité du périphérique, c’est pourquoi l’utilisateur doit explicitement l’autoriser en installant un noyau personnalisé spécialisé ou en modifiant les paramètres du démarrage existant image. Un mod mal codé et dépourvu de politique SELinux appropriée oblige généralement les utilisateurs finaux à passer à SELinux permissif et élargit essentiellement la surface d’attaque. C’est exactement ce que le développeur vvb2060 démontré quand ils a publié une méthode d’escalade de privilèges de preuve de concept où la seule exigence pour prendre le contrôle est SELinux permissif.

Entrez Magica

Pour qu’un utilisateur obtienne un accès root complet sur son propre appareil exécutant Android 10 (ou supérieur) avec SELinux réglé sur permissif est incroyablement facile à faire: tout ce que vous avez à faire est d’appuyer sur installer, et «Magica» obtiendra automatiquement un accès root dans un service et installez Magisk sur l’image de démarrage. C’est quelque chose de beaucoup plus large que de simplement peaufiner votre appareil. Selon XDA Senior Recognized Developer et Magisk mainteneur topjohnwu, toute application arbitraire, y compris les logiciels malveillants, peut rooter définitivement votre appareil sans votre consentement et votre permission en utilisant le PoC.

Si vous vous demandez sur le plan technique ce que Magica exploite, topjohnwu a expliqué ce qui suit dans un post Reddit:

«Lorsque SELinux est permissif pendant le démarrage, zygote le saura et désactivera les filtres syscall seccomp. Cela ne restreint fondamentalement pas les appels système autorisés dans les processus tiers.

Sur Android 10+, il existe une nouvelle fonctionnalité «non documentée» appelée «App Zygote» où les applications tierces sont autorisées à créer leur propre Zygote pour les «Services isolés» (également presque non documentés). «App Zygote» et «Services isolés» sont des fonctionnalités spéciales conçues pour Chrome / Webview *. Les processus App Zygote s’exécutent avec des autorisations spéciales, et avec seccomp désactivé, il peut appeler setuid 0 et augmenter son privilège et obtenir un accès root.

C’est toujours quelque peu restrictif par rapport à ce que fournissent les solutions racine normales (par exemple, Magisk), mais des tonnes de mesures de sécurité dans Android seront complètement vaincues lorsque UID = 0. Par exemple, il suffit de l’utiliser pour patcher les images de démarrage, ce qui signifie qu’il peut être utilisé pour injecter des logiciels malveillants tels que Magisk modifié pour l’aider à obtenir de «réelles» autorisations root.

Mise à jour: que peut faire UID = 0 lui-même? Dans le cadre d’Android, presque tous les services ont un feu vert aveugle lorsque l’UID du processus demandeur est 0. Cela signifie que ce processus racine est capable de manipuler des tonnes de choses à l’aide d’API spécifiques à Android (par exemple ActivityManager) »

* Selon le développeur aviraxp, ces deux fonctionnalités sont plus généralement conçues «pour partager des ressources et de la mémoire entre plusieurs processus isolés».

Le manque général de conscience

Même s’il est très sérieux d’ignorer les directives de SELinux, certains OEM d’Android lui donnent délibérément le feu vert. ASUS, par exemple, a récemment déployé une mise à jour logicielle pour résoudre le problème de déclassement du niveau Widevine DRM sur le ZenFone 7 et le ROG Phone 3. Les développeurs ont découvert que les firmwares récents définir délibérément SELinux comme permissif pendant une brève période de temps sur chaque démarrage. En conséquence, il est théoriquement possible d’obtenir un accès root sur ces appareils sans même déverrouiller le chargeur de démarrage, bien que cela n’ait pas encore été démontré.

Conclusion

Compte tenu du préjudice irréparable qui peut être infligé aux utilisateurs ciblés par des logiciels malveillants dans un environnement SELinux permissif, nous suggérons fortement à tout le monde de continuer à l’appliquer à moins que cela ne soit absolument nécessaire. Bien que nous ayons simplement la chance d’avoir un exploit de preuve de concept, nous n’avons aucune idée du nombre d’auteurs de logiciels malveillants qui connaissent déjà cette voie d’attaque. Après tout, une victime continuera à rester inconsciente de l’état compromis de son appareil si elle n’a pas été témoin de l’utilisation active de l’exploit, ce qui n’est pas difficile à réaliser pour une application malveillante qui dispose d’un accès root persistant.




Source by