2 points par GN⁺ 2024-08-05 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2024-08-05
Avis Hacker News
  • Même si Apple empêche le contournement des restrictions régionales, il est très facile de masquer un comportement

    1. Envoyer le numéro de build de l’app au serveur via un appel API
    2. Contrôler, dans la réponse de l’API, l’activation ou non de la fonctionnalité cachée
    3. N’activer la fonctionnalité cachée qu’une fois que chaque build a passé la revue
    4. Le bénéfice ?
      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
    • Exact. Au fond, on ne peut pas empêcher ce genre de bombe logique ; ce n’est qu’un jeu du chat et de la souris
      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
    • Les étapes 1 à 3 peuvent aussi être remplacées par une méthode où l’app vérifie sa propre page de fiche App Store
      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 ? »
    • L’une des raisons pour lesquelles Apple mène une certaine due diligence lors de l’onboarding des développeurs et de la signature du contrat développeur, c’est de pouvoir engager de manière fiable des actions en justice contre les développeurs qui abusent du système
      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
    • L’IA semble proche du moment où il deviendra impossible de distinguer les utilisateurs synthétiques des vrais utilisateurs. Pour atténuer les techniques ci-dessus et d’autres mentionnées dans ce fil, Apple va probablement faire évoluer rapidement son processus de revue vers quelque chose de très automatisé et continu
      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. »

    • Au moins dans les jeux live service, quasiment 100 % téléchargent régulièrement du nouveau code interprété sur mobile, ce qui revient en pratique à contourner entièrement la revue des app stores
      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
    • À ce stade, la règle semble assez ouverte aux apps qui conservent globalement le même objectif et dont l’approche ne change pas beaucoup
      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’ai fait exactement la même chose dans l’une de mes apps. C’était une app privée, utilisable seulement avec un code de connexion, mais Apple voulait tester toutes les fonctionnalités. J’ai donc ajouté quelques faux écrans dans l’app, qui ne faisaient même pas d’appels API
      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
    • Bien. Cela montre à quel point la procédure de validation des apps est inutile
      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 ?

    • À l’inverse, si une app de piratage peut faire ce genre de chose, un malware le peut évidemment aussi. Et je pense qu’Apple se soucie davantage du piratage que des vrais malwares
      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

    • La même année, en 2021, le chiffre d’affaires total de l’Apple App Store était de 85 milliards de dollars
      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.

    • Je suis d’accord avec la direction générale, mais je pense que le point de vue est plutôt centré développeurs que centré utilisateurs.
      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.
    • Tu as lu l’article ? Il parle d’Uber qui a contourné la validation pour suivre les utilisateurs contre les règles d’Apple et contre la volonté des utilisateurs. Ou d’autres apps qui ont fait la même chose pour distribuer des logiciels piratés.
    • La position d’Apple/Google me paraît aussi assez contradictoire.
      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 ?
    • Pour rendre l’argument plus convaincant, il serait utile d’ajouter aussi des idées sur la manière de protéger les utilisateurs contre les mauvais logiciels.
      Quel est le plan à ce sujet ?
    • Je suis d’accord, mais je ne vois pas très bien le rapport avec l’article.
  • « 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.