- Depuis Android 11, Google limite les requêtes entre apps, mais de nombreuses apps pouvaient consulter la liste des apps installées au moyen de simples déclarations dans
AndroidManifest.xml
- La politique de visibilité des packages exige de ne voir que les apps nécessaires aux fonctionnalités essentielles, mais les déclarations de packages individuelles et le filtre
ACTION_MAIN ont été utilisés comme voie de contournement
- Swiggy déclarait 154 apps, Zepto 165, KreditBee 860 et Moneyview 944, ce qui leur permettait de vérifier si certaines apps étaient présentes sur l’appareil de l’utilisateur
- Parmi 47 apps indiennes examinées au hasard, 31 utilisaient le filtre d’intent
ACTION_MAIN, ce qui permet de voir la plupart des apps installées disposant d’une interface, même sans QUERY_ALL_PACKAGES
- Les données sur les apps installées et l’autorisation
READ_SMS peuvent mener au profilage, à une tarification différenciée et à des décisions de crédit ou d’éligibilité, mais il est difficile pour l’utilisateur de savoir quand une app lit quoi
Les failles de la politique de visibilité des apps Android
- Par le passé, sur Android, une app pouvait voir les autres apps installées sur le téléphone de l’utilisateur sans autorisation particulière
- À partir d’Android 11, Google a introduit la politique de visibilité des packages afin de limiter cet accès
- Une app ne devrait pouvoir voir d’autres apps installées que lorsque c’est indispensable à ses fonctionnalités essentielles
- Les développeurs doivent indiquer les apps qu’ils veulent vérifier dans
AndroidManifest.xml, le fichier de configuration obligatoire de toutes les apps Android
- Pour des cas d’usage précis comme les gestionnaires de fichiers, les navigateurs ou les apps antivirus, l’autorisation
QUERY_ALL_PACKAGES est accordée à titre d’exception
- Afficher des apps de paiement UPI, ou détecter des apps de clonage et de comptes multiples, peut constituer une raison légitime de consulter les apps
- De nombreux manifestes examinés incluaient aussi des requêtes d’apps à des fins de paiement, de sécurité et de détection de fraude
Les requêtes d’apps très larges de Swiggy et Zepto
- Swiggy listait 154 noms de packages dans son manifeste, ce qui lui permettait de vérifier si ces apps étaient présentes sur le téléphone
- La liste incluait des apps comme Xbox, PlayStation, Naukri et Upstox
- Les catégories étant très larges, il est très probable que cette collecte de données serve au profilage des utilisateurs et à la construction de profils comportementaux
- Google considère la liste des apps installées comme des données utilisateur personnelles et sensibles
- Zepto avait enregistré dans son manifeste 165 apps à vérifier sur l’appareil
- On y trouvait des apps populaires de plusieurs catégories, comme Netflix, Bumble et Binance
- Il a été rapporté que Zepto affichait des prix différents aux utilisateurs iOS et Android, et certains clients ont signalé des écarts de prix entre téléphones Android
- Lorsqu’un utilisateur installe une app depuis le Play Store, il ne peut pas voir quelles listes de requêtes d’apps figurent dans le manifeste de cette app
L’étendue des requêtes des apps de livreurs et des apps de prêts personnels
- Les apps destinées aux livreurs de Swiggy et Zepto avaient des listes de requêtes d’apps différentes de celles des apps grand public
- Les deux apps incluaient des éléments permettant de vérifier pour quelles autres entreprises les livreurs travaillent
- Swiggy vérifiait aussi des apps de prêts personnels, des apps de finance personnelle et même des jeux comme Ludo King et Carrom Pool
- Les pratiques prédatrices des apps indiennes de prêts personnels ont été documentées, et une vaste opération de répression avait conduit, il y a quelques années, au retrait de milliers d’apps du Play Store
- KreditBee est l’une des principales apps de prêts personnels sur le Play Store, avec plus de 50 millions de téléchargements, et vérifiait 860 apps dans son manifeste
- La liste contenait aussi des éléments comme Tamil Calendar, Odia Calendar, Qibla Direction Finder, des apps de temples et des apps d’astrologie
- L’app de mariage destinée aux personnes n’ayant pas terminé le lycée
Jodii for Diploma, +2,10 below et l’app de commerce de vaches et de buffles Buy and Sell Cow Buffalo Animall apparaissent aussi comme exemples, toutes deux téléchargées plus de 10 millions de fois
- Moneyview est également une app de prêts personnels téléchargée plus de 50 millions de fois, et son manifeste inclut 944 apps
- La politique du Play Store restreint explicitement l’usage de
QUERY_ALL_PACKAGES par les apps de prêts personnels, mais KreditBee et Moneyview contournent cette restriction en listant une par une les apps voulues dans leur manifeste
Comment voir la liste des apps sans QUERY_ALL_PACKAGES
- Parmi les apps examinées, Cred était le seul cas où le manifeste incluait
QUERY_ALL_PACKAGES, une autorisation sensible et à haut risque
- Le Play Store autorise une « exception temporaire » à cette autorisation pour les apps dont l’objectif principal vérifiable est de faciliter des transactions financières liées à des produits financiers réglementés
- Les manifestes de PhonePe et PayTM, dans le même secteur, ne contenaient pas cette autorisation
- Cred propose aussi des prêts personnels et ne semble pas relever de cette exception au regard de la politique du Play Store sur les prêts personnels
- Certains manifestes d’apps contenaient un filtre d’intent
ACTION_MAIN comme ci-dessous
<queries>
[...]
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
[...]
</queries>
- Le filtre
ACTION_MAIN donne une visibilité sur la plupart des apps installées qui ont une interface, et permettait de voir la liste des apps du téléphone sans l’autorisation QUERY_ALL_PACKAGES
- Lorsqu’une app Android basique contenant le même réglage a été utilisée pour interroger les apps installées, elle a renvoyé la liste de toutes les apps du téléphone
- Parmi 47 apps indiennes analysées au hasard, 31 utilisaient ce filtre, soit environ deux sur trois
- Apps qui l’utilisaient : Astrotalk, Axis Mobile, Bajaj Finserv, BookMyShow, Cars24, Cure.fit, Fibe, Groww, Housing, Instamart, Ixigo, JioHotstar, KreditBee, KukuTV, LazyPay, Ludo King, Meesho, MoneyTap, Moneyview, Navi, NoBroker, Nykaa, Ola, PhonePe, PhysicsWallah, Slice, Spinny, Swiggy, Swiggy Delivery, Tata Neu, Zomato
- Apps qui ne l’utilisaient pas : Airtel Thanks, Blinkit, Byju’s, MyGate, Dream11, Flipkart, HDFC Mobile, Healthify, INDmoney, MyJio, Paytm, PaisaBazaar, ShareChat, Unacademy, Vedantu, Zepto
- Swiggy disposait aussi du filtre
ACTION_MAIN, mais listait également explicitement des requêtes d’apps, révélant une partie de ses pratiques de collecte de données
- Les fichiers manifestes lus sont publiés dans android-manifest-files, et la plupart ont été téléchargés les 18 ou 19 mars
- Ce réglage ne se limitait pas aux apps d’entreprises indiennes
- Facebook, Instagram, Snapchat, Subway Surfers et Truecaller avaient le même réglage
- Amazon, Spotify, X, Discord et WhatsApp ne l’avaient pas
La sensibilité des données d’apps installées et de l’autorisation SMS
- Les données sur les apps installées sont des données personnelles sensibles
- En 2022, Vice a rapporté que, juste après l’annonce selon laquelle Roe v. Wade pourrait être renversé, une place de marché de données appelée Narrative vendait des données sur les utilisateurs ayant téléchargé des apps de suivi menstruel
- En plus des requêtes sur les apps installées, le manifeste d’une app peut contenir de nombreuses autorisations qui semblent dépasser le périmètre nécessaire
- Zepto demande l’autorisation
READ_SMS
- L’utilisateur peut la refuser, mais elle est obligatoire pour s’inscrire à Zepto Postpaid
- Si l’autorisation est accordée, de nombreux sender ID TRAI de banques ainsi que les SMS de Blinkit, Swiggy, Bigbasket et Flipkart font aussi partie des éléments vérifiés
- L’app semble lire les SMS bancaires afin de vérifier l’éligibilité au forfait Postpaid, mais elle peut les lire même si l’utilisateur ne choisit pas cette fonctionnalité
- Après avoir accordé à une app une autorisation comme
READ_SMS, l’utilisateur ne peut pas voir quand l’app accède à quoi
- Les informations d’installation des apps Android peuvent être utilisées par les développeurs d’apps et les data brokers pour le profilage, le recoupement avec des données de réseaux publicitaires ou encore la tarification
1 commentaires
Avis sur Hacker News
La faille ACTION_MAIN avait déjà été évoquée auparavant : https://commonsware.com/blog/2020/04/05/android-r-package-vi...
Google ne semble pas vouloir la corriger. Je me demande ce qui se passerait si on la soumettait au programme Android VDP comme contournement d’autorisation
L’auteur a aussi publié une question sur SO à propos du contournement : https://stackoverflow.com/q/79527331
À partir de là, le simple fait qu’Android demande si un jeu arbitraire tout juste installé doit devenir le launcher par défaut devient une interaction assez risquée pour une app suspecte. Il y a de fortes chances que l’utilisateur abandonne et la signale, ou qu’un utilisateur moins averti la définisse comme launcher par défaut, casse son écran d’accueil, puis la signale sur le Play Store. En pratique, distribuer une app de type launcher impliquerait aussi des tests automatisés et des exigences supplémentaires, ce qui alourdirait probablement la charge côté développeur
J’ai du mal à croire que les ingénieurs de Google ignorent cette faille largement connue, mais je me demande s’il existe une source indiquant que Google a refusé de la corriger
Je ne comprends toujours absolument pas pourquoi on a besoin d’« apps » natives. Jusqu’ici, je n’ai jamais vu d’« app » qui ne puisse pas être remplacée correctement par un site web ou une web app, et dans la plupart des cas une web app aurait probablement été meilleure
Le seul avantage des « apps », c’est qu’elles semblent permettre aux développeurs d’accéder à des données personnelles dont ils n’ont en réalité pas besoin
Il y a aussi l’avantage de pouvoir être présent sur l’« App Store », mais l’App Store est un concept inutile créé pour permettre à Apple/Google de prélever une grosse part des ventes
Un navigateur web offre un sandboxing correct, n’impose pas de frais de « soumission », et reste accessible à tout le monde sur n’importe quel téléphone
En pratique, la plupart des web apps mobiles sont médiocres. L’expérience utilisateur est très loin de celle d’une app native. Je déteste la sélection de texte involontaire, le geste « tirer pour actualiser » sur chaque page, ou encore le swipe vers la gauche qui ramène à la page précédente
On peut probablement contourner ces problèmes, mais la nouvelle bibliothèque Silk (https://silkhq.co/) semble être le premier exemple à vraiment se rapprocher d’une expérience native. Et le simple fait que ce soit une bibliothèque payante montre bien que le problème est loin d’être trivial
Il y a beaucoup de choses qu’une app native peut faire, mais qu’un navigateur fait mal ou ne peut pas faire du tout. Par exemple, le montage vidéo/audio lourd, l’accès à beaucoup de RAM, l’exploitation du calcul GPU ou les tâches proches du matériel restent encore insuffisants dans un navigateur
Ça ne veut pas dire que la manière dont Apple et Google l’ont réellement mis en œuvre est bonne, mais je ne crois pas à un futur où on n’utiliserait plus que des web apps. Pour la même raison, je ne vais pas remplacer mon véritable ordinateur par un Chromebook de sitôt
En revanche, les apps qui fonctionnent hors ligne sur l’appareil, sans disperser mes données dans des services que je ne contrôle pas, restent très utiles. Je ne veux pas dépendre d’une connexion Internet partout où je vais
Quand je suis en forêt ou à la montagne, j’apprécie les apps hors ligne comme OsmAnd ou Organic Maps qui me guident, ainsi que les apps qui partagent des données en se connectant directement à mon appareil local plutôt qu’à un serveur tiers
Idéalement, toutes les apps devraient être conçues offline-first et ne demander Internet qu’en cas de besoin. Une app qui ne peut pas fonctionner sans Internet pourrait tout aussi bien être une web app et n’a pas besoin d’être installée sur mon appareil
Je me demande quand vous avez réservé un billet d’avion pour la dernière fois sur le web mobile. Je ne sais même pas comment vous supportez l’espace d’écran occupé par le navigateur. Une app peut garder l’authentification en cache et utiliser FaceID, alors que devoir se reconnecter à chaque fois est déjà un problème
C’est pour ça que Hacker News est bien
J’ai trouvé cet article hier et je l’ai posté sur le subreddit Android de Reddit : https://old.reddit.com/r/Android/comments/1jmwg4w/everyone_k...
0 upvotes, et les commentaires étaient remplis de réactions dont on ne savait pas si elles venaient de gens déprimés ou de bots
Ici, c’est dans le top 2, et la plupart des commentaires sont intéressants
Il y a beaucoup de subreddits morts, mais r/android est presque parmi les pires
En plus, les subreddits thématiques donnent souvent l’impression d’être modérés par des gens qui ont un intérêt direct dans le sujet, ce qui nuit à la communauté. J’avais posté un texte détaillant sous quelle licence propriétaire Meta distribue Llama, et ce que cette licence implique exactement, mais les modérateurs de r/LocalLlama l’ont supprimé manuellement sans raison, et même quand j’ai demandé pourquoi pour mieux comprendre les règles, ils n’ont pas répondu
Lors de la dernière « purge Reddit », quand beaucoup de modérateurs de communauté ont été remplacés par des employés de Reddit, j’ai eu l’impression qu’une bonne partie de la plateforme avait été vendue pour que chaque entreprise modère directement son propre espace
Si tu cliques sur le lien « past » sous le titre, il y a un fil d’il y a 2 jours qui est complètement mort
Hacker News comprend la notion de critique constructive
Le passage essentiel, c’est : « ils vont au-delà des catégories générales et vérifient aussi des apps comme Tamil Calendar, Odia Calendar, Qibla Direction Finder, des apps de mandir, des apps d’astrologie… Ils savent ce qu’ils font »
Cette app de prêt profile donc les gens sur la base de leur identité ethnique/régionale (Tamil, Odia) et de leur religion (Qibla Direction Finder pour les musulmans, apps de mandir pour les hindous)
L’app Android de HSBC UK inspecte les apps installées et refuse de se lancer si certaines apps disposant de permissions particulières sont présentes. Par exemple, elle n’accepte pas les launchers alternatifs, et maintenant elle refuse aussi de fonctionner dès qu’il y a ne serait-ce qu’une seule app installée en dehors du Google Play Store
Je m’en étais déjà plaint ici, mais j’ai fini par demander un dispositif de sécurité matériel et utiliser le site web à la place
Je me demande si elles prétendent au moins que ces données ne sont pas envoyées à l’entreprise
À la question « pourquoi la fonctionnalité principale de Swiggy aurait-elle besoin de savoir si j’ai les apps Xbox ou Playstation installées ? En quoi savoir si j’ai Naukri ou Upstox aide à me livrer des courses chez moi ? », la réponse est : pour le fingerprinting
Même chose pour les apps bancaires : pour un escroc, savoir à l’avance quelle banque utilise la cible est extrêmement utile
Surtout si on peut relier ça à un numéro de téléphone : il existe pas mal de groupes qui voudraient ce genre d’informations
Quand je lis « pour des cas d’usage très spécifiques, comme les gestionnaires de fichiers, les navigateurs et les antivirus, Google accorde des exceptions à la permission QUERY_ALL_PACKAGES pour qu’ils puissent voir l’ensemble des apps installées », je ne comprends pas pourquoi un navigateur aurait besoin d’énumérer les apps installées
Pourquoi ?!
Bref, il faut blâmer la gestion produit de Google
Par exemple, Obsidian demande l’accès à tout le système de fichiers, alors qu’en pratique il lui suffirait d’accéder aux fichiers que l’utilisateur choisit de lui montrer
C’est une fonctionnalité très utile, et ça me déplairait qu’elle disparaisse
« Tout le monde connaît toutes les apps de ton téléphone » concerne les téléphones Android. L’iPhone n’a pas ce défaut de protection de la vie privée
https://blog.verichains.io/p/technical-analysis-improper-use...
Sur Android, si on utilise le profil professionnel, qui est aujourd’hui la méthode standard, seules les apps du profil professionnel sont visibles
L’un des principaux intérêts à créer une app est de siphonner toutes sortes de données chez l’utilisateur. Il suffit de voir combien d’apps demandent l’accès aux contacts, et combien en ont réellement besoin pour leur fonctionnement. Donc ça m’étonne encore un peu que tant de gens soient surpris par ce type de découverte
Avant, on pouvait tenter de communiquer avec une app via un schéma URI personnalisé, et si cela fonctionnait, on savait que l’app était installée. Twitter s’en servait pour le fingerprinting
Désormais, une app doit accepter une intention spéciale, et déclarer la liste des apps qu’elle utilisera à cette fin
Récemment, leurs fonctions LLM ont été fortement mises à jour, donc j’ai installé l’app pour aller voir. Tant qu’elle était installée, chaque visite du site mobile affichait une énorme bannière me disant d’ouvrir l’app, et ni le bloqueur de pub ni le bloqueur d’éléments gênants n’arrivaient à la supprimer. Dès que j’ai désinstallé l’app, elle a disparu
Pourquoi ? Je me demande comment le site mobile sait que l’app est installée. Et je ne comprends pas non plus pourquoi il est impossible de bloquer ces incitations à utiliser l’app quand elle est installée, alors que c’est faisable quand elle ne l’est pas
Il faut le root, mais on peut bloquer ou falsifier ça avec quelque chose comme XPrivacyLua[1], un module LSPosed[1]. J’ai aussi entendu parler d’AppOps[3], qui est en source fermée, mais je ne l’ai jamais essayé
[1]: https://lsposed.org
[2]: https://github.com/M66B/XPrivacyLua / https://github.com/0bbedCode/XPL-EX
[3]: https://appops.rikka.app
Fait intéressant, XPrivacyLua n’est plus maintenu, et son app compagnon Pro doit être retirée du Play Store par Google parce qu’elle utilise l’autorisation
QUERY_ALL_PACKAGES[0]: https://github.com/M66B/NetGuard
[1]: https://xdaforums.com/t/closed-app-xposed-6-0-xprivacylua-an...
Je me demande si les apps Windows, surtout celles qui ne sont pas installées depuis le MS Store, peuvent énumérer les titres de toutes les fenêtres ouvertes. À quel point serait-il difficile pour une app de surveiller tout le trafic web à partir des seuls titres ?
C’est une vraie question. ChatGPT acquiesce à tout et n’est donc pas très utile, j’ai besoin de quelqu’un qui puisse m’expliquer pourquoi ce ne serait pas réalisable dans le monde réel
Il existe pour cela les fonctions EnumWindows() et EnumChildWindows()
Comme exemples de cette fonctionnalité, on peut citer l’utilitaire « Windows Modifier v2.00 » et Spy++ (SPYXX.EXE) de Microsoft. Quand je les avais découverts à l’époque, il y avait plein de pages à leur sujet ; aujourd’hui, même en cherchant leur nom exact, on trouve à peine quoi que ce soit, comme un signe qu’Internet efface très bien sa propre mémoire
La solution face aux apps auxquelles on ne fait pas confiance, c’est de ne pas les utiliser du tout, ou de les lancer dans une VM
C’est vrai au moins sur Windows et sur la plupart des systèmes *nix traditionnels, surtout sous X11
C’est un domaine où Android a bien fait les choses : par défaut, chaque application s’exécute sous un utilisateur différent. Autrement dit, chacune a son propre dossier personnel et ne peut pas voir les autres apps
Cela dit, des outils comme ManicTime ou ActivityWatch suivent l’historique du navigateur via les titres de fenêtres si on n’installe pas de plugin navigateur
https://www.manictime.com/
https://activitywatch.net/
En particulier, il est vrai que « l’UAC n’est [toujours] pas une barrière de sécurité ». Si vous confirmez une élévation de privilèges ou saisissez un mot de passe pour élever un processus, vous élevez en pratique tout le bureau ainsi que tout ce qui s’y exécute