Comment la détection de racine d'un jeu animé a conduit à la découverte d'une vulnérabilité de sécurité dans les téléphones de LG, OnePlus, Huawei, Xiaomi et autres

Il a été constaté que les smartphones de plusieurs fabricants comme LG, OnePlus, Huawei et Xiaomi divulguaient les informations de processus des applications. Voici ce que cela signifie.

Le système d'exploitation mobile Android est utilisé sur plus de 2 milliards d'appareils chaque mois par des consommateurs réguliers et des passionnés de technologie. Bien que le nombre de personnes qui déverrouillent le chargeur de démarrage et rootent leur smartphone soit relativement faible lorsque par rapport à la population globale des utilisateurs d'Android, nous sommes encore nombreux sur des forums comme XDA et Reddit. Magisk est un outil indispensable pour la communauté des bricoleurs. Il fournit un accès root sans système et dispose d'outils tels que MagiskHide pour permettre aux utilisateurs rootés de continuer à utiliser les applications, les jeux et les services dont ils bénéficient sans restrictions. Cependant, un jeu d'animation populaire a intelligemment abusé d'une vulnérabilité de sécurité du système pour contourner la détection anti-root de Magisk. Voici comment cela fonctionne et quels appareils sont concernés par cette faille de sécurité.

  • Un jeu a utilisé un bug pour détecter si un appareil a été rooté. Si l'appareil est rooté, le jeu empêche l'utilisateur de jouer.
  • Le bug permet à une application de lire l’état des autres applications en mémoire, sans avoir besoin d’autorisations spéciales. Le bug ne permet pas aux applications de voler des données à d'autres applications. Le bug n’est pas grave et est relativement inoffensif.
  • Google est déjà au courant du problème et a mis à jour ses outils de test pour s'assurer que tous les appareils sont protégés.

Arrière-plan

Un jeu d'anime populaire appelé Fate/Grand Order empêche les utilisateurs root de tenter de jouer au jeu. Développeur reconnu XDA topjohnwu, le développeur principal de Magisk, auparavant découvert un moyen pour contourner la détection racine de Fate/Grand Order, mais sa solution ne fonctionnait pas sur son OnePlus 6 malgré tous ses efforts. Déterminé à ne pas abandonner, le développeur a analysé Fate/Grand Order pour comprendre comment il détectait toujours la racine sur son appareil OnePlus. Comme il l'explique dans son Post moyen, cela l'a conduit à la découverte d'une faille de sécurité dont Fate/Grand Order abusait apparemment pour continuer à détecter l'accès root sur les appareils OnePlus.

Fate/Grand Ordre (anglais)Développeur: Aniplex Inc.

Prix ​​: Gratuit.

4.

Télécharger

Procfs et Android

Sur les systèmes d'exploitation basés sur Unix, il existe un système de fichiers spécial appelé « procfs » contenant des informations sur processus (pensez aux applications), tels que leur utilisation de la mémoire (pensez à la RAM), leur état (si le processus est en cours d'exécution, dormir, etc). Sur la plupart des systèmes d'exploitation basés sur Unix, l'utilisateur et les applications ont un accès facile aux procfs pour voir quels types de fichiers sont utilisés. les applications et les services s'exécutent sur leur système (pensez-y comme le Gestionnaire des tâches de Windows.) Cependant, Google a commencé à verrouiller l'accès aux procfs à partir d'Android 7.0 Nougat. Avant Android Nougat, des applications comme SystemPanel étaient capables de collecter des données sur les applications en cours d'exécution sans avoir besoin d'autorisations spéciales. Après Android Nougat, les applications doivent utiliser des API telles que Statistiques d'utilisation ou Service d'accessibilité, qui sont tous deux limités par des autorisations qui doivent être accordées par l'utilisateur.

Panneau système 2Développeur: NextApp, Inc.

Prix ​​: Gratuit.

4.2.

Télécharger

Google empêche les applications de lire l'état d'autres applications via procfs en montant /proc avec l'indicateur "hidepid=2". En montant procfs avec hidepid=2, les applications ne peuvent voir que l'état de leur propre processus. Ainsi, une application devra utiliser les API acceptées telles que UsageStats ou AccessibilityService pour obtenir des informations sur les applications et les services exécutés sur l'appareil.

Vulnérabilité

Que se passe-t-il si procfs n'est pas monté avec hidepid=2? Eh bien, les applications pourraient alors librement lire l'état des autres applications (et points de montage) exécutées sur le système sans avoir besoin d'autorisations supplémentaires*. Google monte les procfs avec hidepid=2 sur ses propres appareils, mais n'applique pas cette exigence sur les appareils d'autres fabricants. Plusieurs appareils de LG, OnePlus, Huawei/Honor, Xiaomi et autres n'ont pas monté de procfs avec hidepid=2, ce dont profitent des applications comme Fate/Grand Order pour détecter si Magisk est présent sur le dispositif.

*Un changement de sécurité dans Android 9 Pie empêche les applications de lire des informations en dehors de leur propre « contexte SELinux », car chaque application est désormais isolée individuellement. SELinux est un module du noyau qui agit comme une sorte de gardien, empêchant les applications et les services d'accéder aux fichiers auxquels ils ne sont pas censés accéder. Un contexte SELinux est comme une étiquette pour un fichier qui contient des informations telles que l'utilisateur et le rôle. Les applications avec le même contexte SELinux peuvent lire des informations sur d'autres applications dans le même contexte si l'indicateur hidepid=2 n'est pas activé pour procfs. Sur les appareils exécutant Android 9 Pie, seules les applications conçues pour cibler Android Pie se verront appliquer les nouvelles modifications SELinux d'Android Pie. Les applications qui ciblent Android 8.1 Oreo ou une version antérieure utiliseront les anciennes règles SELinux, leur permettant d'accéder des informations sur les processus dans le même contexte SELinux tant que procfs est monté sans hidepid=2. La plupart des applications exécutées sur votre appareil devraient au moins cibler Android 8.0 Oreo grâce à nouvelles exigences de Google Play, mais beaucoup n'auront pas encore été mis à jour pour cibler Android Pie.

Les captures d'écran suivantes montrent les conséquences du non-montage de procfs avec hidepid=2.

À quel point est-ce grave?

Si nous devions comparer cette vulnérabilité du système à des exploits comme Fusée Gelée, Bleuborne, KRACK, et Fusion/Spectre, alors ce bug n'est rien en comparaison. Les applications ne peuvent pas l'utiliser pour obtenir un accès root ou voler vos mots de passe. Vos comptes bancaires sont en sécurité, tout comme vos cartes de crédit. Le pire qu'une application puisse faire est de savoir si une autre application est en cours d'exécution sur votre appareil, ce qui a des utilisations très limitées. N'oubliez pas qu'il s'agit d'un comportement standard sur de nombreuses distributions GNU/Linux et que Google n'a commencé que récemment à bloquer l'accès aux procfs avec Android Nougat. Ce bug permet aux applications de contourner le besoin de certaines autorisations pour surveiller d'autres processus, mais elles ne peuvent toujours pas briser le bac à sable d'Android et voler les données d'autres applications. Quoi qu’il en soit, il s’agit d’un comportement involontaire qui brise une fonctionnalité de confidentialité d’Android, il doit donc être corrigé.

Mon appareil est-il concerné?

Voici une liste de périphériques qui, selon nous, ne montent pas de procfs avec hidepid=2 :

OEM

Appareil

Version Android

fuites de procfs

Asus

ZenFone 5Z

Android 8.0 Oréo

Oui

Mûre

CLÉ2

Android 8.0 Oréo

Non

Essentiel

PH-1

Tarte Android 9

Non

Google

Pixel2

Tarte Android 9

Non

Google

Pixel 3

Tarte Android 9

Non

Google

Pixel 3 XL

Tarte Android 9

Non

Honneur

Magie 2

Tarte Android 9

Oui

HTC

U12+

Android 8.0 Oréo

Oui

Huawei

Mate 20 X

Tarte Android 9

Oui

LG

G7 ThinQ

Android 8.0 Oréo

Oui

LG

V40 ThinQ

Android 8.1 Oréo

Oui

Motorola

Moto G4

Android 8.1 Oréo

Non

Nokia

7.1

Android 8.1 Oréo

Non

OnePlus

6

Android 8.1 Oreo/Android 9 Pie

Oui

OnePlus

6T

Tarte Android 9

Oui

Razer

Téléphone 2

Android 8.1 Oréo

Oui

Samsung

Galaxie Note 8

Android 8.0 Oréo

Non

Samsung

Galaxy Note9

Android 8.1 Oreo/Android 9 Pie

Non

Samsung

Galaxie S7

Android 8.0 Oréo

Non

Samsung

Galaxie S8

Android 8.0 Oréo

Non

Samsung

Galaxie S9

Tarte Android 9

Non

Samsung

Galaxy S9+ (Exynos)

Android 8.0 Oréo

Oui

Sony

Xpéria XZ1

Tarte Android 9

Non

Xiaomi

Mi Mix 2S

Tarte Android 9

Oui

Xiaomi

POCO F1

Android 8.1 Oréo

Oui

Comment vérifier si votre appareil est concerné

Il est assez facile de vérifier si votre appareil divulgue des informations de processus vers d'autres applications (en d'autres termes, procfs n'est pas monté avec hidepid=2). Bien que vous puissiez utiliser les commandes shell comme nous l'avons fait, vous pouvez également vérifier à l'aide d'une application développée par topjohnwu. Son application vous permet également de remonter procfs avec hidepid=2, si votre téléphone est rooté.

Télécharger ProcGate

Y aura-t-il un correctif?

Oui, cela sera corrigé. Google exigera désormais que tous les appareils montent procfs avec hidepid=2. Ils appliqueront cela en mise à jour la Compatibility Test Suite (CTS), un ensemble de tests que tous les appareils doivent réussir pour pouvoir utiliser les applications et services Google Play. Tous les OEM (qui souhaitent vendre des appareils avec le Google Play Store préinstallé) doivent éventuellement publier une mise à jour pour remonter les procfs avec hidepid=2 dans un avenir proche. Étant donné que les appareils OnePlus ont été les premiers à être découverts avec ce problème, OnePlus en a déjà été informé et travaille sur un correctif. Nous mettrons à jour cet article si d'autres OEM commentent ce bug, mais il n'est pas nécessaire de se demander si l'OEM de votre appareil publiera une mise à jour. S’ils souhaitent que leur mise à jour réussisse le CTS, ils doivent alors corriger ce bug.