L'application d'installation de Fortnite Mobile sur Android était exploitable dans sa première version. Il pourrait être abusé d'installer silencieusement n'importe quelle application sur les téléphones Samsung Galaxy.
Le lancement de Fortnite Mobile sur Android n'a pas été génial, surtout depuis de nombreux appareils pris en charge vraiment j'ai du mal à jouer au jeu avec des fréquences d'images acceptables. Le jeu lancé en tant que Exclusivité Samsung Galaxy pendant seulement 3 jours. Le programme d'installation de Fortnite a été disponible pour la première fois sur Applications Samsung Galaxy avant qu'Epic Games n'autorise les joueurs non Samsung à télécharger et installer le jeu complet à partir du programme d'installation Fortnite obtenu sur le site Web d'Epic. Peu de temps après que le programme d'installation de Fortnite soit disponible, Epic Games a discrètement lancé une mise à jour du programme d'installation. Nous savons maintenant pourquoi: ils ont corrigé un L'homme dans le disque
Flux d'installation des applications sur les smartphones Android
Installations silencieuses à partir de sources propriétaires
Pour installer silencieusement un APK sur Android sans demander l'autorisation de l'utilisateur, vous devez disposer d'une application au niveau du système avec le INSTALL_PACKAGES permission accordée. Des exemples d'applications bénéficiant de cette autorisation incluent le Google Play Store sur la plupart des appareils Android. Les magasins d'applications propriétaires sur les appareils de Samsung, Huawei et d'autres fabricants d'appareils peuvent également bénéficier de l'autorisation INSTALL_PACKAGES. Si vous souhaitez installer une application du Google Play Store, elle gérera le téléchargement et l'installera automatiquement l'application pour vous sans autre intervention après avoir appuyé sur « Installer ». (Le Google Play Store même automatiquement accorde certaines autorisations d'exécution comme celui pour superpositions, alors que les applications installées en dehors du Play Store doivent demander à l'utilisateur d'accorder ces autorisations.)
Si vous souhaitez savoir si une application sur votre appareil dispose de l'autorisation INSTALL_PACKAGES, vous pouvez le savoir via une commande ADB.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Par exemple, le nom du package du Google Play Store est "com.android.vending
". Une autre application disposant de cette autorisation est Shell avec le nom du package com.android.shell
. Pour ceux d'entre vous qui utilisent Substrat sans racine via le plug-in Andromeda sur Android Oreo, le script Andromeda exécuté depuis votre PC maintient le processus shell en cours d'exécution afin que Substratum puisse l'utiliser pour installer des packages (les superpositions de thèmes), puis utiliser le Commandes OverlayManager pour activer les superpositions.
Applications à chargement latéral à partir de sources tierces
Si vous tentez de télécharger et d'installer une application en dehors d'une boutique d'applications propriétaire, vous devez d'abord activer les sources d'installation inconnues. Cela permet au Service de gestionnaire de packages dans le cadre Android (qui dispose de l'autorisation INSTALL_PACKAGES), sachez que vous reconnaissez les risques liés au chargement latéral d'applications à partir de sources tierces. Sur les appareils Oreo antérieurs à Android, il existe une seule bascule dans les paramètres de sécurité pour autoriser l'installation à partir de sources inconnues. Sur Android Oreo et versions ultérieures, une application demandant l’installation d’un APK doit déclarer le REQUEST_INSTALL_PACKAGES autorisation et l'utilisateur doit ajouter cette application à la liste blanche afin qu'elle puisse demander des installations d'application via le service Package Manager. Puisque REQUEST_INSTALL_PACKAGES est une autorisation "appop", cela en fait l'une des autorisations qui peuvent être contrôlées depuis le gestionnaire d'autorisations des paramètres ou via le cmd appops
commande shell.
Une fois l’installation à partir de sources inconnues activée globalement ou spécifiquement pour une application demandeuse, l’utilisateur peut alors charger une application de manière latérale. Cependant, le gestionnaire de packages ne permet pas à l'application d'être installée en mode silencieux. Au lieu de cela, il demandera à l'utilisateur s'il souhaite installer l'application et répertoriera toutes les autorisations sensibles qu'il demande à accorder lors de l'installation. Si l'utilisateur accepte, l'application est installée avec les autorisations de non-exécution demandées. Les OEM peuvent également personnaliser le gestionnaire de packages: par exemple, le gestionnaire de packages dans la version chinoise de L'EMUI 5 de Huawei a une fonction pour analyser l'APK pour décider s'il est sûr et contrôler les autorisations accordé avant installation. J'ai observé cela sur le Honor Note 8 exécutant EMUI 5 importé de Chine, même si je suis sûr que d'autres appareils chinois Huawei et Honor disposent également de cette fonctionnalité dans leurs gestionnaires de packages.
Dans tous les cas, cela résume la différence entre l’installation d’une application à partir d’une source approuvée de première partie et d’une source tierce. Si vous essayez d'installer une application depuis le Play Store ou une boutique d'applications équivalente avec le INSTALL_PACKAGES autorisation, il gérera silencieusement l'installation tout seul, sans autre intervention de l'utilisateur après le démarrage. le téléchargement. Mais si vous téléchargez un APK depuis XDA Labs, APKMirror ou d'autres sources tierces, le programme d'installation du package standard gérera l'installation et invitera l'utilisateur à installer ce package. Alors, où intervient le programme d’installation de Fortnite et pourquoi tout cela est-il pertinent ?
Une faille dans le processus d'installation de Fortnite
Plus tôt dans la journée, Google a révélé une vulnérabilité ils ont découvert avec la première version de Fortnite Installer. La vulnérabilité a été démontrée sur le Samsung Galaxy S8+ (dream2lte) Exynos, mais a également affecté tous les autres appareils Samsung Experience, notamment le Samsung Galaxy Note 9 et le Samsung Galaxy Tab S4. La vulnérabilité permet un application malveillante déjà installée pour profiter de la façon dont le programme d'installation de Fortnite tente d'installer Fortnite pour la première fois sur les appareils Samsung Galaxy. En utilisant une API privée dans Samsung Galaxy Apps, le programme d'installation de Fortnite évite d'avoir à inviter l'utilisateur via le programme d'installation du package standard à installer Fortnite. En effet, Galaxy Apps dispose de l'autorisation dont il a besoin pour gérer l'installation en silence. Il n’y aurait rien de mal à ce processus d’installation silencieuse si l’application installée silencieusement était le vrai Fortnite. Mais en raison de l'endroit où le programme d'installation de Fortnite stockait le fichier APK téléchargé pour le jeu Fortnite, il était facilement exploitable.
Selon le rapport sur Issue Tracker, le programme d'installation de Fortnite téléchargerait l'APK Fortnite Mobile sur /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Ceci est considéré comme un « stockage externe » sur Android car /sdcard est un lien symbolique vers /data/media/CURRENT_USER, et /sdcard était le nom utilisé au début d'Android lorsque les données des applications étaient stockés sur des cartes SD physiques. De nos jours, les données des applications sont généralement stockées dans des répertoires spécifiques à l'application dans /data/data/, et chaque application n'a accès qu'aux fichiers de son propre répertoire /data/data. Ainsi, si le programme d'installation de Fortnite stockait l'APK Fortnite téléchargé dans son propre répertoire /data/data/, il serait impossible pour toute application sans autorisations de lecture (c.-à-d. sans accès root) pour savoir ce qui se passe dans ce répertoire.
Cependant, depuis le programme d'installation de Fortnite enregistré l'APK téléchargé dans un stockage externe, il pourrait être surveillé et écrasé par toute application avec des autorisations de lecture sur le stockage externe. Normalement, les applications écrivent sur /data/media, la « carte SD virtuelle », lorsqu'elles stockent des fichiers auxquels l'utilisateur doit accéder via MTP ou par d'autres applications. Pour qu'une application puisse lire ou écrire dans /data/media, elle doit disposer des éléments READ_EXTERNAL_STORAGE et respectivement les autorisations WRITE_EXTERNAL_STORAGE (les deux sont sous le même groupe d'autorisations et sont donc accordées ensemble). Avant Android 4.4 KitKat, la plupart des applications demandaient ces autorisations lors de l'installation, sinon elles ne le seraient pas. capable de lire ou d'écrire dans les fichiers du répertoire de stockage externe désigné par leur package dans /data/media/.../Android/. Avec l'introduction de FUSE pour émuler les autorisations de répertoire de style FAT-on-sdcard dans Android 4.4 KitKat, les applications n'ont plus besoin d'aucune autorisation pour accéder aux fichiers de leur répertoire désigné dans le stockage externe. L'accès aux fichiers dans n'importe quel autre répertoire nécessiterait toujours les autorisations de stockage externe, ce qu'une application malveillante peut faire pour détourner le processus d'installation de Fortnite.
Comme le montre la vidéo ci-dessous, une application malveillante dotée de l'autorisation READ_EXTERNAL_STORAGE surveille le répertoire de téléchargement du programme d'installation de Fortnite dans le stockage externe. Lorsqu'il détecte que le téléchargement est terminé et que l'empreinte digitale est vérifiée, il remplace le téléchargé le package Fortnite avec son propre package malveillant grâce au WRITE_EXTERNAL_STORAGE autorisation. Cependant, en raison de la façon dont Samsung Galaxy Apps vérifie l'APK Fortnite avant l'installation (...il vérifie juste si le nom du package est "com.epicgames.fortnite"), il est possible d'avoir Galaxy applications installer silencieusement le package malveillant en arrière-plan sans intervention ni notification de l'utilisateur- tant que le nom du package malveillant était "com.epicgames.fortnite". Pire encore, si ce package malveillant ciblait le niveau de SDK 22 ou inférieur (Android 5.1 Lollipop et versions antérieures), il se voit automatiquement accorder toutes les autorisations définies dans son manifeste, car les autorisations d'exécution ne sont obligatoires que pour les applications ciblant le niveau de SDK 23 et supérieur (Android 6.0 Marshmallow et plus tard).
Mais que se passerait-il sur les appareils non Samsung? Eh bien, comme Samsung Galaxy Apps n'est pas installé sur les appareils non Samsung, l'APK malveillant ne sera pas installé silencieusement en arrière-plan. Fortnite Installer est une application tierce et doit donc d'abord demander à l'utilisateur d'activer installation à partir de sources inconnues, puis envoyez une demande à l'installateur du package pour installer le faux FortniteAPK. Il appartiendrait alors à l'utilisateur d'appuyer sur "Installer" lorsqu'on lui demanderait s'il souhaite ou non installer l'application. Ceci est problématique, même si les téléphones non Samsung ne risquent pas d'être installés silencieusement en arrière-plan par une application malveillante. L'utilisateur moyen ne serait pas plus sage si un APK malveillant conçu avec "Fortnite" dans son nom et l'icône de l'application Fortnite lui était présenté pour l'installation.
Il existe néanmoins une distinction claire entre l'exploitation de cette faille sur les smartphones Samsung Galaxy et les smartphones non Samsung. La première est une attaque Man-in-the-Disk qui tire également parti d'une API système cachée pour installer silencieusement n'importe quelle application dans en arrière-plan, avec toutes les autorisations et sans qu'il soit nécessaire de faire croire à l'utilisateur qu'il installe un faux Fortnite APK. Ce dernier est un Attaque Man-in-the-Disk standard qui peut également arriver à d'autres applications qui enregistrent des APK ou d'autres données importantes dans des répertoires de stockage externes, comme le montre le récent Point de contrôle poste. Il se trouve que, grâce à l'API cachée de Galaxy Apps, cette attaque Man-in-the-Disk est plus dangereuse sur les appareils Samsung Galaxy.
Corriger la faille
Il faut reconnaître qu'Epic Games a répondu très rapidement au rapport sur Google Issue Tracker et a déployé une mise à jour vers la version 2.1.0 aussi vite que possible. Le correctif était simple: enregistrez simplement l'APK Fortnite téléchargé dans le répertoire de stockage interne du programme d'installation Fortnite dans /data/data plutôt que dans son répertoire de stockage externe dans /data/media. L'ingénieur d'Epic Games a demandé que la faille soit divulguée après 90 jours, mais Google a refusé et a rendu le problème public 7 jours après le déploiement du correctif. Le PDG d'Epic Games, Tim Sweeney, était pas satisfait du délai d'exécution rapide entre le rapport de sécurité initial et sa divulgation. Il a fait la déclaration suivante à Centre Android.
Epic a vraiment apprécié les efforts de Google pour effectuer un audit de sécurité approfondi de Fortnite immédiatement après notre sur Android et partagez les résultats avec Epic afin que nous puissions rapidement publier une mise à jour pour corriger la faille qu'ils ont trouvée. découvert.
Cependant, il était irresponsable de la part de Google de divulguer publiquement les détails techniques de la faille si rapidement, alors que de nombreuses installations n'avaient pas encore été mises à jour et étaient encore vulnérables.
Un ingénieur en sécurité d'Epic, à ma demande, a demandé à Google de retarder la divulgation publique des 90 jours habituels afin de laisser le temps à la mise à jour d'être plus largement installée. Google a refusé. Vous pouvez tout lire sur https://issuetracker.google.com/issues/112630336
Les efforts d'analyse de sécurité de Google sont appréciés et profitent à la plateforme Android, mais une entreprise aussi puissante que Google devrait s'entraîner davantage un calendrier de divulgation responsable que celui-ci, et ne pas mettre en danger les utilisateurs au cours de ses efforts de contre-RP contre la distribution de Fortnite par Epic en dehors de Jeu de Google.
Je ne peux pas dire combien d'appareils Samsung Galaxy existants disposent encore de l'ancien programme d'installation Fortnite. Peut-être qu'Epic Games devrait demander à ces utilisateurs de mettre à jour leur installation en envoyant un message dans Fortnite Mobile. La nouvelle fonctionnalité astucieuse de messagerie intégrée à l'application de Firebase pourrait faire l'affaire. Cependant, ce n'est probablement pas grave de toute façon car, si un utilisateur avec l'ancien programme d'installation a déjà téléchargé le fichier légitime Fortnite, alors toute attaque MITD ne fonctionnera pas car l'APK malveillant ne peut pas être installé sur Fortnite existant installation. En tout cas, la découverte de cette faille si tôt après la sortie de Fortnite sur Android, alors qu'il y a encore tant de polémiques autour de la faille d'Epic Games. décision d'abandonner Google Play- contribue certainement à l'argument selon lequel la décision d'Epic Games était imprudente. Nous ne saurons jamais si telle était l'intention de Google en publiant ce problème si rapidement.