Comment des développeurs trompent la review de l’App Store pour faire approuver des apps malveillantes
(9to5mac.com)- Certaines apps iOS de streaming illégal étaient conçues pour passer la review comme des apps normales, puis activer des fonctions cachées ensuite, et l’analyse du code a confirmé un blocage basé sur la localisation ainsi qu’un système de mise à jour à distance
- Des apps diffusées via différents comptes développeur partageaient la même base de code, et React Native avec le SDK Microsoft CodePush permettaient de modifier une partie de l’app sans nouvelle review de l’App Store
- Une app en particulier utilisait un dépôt GitHub et une API de localisation basée sur l’IP pour vérifier des données de pays, région, ville, longitude et latitude estimées, et n’exposait pas l’interface cachée dans l’environnement de review d’Apple
- En attendant quelques secondes après le premier lancement avant d’appeler l’API de localisation, elle évitait le processus de review automatisé, et même avec un proxy configuré sur San Jose, Californie, l’écran caché n’apparaissait pas
- Apple pourrait renforcer les tests de comportement selon la localisation et la suppression des apps frauduleuses, mais pour l’instant l’entreprise a seulement confirmé le retrait des apps concernées sans détailler de mesures concrètes pour empêcher l’approbation d’apps similaires
Une structure qui agit comme une autre app après avoir passé la review
- 9to5Mac a présenté plusieurs cas d’apps iOS de streaming illégal ayant obtenu une approbation en trompant la review de l’App Store, puis une analyse du code a permis de confirmer le fonctionnement détaillé de ce contournement
- “Collect Cards” s’est hissée dans le haut du classement des téléchargements gratuits de l’App Store dans certains pays, avant d’être supprimée par Apple après sa mise en lumière
- Comme plusieurs versions de la même app sont ensuite réapparues sur l’App Store, la méthode utilisée pour tromper l’équipe de review est devenue un sujet d’analyse
Base de code commune et mises à jour à distance
- Les apps analysées étaient distribuées via différents comptes développeur, mais partageaient la même base de code
- Elles étaient développées avec React Native, un framework cross-platform basé sur JavaScript
- Le SDK CodePush de Microsoft permet de mettre à jour une partie d’une app sans soumettre un nouveau build à l’App Store
- L’utilisation de React Native et de CodePush ne constitue pas en soi une violation des règles de l’App Store, et de nombreuses apps populaires utilisent aussi cette approche
- Des développeurs malveillants ont exploité cette technique de mise à jour légitime pour contourner la review de l’App Store
Détecter l’environnement de review d’Apple grâce à la localisation
- L’une des apps analysées pointait vers un dépôt GitHub qui semble fournir des fichiers pour plusieurs apps de streaming illégal
- L’app utilisait une API spécifique pour vérifier la localisation de l’appareil à partir de son adresse IP
- L’API renvoie des données comme le pays, la région, la ville, ainsi que la longitude et la latitude estimées
- L’app attendait quelques secondes après son ouverture initiale avant d’appeler l’API de localisation
- Ce délai empêchait le processus de review automatisé de révéler un comportement anormal dans le code de l’app
- 9to5Mac a utilisé un proxy pour simuler une localisation à San Jose, Californie, afin d’observer le comportement de l’app
- À cet emplacement, l’app n’affichait jamais son interface cachée
Afficher la véritable interface après approbation
- Une fois qu’Apple avait approuvé l’app en ne voyant que ses fonctions de base, le développeur mettait à jour le contenu souhaité via CodePush
- L’app ne révélait sa véritable interface que dans des localisations jugées “sûres”
- Avec cette structure, le comportement de l’app peut différer entre l’environnement de review d’Apple et celui des utilisateurs ordinaires
Les défis de réponse laissés à Apple
- Apple pourrait améliorer le processus de review avec des tests supplémentaires pour vérifier le comportement d’une app selon différents emplacements
- Une réponse plus active pour repérer et supprimer les apps frauduleuses de l’App Store serait également nécessaire
- En 2017, Uber avait déjà été soupçonné d’avoir utilisé un “geofence” autour du siège d’Apple à Cupertino
- Selon ces accusations, lorsque l’app était lancée à cet endroit, le code utilisé pour collecter des empreintes utilisateurs et les suivre sur le web était automatiquement désactivé
- D’après un document de 2021, l’équipe App Store Review compte plus de 500 experts humains qui examinent chaque semaine plus de 100,000 apps
- Malgré cela, la plupart des apps passent d’abord par un processus de review automatisé vérifiant les violations potentielles des règles de l’App Store avant l’examen manuel
- Un porte-parole d’Apple a déclaré qu’après la publication de ces révélations, les apps concernées avaient été retirées de l’App Store, sans toutefois fournir de détails sur les mesures prises par l’entreprise pour empêcher l’approbation d’apps similaires
1 commentaires
Avis Hacker News
Même si Apple empêche le contournement des restrictions régionales, il est très facile de masquer un comportement
Pas besoin de code dynamique ni de code interprété, et il existe suffisamment de variantes de ce type pour que cela se réduise au final au problème de l’arrêt, donc probablement indécidable
Il faut pouvoir réagir en dehors des mesures techniques. Par exemple, faire tester les apps en crowdsourcing par des personnes réellement réparties géographiquement afin de détecter les comportements malveillants
Plus généralement, une fonction de vérification des mises à jour — c’est-à-dire vérifier s’il existe une nouvelle version — peut aussi servir à vérifier en même temps : « cette version est-elle encore en cours de revue par l’App Store ? »
La possibilité d’être exclu de l’écosystème Apple App Store ou de subir des représailles juridiques est l’un des moyens de dissuader des comportements indésirables impossibles à bloquer techniquement
Au bout du compte, il faudra davantage s’appuyer sur la pression de l’écosystème et des pouvoirs publics pour que les conditions d’utilisation soient raisonnables et équitables. Car les hacks permettant de contourner ces conditions deviendront presque impossibles. Je trouve ces hacks ingénieux, mais je ne pense pas qu’ils dureront longtemps
Si vous vous demandez ce que dit Apple sur les mises à jour dynamiques comme CodePush, c’est ici : https://github.com/microsoft/react-native-code-push#store-gu...
« Code exécutable
Sauf dans les cas indiqués dans le paragraphe suivant, les applications ne peuvent pas télécharger ni installer de code exécutable. Du code interprété peut être téléchargé dans une application, mais ce code ne doit pas (a) modifier l’objectif principal de l’application en fournissant des fonctionnalités qui ne correspondent pas à l’objectif prévu et annoncé de l’application soumise à l’App Store, (b) créer une boutique ou un magasin pour d’autres codes ou applications, ni (c) contourner la signature, le sandbox ou d’autres fonctionnalités de sécurité du système d’exploitation. »
On a l’impression qu’il existe un accord entre les studios de jeux et Google/Apple : contourner la revue en échange du maintien des milliards de dollars de revenus issus des loot boxes
Un ensemble de fonctionnalités visible, c’est la manière dont beaucoup d’apps facturent des abonnements en dehors du système de paiement dans l’enceinte d’Apple. C’est parce que le vrai travail de l’app ne se fait pas seulement sur l’appareil, mais aussi dans le cloud. Il y a des avantages à séparer l’app entre une partie locale de base et des traitements supplémentaires dans le cloud, mais à mesure que les appareils deviennent plus puissants, il est de plus en plus tentant de voir ce qui peut être fait localement
Si la structure de haut niveau de l’app est suffisamment claire, les détails qui la remplissent peuvent être ajoutés plus tard
J’ai depuis longtemps un faible pour des choses comme le SDUI, qui permettent de générer des interfaces plus dynamiques selon les préférences ou les usages des utilisateurs, entre autres
L’approche consistant à créer des logiciels pour des processus métier figés devient de plus en plus dépassée. Qu’il s’agisse d’exigences qui changent à chaque phase de confinement pendant une pandémie ou d’une véritable personnalisation de l’expérience utilisateur, les logiciels pensés de manière rigide sont remplacés par des logiciels qui exigent de la flexibilité
Quand il fallait faire passer un comportement qu’Apple n’aimait pas, j’ai utilisé une astuce basée sur le temps
Vingt jours après la soumission de l’app, l’action d’un bouton changeait pour que la boîte de dialogue « ouvrir un fichier » mène directement au répertoire racine de l’utilisateur
J’avais mis un minuteur de deux semaines, après quoi l’app commençait à fonctionner réellement, appels API compris
La revue des apps par Apple est une vaste blague
Il doit probablement aussi être possible de trouver un moyen d’identifier le système des reviewers comme une empreinte digitale, puis de leur masquer directement les fonctionnalités à eux seuls
À côté de ça, l’écrasante majorité des apps frauduleuses semblent prendre l’argent des gens via des abonnements hebdomadaires récurrents
Un pass d’une semaine non récurrent peut être utile, par exemple une app VPN pour une semaine pendant un voyage. Mais les paiements récurrents hebdomadaires devraient nécessiter une approbation manuelle. Toutes les apps ne devraient pas pouvoir proposer une facturation récurrente à la semaine
Qualifier une app de piratage de malveillante me paraît franchement exagéré. Est-ce que quelque chose m’échappe, ou bien cet article a-t-il été écrit par un ayant droit ?
Cela dit, les apps les plus rentables sont déjà des apps frauduleuses et, d’aussi loin que je me souvienne, ça a toujours été le cas ; ce n’est donc pas vraiment nouveau
« D’après des documents rendus publics en 2021, l’équipe App Store Review compte plus de 500 experts humains qui examinent plus de 100 000 apps par semaine. »
Si l’on ignore la formulation ambiguë de cette phrase et que l’on suppose que les reviewers consacrent 100 % de leur temps de travail aux revues, avec une semaine de travail standard, cela fait environ 12 minutes par app
Malheureusement, pauvre Apple n’a sans doute pas les moyens d’embaucher suffisamment de reviewers pour garantir à chaque app un processus de revue digne de ce nom et rémunérer correctement des travailleurs dans des conditions de travail décentes. Ils sont probablement sous pression avec un quota d’apps à examiner chaque semaine
Alors, pourquoi Apple mérite-t-il déjà de prendre 30 % ?
Il existe des canaux/groupes Telegram où des milliers de personnes se rassemblent pour utiliser les apps les plus récentes une fois qu’elles ont survécu à la validation de l’App Store, jusqu’à ce qu’Apple intervienne.
Il existe aussi un marché pour les certificats de signature et les places sur des machines de développeurs Apple, ce qui permet aux personnes un peu plus techniques de signer elles-mêmes des IPA et de les installer.
Les États-Unis ont cruellement besoin d’une législation du type DMA. Une entreprise ne devrait pas pouvoir retenir plus de 60 % des utilisateurs américains sur la question de l’installation des apps qu’ils veulent utiliser.
De même, Apple et Google ne devraient pas pouvoir prélever 15 à 30 % de tous les revenus générés sur l’ensemble du marché des apps mobiles.
D’abord, ces 60 % ont choisi iOS. Ils ne sont pas « pris en otage » : ils peuvent partir. Et ce n’est pas non plus un comportement nouveau, il existe depuis le lancement de l’iPhone. Les consommateurs votent pour cela [1].
Ensuite, Google ne contrôle pas ce que les utilisateurs installent, donc par définition il ne prend pas une part de « tous les revenus ». La majeure partie de la valeur issue des apps mobiles est aussi générée ailleurs [2], donc même le chiffre concernant Apple n’est pas exact.
En tant que développeur, il est naturel de vouloir accéder librement à l’appareil de l’utilisateur pour y exécuter le code de son choix. Malheureusement, certains développeurs veulent cet accès pour des raisons nuisibles aux consommateurs. C’est pourquoi les développeurs cherchent à exploiter le système, et que des apps honnêtes se font rejeter.
Mais il faut comprendre que les utilisateurs veulent cette approche sélective et qu’ils votent pour, pas contre.
[1] On peut débattre des messageries, mais c’est un problème de messagerie, pas d’app.
[2] Presque toutes les apps que j’installe sont gratuites. Les entreprises qui les créent tirent leurs revenus d’autres parties du système. Nous aussi, nous avons une « app gratuite » liée à notre produit, et les gens paient pour ce produit.
D’un côté, chacun joue le rôle de gardien sur sa boutique, et tous deux affirment protéger les utilisateurs finaux.
De l’autre, quand l’app en question est très rentable ou liée à leurs nombreuses autres gammes de produits, ils se réservent la flexibilité d’appliquer les règles de manière sélective.
Qui surveille les surveillants ?
Quel est le plan à ce sujet ?
« Apps de streaming illégal » ?
Je pensais que c’était un article sur la façon de faire accepter un abonnement à 50 dollars par mois dans une app lampe torche.
Beaucoup d’apps ne sont que des WebView qui affichent une page web distante.
Chaque fois que le serveur met à jour la page, l’app est aussi mise à jour, sans nécessiter de validation.