1 points par GN⁺ 2023-12-22 | 3 commentaires | Partager sur WhatsApp
  • L’API HotspotHelper, disponible depuis iOS 9, permet aux apps de recevoir des informations sur les points d’accès Wi‑Fi à proximité, ce qui peut ouvrir une voie de suivi de la position sans consentement de l’utilisateur
  • Les apps peuvent lire les SSID et BSSID des réseaux voisins dans un callback enregistré, puis les envoyer au serveur pour alimenter une logique d’estimation de position
  • Comme les points d’accès Wi‑Fi sont généralement fixes, il devient possible de faire une estimation de position basée sur le Wi‑Fi en combinant ces données avec des services publics comme Precisely ou Google Geolocation API
  • Ce comportement ne se produit pas uniquement pendant l’utilisation de l’écran des réglages : il peut aussi survenir lorsque l’appareil scanne les Wi‑Fi alentour alors qu’il est verrouillé, sans que l’utilisateur puisse le savoir ni le désactiver
  • Des apps à très large diffusion comme WeChat et Alipay implémentent aussi cette fonctionnalité, d’où des appels à ce qu’Apple propose une option explicite d’autorisation ou de refus comme pour la localisation ou les notifications

Informations Wi‑Fi exposées par l’API HotspotHelper

  • Apple fournit l’API HotspotHelper depuis iOS 9, afin de permettre aux apps de demander des fonctions aidant le système à se connecter aux points d’accès Wi‑Fi
  • Le code d’exemple montre, via NEHotspotHelper.register, le flux par lequel une app reçoit les informations sur les réseaux Wi‑Fi
    • récupération de la liste des réseaux à proximité via command.networkList
    • lecture de network.ssid et network.bssid pour chaque réseau
    • transmission de ces valeurs à une logique de suivi de position comme trackLocation(withSSID:andMACAddress:)
  • Même si l’objectif initial est sans doute de faciliter la connexion, une app peut aussi utiliser les SSID et BSSID reçus comme données de suivi de position

Une voie permettant d’estimer la position sans consentement de l’utilisateur

  • Les informations sur les points d’accès Wi‑Fi alentour peuvent servir de repères pour estimer la position d’un utilisateur
    • la plupart des points d’accès Wi‑Fi ne bougent pas une fois installés
    • la liste des points d’accès voisins peut être utilisée pour trianguler ou estimer la position actuelle de l’utilisateur
  • Exemples d’API publiques : Precisely Location By Wi-fi Access Point et Google's Geolocation API
  • Cette fonctionnalité ne s’active pas seulement quand l’utilisateur manipule explicitement l’écran des réglages
    • une app enregistrée peut être exécutée lorsque l’appareil scanne les points d’accès Wi‑Fi alentour
    • y compris lorsque l’appareil est verrouillé et dans la poche de l’utilisateur
  • Une app peut récupérer les SSID et adresses MAC des environs et les envoyer au serveur ; si le développeur le souhaite, un suivi de position quasi en temps réel devient possible
  • Il est difficile pour l’utilisateur de savoir que ce processus est en cours à l’écran, et aucune option ne lui permet de désactiver cette fonctionnalité

Les cas de WeChat et Alipay

  • WeChat et Alipay sont cités parmi les principales apps ayant déjà implémenté cette fonctionnalité
  • Les deux apps sont extrêmement utilisées en Chine continentale et interviennent dans de nombreux aspects de la vie quotidienne
  • Si des apps aussi répandues peuvent suivre la position sans consentement de l’utilisateur, l’ampleur de l’impact augmente fortement
  • Même si la collecte de données peut viser à améliorer l’expérience utilisateur ou à faciliter la connexion au Wi‑Fi alentour, l’opacité de la logique côté serveur laisse subsister des problèmes de transparence et de responsabilité

Réponse d’Apple et modèle d’autorisation nécessaire

  • Le problème a été découvert il y a environ deux ans et partagé sous forme de vidéo sur Bilibili, mais il est resté relativement peu connu publiquement
  • Les inquiétudes ont aussi été transmises à Apple, qui a répondu par email, sans mise à jour supplémentaire par la suite
  • Apple devrait proposer une option permettant aux utilisateurs de désactiver cette fonctionnalité, comme pour les réglages de confidentialité liés à la localisation ou aux notifications
  • Avant qu’une app puisse accéder à cette fonctionnalité, elle devrait demander explicitement l’autorisation, et l’utilisateur devrait pouvoir autoriser ou refuser l’accès pendant l’utilisation de l’app
  • HotspotHelper reste un point de controverse entre les promesses d’Apple en matière de respect de la vie privée et la protection effective des données utilisateur

3 commentaires

 
GN⁺ 2023-12-22
Avis sur Hacker News
  • En lisant la documentation liée, cet API semble servir à aider les apps créées par les propriétaires de hotspots Wi‑Fi à connecter les utilisateurs à ces hotspots : https://developer.apple.com/documentation/networkextension/h...
    NEHotspotHelper permet à une app de participer au processus d’authentification des réseaux Wi‑Fi, c’est‑à‑dire des hotspots, lorsque l’utilisateur doit interagir avec le réseau pour accéder à l’Internet au sens large
    Il est aussi indiqué qu’il n’est utile que pour l’intégration de hotspots, qu’il existe des restrictions techniques et commerciales pour d’autres usages comme l’intégration d’accessoires ou la localisation basée sur le Wi‑Fi, et qu’il faut obtenir l’approbation d’Apple pour le droit spécial com.apple.developer.networking.HotspotHelper avant utilisation
    Du coup, on peut se demander pourquoi des apps comme WeChat ou Alipay ont reçu cette autorisation

    • Je ne sais pas pour Alipay, mais WeChat semble avoir besoin de cette fonction à cause de WeChat Wifi, qui permet aux utilisateurs d’accéder à des hotspots Internet avec leur compte WeChat : https://mp.weixin.qq.com/s?__biz=MzI1NjA0NzQzOQ==∣=265026...
    • Même si l’autorisation n’était accordée qu’à de vraies apps de hotspot, ce n’est pas une conception centrée sur la confidentialité et respectueuse de l’utilisateur
      L’usage d’un tel API devrait afficher une boîte de dialogue de permission visible par l’utilisateur avant qu’une app puisse recevoir des notifications en arrière-plan, et l’utilisateur devrait pouvoir choisir entre « autoriser une seule fois », « autoriser pendant l’utilisation », « autoriser en arrière-plan » ou « ne pas autoriser »
      L’activité de l’app devrait aussi apparaître dans le rapport de confidentialité de l’app
    • C’est probablement parce que le marché chinois est trop important
      WeChat est une « super app » et peut sans doute prétendre servir aussi à la connexion à des hotspots Wi‑Fi, mais pour Alipay je ne vois pas bien l’explication
    • Les apps VPN semblent aussi utiliser cette fonction : https://github.com/pia-foss/mobile-ios/blob/4618b55161ec5b8b...
    • D’après certaines conditions résumées par Apple, cette autorisation ne semble pas nécessaire : https://developer.apple.com/forums/thread/679038
      1. Si l’app utilise l’API CoreLocation et a reçu l’autorisation d’accéder à la localisation précise de l’utilisateur. Cela paraît anodin puisqu’elle a déjà accès à la localisation précise
      2. Si l’app a configuré le réseau Wi‑Fi actuel via l’API NEHotspotConfiguration. Cela semble correspondre exactement au périmètre de cet article
      3. Si l’app a une configuration VPN active installée. C’est assez surprenant
      4. Si l’app a une configuration active NEDNSSettingsManager installée. Je ne sais pas exactement ce que c’est, mais cela ressemble à quelque chose de proche du côté VPN
  • À noter qu’il faut une autorisation spéciale pour utiliser cet API, et qu’il faut la demander à Apple en justifiant son usage
    Ce n’est pas un API générique accessible à n’importe quelle app

    • Ce n’est pas très rassurant. D’après l’article, Apple a justement accordé cette autorisation à WeChat et Alipay
      Certes, ce sont des « super apps » et les services de hotspot Wi‑Fi peuvent faire partie de leurs fonctionnalités, mais justement, cela devrait être une autorisation accordée par l’utilisateur, comme « accès au réseau local »
      Si les fonctions de hotspot ne m’intéressent pas, je ne veux pas que l’app ait cette capacité
    • La plupart des permissions affichent un prompt de confidentialité permettant à l’utilisateur de désactiver la fonction
      Sans tester soi-même une app utilisant cette autorisation, difficile de savoir si c’est aussi le cas ici, mais à mon avis il devrait y avoir une demande de consentement à l’utilisateur
    • Si Facebook, Instagram, Messenger, ou encore Alipay et WeChat cités dans l’article, possèdent cette autorisation et s’en servent pour des choses suspectes, cela pourrait devenir un gros problème de confidentialité
      Je me demande si Apple analyse l’usage de cette autorisation et la retire en cas d’abus
      De façon comparable, je crois me souvenir qu’au moment du « scandale » du VPN de Facebook, Apple avait révoqué le certificat de signature entreprise de Facebook
    • Je ne sais pas si c’est mieux ou pire
      Cela ressemble à : « ne t’inquiète pas, ni toi ni moi ne pouvons en abuser, seuls les grandes entreprises et les collecteurs de données le peuvent »
    • Donc au final, seules les grosses apps peuvent espionner les utilisateurs ?
      L’auteur semble chinois et se préoccupe donc de WeChat et d’Alipay, mais je me demande ce qu’il en est de Facebook et Google
  • Je pensais déjà que l’utilisateur recevait une invite pour autoriser cette permission
    De nos jours, il est assez courant que des apps demandent si elles peuvent accéder au « réseau local », et j’ai presque toujours refusé en pensant que cela signifiait pouvoir voir les hotspots Wi‑Fi locaux
    Après avoir lu cet article, je l’ai aussi désactivée pour Spotify
    Mais la plupart des utilisateurs ne savent pas que ces informations peuvent servir à déduire leur position, donc la boîte de dialogue de permission devrait être améliorée

    • Du point de vue des développeurs, il y a une raison pour laquelle la permission « réseau local » est pénible
      D’abord, l’implémentation est maladroite. Contrairement aux autres permissions, il n’existe aucun moyen d’afficher explicitement l’invite, et elle surgit soudainement quand Apple juge que c’est le bon moment
      Même lorsqu’elle est nécessaire à une fonction essentielle, il n’y a pas de moyen naturel de l’expliquer, et il n’existe pas non plus de moyen de vérifier si la permission a été accordée
      Ensuite, et c’est plus important, les apps d’Apple elles-mêmes n’affichent pas cet avertissement, ce qui crée une concurrence déloyale
      AirPlay et d’autres fonctions marchent de façon fluide, mais pas les technologies concurrentes, et comme les développeurs ne peuvent pas connaître l’état de la permission, l’expérience utilisateur se dégrade
      Si Apple introduit une restriction, elle doit aussi s’appliquer à ses propres apps. AirPlay et AirDrop devraient chacun demander l’accès au Bluetooth et au réseau local, l’app Photos devrait afficher au lancement une invite « sélectionner des photos, tout autoriser, refuser », et l’app Camera ne devrait pas non plus pouvoir écrire dans la photothèque sans la même invite
      Ainsi, Apple aurait aussi intérêt à bien concevoir l’expérience utilisateur autour de ces restrictions, et chercherait des solutions plus créatives au lieu de boîtes de dialogue confuses
      Pour l’instant, il n’y a aucune incitation à bien faire. Tout développeur iOS ayant travaillé avec ces API sait que leur conception est médiocre à cause de restrictions arbitraires et imprévisibles
    • Cette permission sert à envoyer et recevoir du trafic réseau local, par exemple pour communiquer avec des appareils sur le même sous-réseau ou découvrir des cibles comme Chromecast
      AirPlay n’a pas besoin de cette permission
    • Je le comprends comme la capacité à parcourir le LAN, voire peut-être aussi le tailnet, pour trouver des services comme un bridge Hue, des enceintes Sonos ou un Chromecast
  • Documentation : https://developer.apple.com/documentation/technotes/tn3111-i...
    La revue bloquera probablement les petites apps de spam, mais comme l’auteur et d’autres l’ont dit, elle ne semble pas pouvoir bloquer les gros acteurs

    • La documentation confirme qu’une permission est nécessaire pour appeler cette API
      En revanche, il n’est toujours pas clair si, lorsque cette permission existe, une invite s’affiche pour permettre à l’utilisateur de refuser l’usage de l’API
  • Existe-t-il un moyen de vérifier quelles apps populaires utilisent cela ?
    Comme la plupart ici, je n’ai ni WeChat ni Alipay installés, mais je me demande pour des apps comme Instagram, Facebook, WhatsApp, Twitter, TikTok, Snapchat, Chrome, Firefox, Photoshop ou Lightroom

    • J’ai l’impression de me répéter, mais l’App Store devrait permettre de voir les permissions qu’une app demandera avant l’installation
      On ne devrait pas avoir à télécharger et installer une app juste pour voir quel comportement elle va tenter
      L’App Store connaît déjà ces informations, et il serait très facile de les afficher dans la fiche de l’app avant le téléchargement
  • Il faut aussi parler du problème d’iOS/macOS qui réactive le Wi‑Fi et le Bluetooth à chaque mise à jour système
    Contrairement à la berceuse racontée par le marketing, cela donne l’impression d’un appareil conçu délibérément pour maximiser la surveillance

    • Si l’on applique le rasoir de Hanlon, Apple est peut-être simplement paresseuse et laisse ces réglages activés par défaut
      Ils ont probablement choisi de ne pas suivre l’état de ces réglages parce que 99 % des gens les utilisent ou en ont besoin, et Apple aime aussi les claviers et souris Bluetooth
    • C’est vraiment agaçant
  • Maintenant je me demande : quelles autres apps ont cette permission ?
    Existe-t-il un moyen de savoir quelles apps installées sur mon téléphone disposent de cette permission ?

  • C’est l’un des gros problèmes d’une plateforme totalement verrouillée
    La garantie que le propriétaire de la plateforme respectera la vie privée et empêchera les abus des autres ne repose finalement que sur une promesse sur l’honneur

    • Ce point de vue n’est peut-être pas juste. Personne ne s’attend à ce qu’Apple soit parfaite
      La sécurité des plateformes informatiques a toujours été difficile, et la vie privée, en particulier, est culturellement définie de façon bien plus floue que la sécurité informatique classique, généralement définie par des contournements de contrôles d’accès techniques
      La vraie question est de savoir si Apple veut jouer un rôle de curator en contrôlant l’écosystème
      Par le passé, l’entreprise est allée jusqu’à un bras de fer pour stopper Uber quand elle faisait des choses douteuses
      Bien sûr, avec Alipay et WeChat, cela peut être plus difficile pour Apple vu l’importance énorme du marché chinois dans son succès actuel
      Il sera intéressant de voir comment Apple s’adaptera à cela dans les années à venir
      Les plateformes ouvertes ont aussi ce problème, et reposent peut-être encore davantage sur des promesses sur l’honneur
      À moins que l’idée ne soit « si ce problème ne sera pas résolu, alors autant préférer une plateforme ouverte », je vois mal le propos
      Le problème de cette logique, c’est qu’il s’agit seulement d’un exemple d’échec parmi plusieurs problèmes, qui pourrait être résolu plus tard, tandis que les plateformes ouvertes ont ce problème ainsi que bien d’autres encore non résolus
  • J’ai entendu des plaintes disant que ce titre est exagéré, et s’il y a une meilleure proposition, plus précise et plus neutre, on peut la changer

    • « Les apps iOS disposant de privilèges spéciaux peuvent suivre les utilisateurs via le scan des SSID » me semble le mieux décrire la situation
      Je n’en suis pas certain, mais après lecture de l’article, le titre actuel ne donne pas vraiment l’impression d’être factuel
    • Le titre actuel me semble aussi correct
  • L’utilisation de NEHotspotHelper nécessite une autorisation spéciale à demander, com.apple.developer.networking.HotspotHelper, et Apple ne l’accordera probablement pas si l’app n’a pas de besoin légitime
    Cela semble toutefois montrer l’incompatibilité entre la stratégie de protection de la vie privée d’Apple et les super-apps comme WeChat ou Alipay
    Quand une seule entreprise entasse toutes les fonctions dans une seule app, cette app se retrouve soudain avec toutes les autorisations, et il devient difficile de savoir quand et comment les données sensibles sont utilisées
    En Occident, on ne conçoit généralement pas les apps de cette façon. Par exemple, Comcast a une app séparée, « WiFi Hotspots »
    Ce qui est amusant, c’est qu’ils ont annoncé il y a deux jours intégrer cette fonction dans l’app principale Xfinity, donc l’Occident est peut-être en train de rattraper son retard

  • Y a-t-il un moyen, pour l’utilisateur final, de voir quelles apps disposent de cette autorisation ?

  • Facebook aussi est une super-app. Pendant des années, il y a eu une fonction recherche de hotspots Wi‑Fi dans l’app

  • Je déteste vraiment quand, dès le lancement de l’app, les demandes d’accès à l’appareil photo, au micro, aux contacts, etc. pleuvent
    Je refuse immédiatement, et si cela casse les fonctions de l’app, je supprime aussi l’app
    Je refuse aussi quand Google Maps insiste pour activer la localisation précise, demande si je suis en train de faire de la navigation plutôt que de chercher un ami, et veut que j’autorise l’accès aux contacts

  • Où peut-on révoquer com.apple.developer.networking.HotspotHelper sur iOS ?
    Réglages → Confidentialité et sécurité → Réseau local, ou bien ailleurs ?

  • Donc, au final, c’est Apple qui décide quelles entreprises peuvent récupérer mes données de localisation. Génial.

 
ndrgrd 2023-12-23

Une entreprise qui fait de la confidentialité un argument de vente détourne en coulisses les notifications et les données de localisation des utilisateurs.

 
joyfui 2023-12-22

Je croyais que cette fonctionnalité étant bloquée, les alertes de montée et de descente dans le métro étaient impossibles, mais en fait elle existait déjà. Alors pourquoi ça ne marche que sur iPhone...