PSA: méfiez-vous de l'installation de quoi que ce soit avec SELinux défini sur permissif

click fraud protection

Une fonctionnalité Android non documentée permet à toute application arbitraire d'obtenir un accès root sur un environnement SELinux permissif. Lisez la suite pour en savoir plus !

Dans le monde du modding Android, les gens ont tendance à considérer l’accès root comme la pierre angulaire de toute chose. Il permet aux utilisateurs de prendre le contrôle total de leurs appareils et d'ajouter des fonctionnalités qui ne sont pas toujours disponibles dans la configuration d'origine. Mais comme on dit – « un grand pouvoir implique de grandes responsabilités » – il n’est pas judicieux de contourner le modèle de sécurité d’Android à moins de savoir dans quoi vous vous engagez. Pour les passionnés d'Android chevronnés sur nos forums, vous êtes probablement conscients de la possibilité que des portes dérobées existent sur votre appareil, et vous êtes plus susceptible d'exécuter un mod de confiance compatible root en plus de la dernière version d'Android avec la dernière sécurité des correctifs. 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 fonctionner pour elles. C'est pourquoi vous pouvez toujours trouver un grand nombre 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é amélioré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 défini sur son mode Enforcing par défaut depuis Android 4.4 KitKat, SELinux aide à faire respecter les droits de contrôle d'accès et tente d'empêcher l'élévation des privilèges attaques. 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. Définir SELinux sur « Enforcing » par défaut est l'un des principaux moyens par lesquels les utilisateurs normaux sont protégés 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 ne nécessite pas nécessairement de modifier l'état de SELinux. Le passage du mode SELinux de « Enforcing » à « Permissive » désactive intentionnellement l'une des fonctionnalités de sécurité clés de l'appareil, c'est pourquoi l'utilisateur doit explicitement autoriser que cela se produise en installant un noyau personnalisé spécialisé ou en modifiant les paramètres de l'image de démarrage existante. Un mod mal codé dépourvu d'une 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'élévation des privilèges de preuve de concept où la seule exigence pour prendre le contrôle est SELinux permissif.

Entrez dans Magica

Pour un utilisateur, obtenir un accès root complet sur son propre appareil exécutant Android 10 (ou supérieur) avec SELinux défini sur permissif est incroyablement facile à réaliser. faire: Tout ce que vous avez à faire est d'appuyer sur Installer, et "Magica" obtiendra automatiquement un accès root à un service et installera Magisk au démarrage image. Il s’agit d’une chose bien plus vaste que la simple modification de votre appareil. Selon XDA Senior Recognized Developer et responsable de Magisk topjohnwu, toute application arbitraire, y compris les logiciels malveillants, peut rooter définitivement votre appareil sans votre consentement et votre autorisation en utilisant le PoC.

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

"Lorsque SELinux est permissif lors du démarrage, zygote le saura et désactivera les filtres d'appel système 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 à générer 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 élever ses privilèges et obtenir un accès root.

Cela reste quelque peu restrictif par rapport à ce que proposent les solutions root normales (par exemple Magisk), mais de nombreuses mesures de sécurité dans Android seront complètement vaincues lorsque l'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 « vraies » 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 ».

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 à chacun de continuer à l'appliquer, sauf en cas d'absolue nécessité. Même si nous avons la chance de disposer d’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 à ignorer l’état compromis de son appareil si elle ne le faisait pas. soyez témoin que l'exploit est activement utilisé, ce qui n'est pas difficile à réaliser pour une application malveillante dotée d'une racine persistante accéder.