2 points par GN⁺ 2025-01-28 | 1 commentaires | Partager sur WhatsApp
  • OpenHaystack est un framework qui utilise le réseau Localiser d’Apple pour suivre des appareils Bluetooth personnels ; il permet de créer ses propres balises de suivi avec un Mac et un BBC micro:bit ou un appareil compatible Bluetooth
  • Lorsqu’un iPhone à proximité détecte la publicité BLE d’un accessoire OpenHaystack, il chiffre sa position et l’envoie aux serveurs d’Apple ; OpenHaystack télécharge ensuite ce rapport de position, le déchiffre et l’affiche sur une carte
  • Ce projet est issu des travaux de rétro-ingénierie et d’analyse de sécurité du réseau Localiser menés par le Secure Mobile Networking Lab de la TU Darmstadt ; la vulnérabilité d’accès aux données de localisation CVE-2020-9986 a été corrigée par Apple
  • L’application macOS utilise un plug-in Apple Mail pour recevoir les rapports de position ; pendant l’installation, il faut désactiver temporairement Gatekeeper et garder Mail ouvert pendant l’utilisation
  • Comme il s’agit d’un logiciel expérimental, le code n’a pas été testé et reste incomplet ; les accessoires basés sur le firmware fourni diffusent une clé publique fixe, ce qui pourrait permettre à d’autres appareils à proximité de les suivre

Ce que fait OpenHaystack

  • OpenHaystack est un framework permettant de suivre des appareils Bluetooth personnels via le réseau Localiser d’Apple
  • Les utilisateurs peuvent créer leurs propres balises de suivi pour les attacher à des objets comme un porte-clés ou un sac à dos, ou les intégrer à des appareils compatibles Bluetooth comme un ordinateur portable
  • Il suffit d’un Mac et d’un BBC micro:bit ou d’un autre appareil compatible Bluetooth
  • Même sans connexion cellulaire, un iPhone à proximité peut détecter l’accessoire et envoyer sa position aux serveurs d’Apple lorsqu’il dispose d’une connexion réseau

Base de recherche et analyse de sécurité

  • OpenHaystack est issu de travaux de rétro-ingénierie et d’analyse de sécurité du Find My network d’Apple, ou système de localisation hors ligne
  • Le Secure Mobile Networking Lab de la TU Darmstadt a commencé son analyse après l’annonce par Apple de la localisation hors ligne en juin 2019
  • Ce système combine les éléments suivants
    • Publicités Bluetooth

      • Cryptographie à clé publique
      • Base de données centrale de rapports de position chiffrés
      • Deux vulnérabilités ont été découvertes au cours de l’analyse
      • La vulnérabilité la plus grave permettait à une application malveillante d’accéder aux données de localisation
      • Cette vulnérabilité a été corrigée par Apple et est identifiée sous le nom CVE-2020-9986
      • L’analyse associée de la sécurité et de la confidentialité est traitée dans l’article PoPETs 2021 Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking System

Limites liées au caractère expérimental du logiciel

  • OpenHaystack est un logiciel expérimental ; son code n’a pas été testé et reste incomplet
  • Les accessoires OpenHaystack utilisant le firmware fourni diffusent une clé publique fixe
    • De ce fait, ils peuvent potentiellement être suivis par d’autres appareils à proximité
    • Ce comportement pourra changer dans de futures versions
  • OpenHaystack n’est pas un projet affilié à Apple Inc. ni garanti par Apple

Composants et déroulé d’utilisation

  • OpenHaystack se compose de deux éléments
    • Application macOS : affiche la dernière position signalée des appareils Bluetooth personnels
    • Image firmware : fait diffuser par l’appareil Bluetooth une balise pouvant être détectée par les iPhone
  • La configuration requise est macOS 11 Big Sur
  • Lors de la création d’un nouvel accessoire, l’utilisateur saisit un nom et peut choisir une icône et une couleur
    • L’application génère une nouvelle paire de clés qui servira au chiffrement et au déchiffrement des rapports de position
    • La clé privée est stockée dans le trousseau du Mac
  • Le déploiement d’un appareil consiste à connecter un appareil compatible au Mac en USB, puis à utiliser le bouton Deploy de l’application
    • Au lieu du déploiement intégré, il est aussi possible de copier la clé publique utilisée dans les publicités et de la déployer manuellement
  • Il peut falloir jusqu’à 30 minutes avant que le premier rapport de position apparaisse sur la carte
    • La carte affiche la position la plus récente de tous les éléments
    • En cliquant sur chaque élément, on peut vérifier quand la dernière mise à jour a été reçue
    • Le bouton reload permet d’actualiser les rapports de position

Plug-in Mail et mode d’installation

  • L’application OpenHaystack nécessite un plug-in personnalisé pour Apple Mail afin de télécharger les rapports de position depuis les serveurs d’Apple
  • Ce plug-in fonctionne en héritant des autorisations d’Apple Mail nécessaires à l’utilisation d’API privées
  • Pendant l’installation, Gatekeeper doit être désactivé temporairement
    • Désactiver Gatekeeper avec sudo spctl --master-disable
    • Activer OpenHaystackMail.mailbundle dans Mail, Preferences → General → Manage Plug-Ins
    • Réactiver ensuite Gatekeeper avec sudo spctl --master-enable
  • Le plug-in est présenté comme n’accédant pas à d’autres données personnelles, comme les e-mails
  • Pendant le téléchargement des rapports de position, l’application OpenHaystack communiquant avec le plug-in, Mail doit rester ouvert

Fonctionnement du réseau Localiser

  • OpenHaystack décrit le système de localisation hors ligne d’Apple en quatre étapes
  • Appairage

    • Une paire de clés publique/privée basée sur la courbe elliptique P-224 est générée pour utiliser le réseau Localiser
    • La clé privée est stockée de façon sûre dans le trousseau du Mac
    • La clé publique est déployée sur un accessoire comme un micro:bit
  • Mode perdu

    • L’accessoire diffuse la clé publique sous forme de publicité Bluetooth Low Energy
    • Les iPhone à proximité ne peuvent pas distinguer un accessoire OpenHaystack d’un véritable appareil Apple ou d’un accessoire certifié
  • Découverte

    • Lorsqu’un iPhone à proximité reçoit la publicité BLE, il récupère sa position actuelle via GPS
    • L’iPhone chiffre la position avec la clé publique incluse dans la publicité et envoie le rapport chiffré aux serveurs d’Apple
    • Les iPhone sous iOS 13 ou version ultérieure effectuent cette opération par défaut
    • OpenHaystack n’intervient pas dans cette étape
  • Recherche

    • Apple ne sait pas quelle position chiffrée appartient à quel compte Apple ou à quel appareil
    • En connaissant la clé publique correspondante, un utilisateur Apple peut télécharger n’importe quel rapport de position
    • Les rapports étant chiffrés de bout en bout, ils ne peuvent pas être déchiffrés sans la clé privée
    • OpenHaystack télécharge depuis Apple les rapports destinés aux accessoires OpenHaystack, les déchiffre avec la clé privée stockée dans le trousseau du Mac, puis affiche la position la plus récente sur la carte
    • Apple limite l’accès arbitraire à la base de données en ne permettant qu’aux utilisateurs Apple authentifiés de télécharger les rapports de position

Appareils pris en charge et extensions

  • En principe, tout appareil Bluetooth peut être transformé en accessoire OpenHaystack traçable via le réseau Localiser d’Apple
  • Pour l’instant, le mode de déploiement pratique du firmware ne prend en charge que certains appareils embarqués
  • Les appareils Linux sont pris en charge au moyen de scripts HCI standards
  • Exemples de prise en charge
    • Nordic nRF51 : testé sur BBC micro:bit v1, déploiement via l’application pris en charge, seul le nRF51822 est actuellement pris en charge
    • Espressif ESP32 : testé sur ESP32-WROOM et ESP32-WROVER, déploiement via l’application pris en charge, le déploiement peut prendre jusqu’à 3 minutes et nécessite Python 3
    • Linux HCI : testé sur Raspberry Pi 4 et Raspbian, devrait prendre en charge toutes les machines Linux
  • Un portage vers d’autres appareils compatibles Bluetooth Low Energy est possible à partir du code source du firmware et des spécifications de l’article

OpenHaystack Mobile

  • OpenHaystack Mobile est une réimplémentation complète de l’application macOS OpenHaystack pour smartphone
  • Elle propose la création et le suivi d’accessoires, avec pour objectif notamment d’améliorer l’ergonomie pour les nouveaux utilisateurs
  • Contrairement à l’application macOS, un smartphone ne peut pas récupérer directement les rapports de position
    • L’accès au réseau Localiser nécessite un serveur proxy hébergé sur du matériel Mac
    • Le serveur proxy peut être utilisé simultanément par plusieurs utilisateurs via le réseau
  • Pour se connecter au serveur proxy, il faut définir la bonne URL dans openhaystack-mobile/lib/findMy/reports_fetcher.dart
  • OpenHaystack Mobile est développé avec le Flutter framework et fonctionne sur Android et iOS

Licence et références

1 commentaires

 
GN⁺ 2025-01-28
Avis de Hacker News
  • Ce serait bien qu’il existe aussi une bonne option pour les personnes qui ne sont pas utilisatrices d’Apple. D’après ce que j’ai entendu, la version de Google est, comme on pouvait s’y attendre, assez mauvaise
    Il y a une limite à la fréquence à laquelle on peut rechercher son propre tag, la position ne s’affiche pas tant qu’il n’a pas été détecté par plusieurs téléphones, et la couverture est médiocre
    Dans un test, le réseau de Samsung s’est révélé meilleur, ce qui n’a pas de sens puisque les téléphones Samsung devraient n’être qu’un sous-ensemble de tous les téléphones Android du réseau Google. Même si cela semble prometteur en théorie, c’est typique d’un produit Google dont l’exécution reste médiocre des années après qu’Apple a montré la voie
    https://security.googleblog.com/2024/04/find-my-device-netwo...
    https://9to5google.com/2024/08/01/find-my-device-stress-test...
    https://9to5google.com/2024/08/03/google-android-find-my-dev...
    https://www.androidcentral.com/accessories/testing-new-googl...

    • Il est assez ahurissant que les responsables du réseau Localiser de Google aient cassé l’unique fonction du produit au nom de la protection de la vie privée
      Avec ce choix, Google a obtenu quelques articles sur des améliorations « innovantes » en matière de confidentialité avant que les performances réelles, très mauvaises, ne soient vérifiées, mais a perdu l’occasion de concurrencer Apple dans ce domaine, avec un impact négatif sur l’écosystème Android/Pixel et sur ses parts de marché. Il serait difficile d’inventer un tel niveau d’incompétence
    • J’ai du mal à croire que Google ait saboté son réseau à ce point. Normalement, grâce à la part de marché d’Android, il devrait écraser le réseau d’Apple
      En tant que voyageur nomade, le réseau d’Apple n’est pas particulièrement utile pour moi. Je ne circule pas dans des villes riches pleines d’iPhone, mais dans le « reste du monde » où la part d’Android approche les 90 %. Et pourtant, même là-bas, Apple semble faire mieux que Google
    • J’en ai accroché un à mes clés, et la fois où j’ai voulu l’utiliser, même après plusieurs actualisations, il ne m’a montré qu’un cercle d’un rayon de 0,25 mile
      En réalité, il était dans un sac juste à côté de moi
    • La solution de Samsung n’est pas un sous-ensemble, c’est une approche distincte et meilleure
      Même dans des aéroports ou des villages de pays très isolés, j’arrive à retrouver mes deux tags, ce qui est rassurant. Cette vidéo conclut aussi que, même pour les utilisateurs d’iPhone, le Samsung SmartTag est le meilleur
      https://m.youtube.com/watch?v=9wefUV_bR0Y
    • Google devrait peut-être tout simplement se greffer à Find My
  • À en juger par le code, il semble utiliser des autorisations Apple Mail personnelles pour récupérer les positions collectées par les appareils du réseau FindMy
    https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
    Je me demande si c’est aussi possible en créant un compte développeur Apple

    • Il existe des versions qui n’ont pas besoin d’interagir avec Apple Mail
      Il suffit d’un compte Apple, et il n’est même pas nécessaire d’exécuter le code sur du matériel Apple
      https://github.com/biemster/FindMy
  • J’aimerais retrouver un document que j’avais vu auparavant. Apple avertit les utilisateurs des « tags qui peuvent vous suivre », et je me souviens que quelqu’un avait créé une implémentation qui faisait tourner des éléments comme l’adresse MAC ou la clé privée avec une fonction de dérivation de clé (KDF), mais que ces valeurs dérivées étaient suffisamment prévisibles pour être suivies
    Là où j’habite, les petits vols sont vraiment un gros problème, et le temps passé à réparer sans cesse des vitres cassées ou à nettoyer les traces d’effraction finit par peser. Je n’ai absolument pas l’intention de confronter qui que ce soit directement, mais j’aimerais un jour pouvoir produire un historique de déplacements à transmettre à un détective privé ou aux forces de l’ordre

    • Il suffit d’acheter un traceur GPS cellulaire et d’utiliser une SIM IoT très bon marché, voire gratuite
      Sinon, on peut aussi apporter un pack d’eau minérale au point de rassemblement de toxicomanes le plus proche et leur demander d’arrêter de cambrioler vos affaires
    • À ma connaissance, les AirTag font de toute façon tourner la clé privée, donc je ne sais pas si cela aiderait à résoudre le problème
      Cela dit, la rotation est peut-être lente, et je ne connais pas l’algorithme exact
    • Dans ma liste de soumissions, il y a un lien vers un article que j’ai écrit sur OpenHaystack et ces notifications. En résumé, iOS ne m’a jamais averti au sujet d’un traceur basé sur OpenHaystack que j’avais laissé dans une voiture pendant un certain temps
      Mais c’était il y a quelques années, donc les choses ont peut-être changé
  • Ce serait bien s’il existait un moyen de l’intégrer à l’app Localiser au lieu de récupérer la position via sa propre procédure instable.
    Les copies chinoises peuvent bien avoir leur propre marque, donc cela semble forcément possible d’une manière ou d’une autre.

    • C’est là que cela ressemble au jardin clos d’Apple. J’avais lu auparavant les spécifications Apple destinées aux partenaires officiels : pendant le processus d’appairage, l’appareil signe quelque chose avec un certificat/une clé qu’Apple a délivré à ce développeur. Le point important est que c’est une clé obtenue après un contrat, donc de l’argent, et qu’elle est différente de la paire de clés réellement utilisée pour la diffusion.
      Cette signature est vérifiée par Apple, ce qui permet à l’appareil d’être ajouté au compte Apple ID et à l’app. En revanche, les clés diffusées par les appareils en mode Perdu sont arbitraires et totalement opaques, si bien qu’Apple n’a aucun moyen de les associer à une identité, à un appareil ou à un développeur. Si ce projet fonctionne, c’est aussi parce que ces clés finissent par arriver sur les serveurs d’Apple.
      Les copies semblent avoir récupéré une clé valide pour le processus d’appairage. Si Apple décidait de retrouver cette clé, elle pourrait probablement supprimer tous les appareils de tous les comptes, mais les appareils eux-mêmes continueraient à diffuser, et on pourrait toujours accéder à leur position via la méthode bricolée décrite plus haut. Je me demande aussi si le détenteur initial de la clé risque un jour de recevoir une grosse facture de royalties par appareil, si Apple compte dans sa base de données « le nombre d’appareils signés avec cette clé et ajoutés à des Apple ID ».
    • Les « copies chinoises » sont des produits officiellement pris en charge, et la méthode est ici : https://developer.apple.com/find-my/
    • Les copies chinoises utilisent l’Apple Find My program, ce sont donc des balises officielles qui peuvent apparaître dans l’app.
      OpenHaystack est un hack qui utilise d’autres clés et, pour des raisons cryptographiques, ne peut pas apparaître dans l’app.
    • Les copies n’ont-elles pas aussi des limitations ? Par exemple, il me semble qu’elles n’ont pas de fonction comme la recherche de précision, mais je me souviens peut-être mal de quelque chose lu ailleurs.
  • Vraiment génial. J’aime les Apple AirTag, mais ils sont trop épais et leur forme est un peu bâtarde.
    J’aimerais avoir un AirTag au format carte de crédit que l’on puisse mettre dans un portefeuille, et aussi un AirTag plus petit que l’on puisse accrocher au collier d’un chat.

    • On peut acheter sur Temu ou Aliexpress des balises compatibles Find My tierces pour environ 5 dollars. Elles ont une taille proche d’un AirTag classique, mais elles sont plus faciles à démonter si l’on veut jeter le boîtier, et elles coûtent moins cher.
      J’en ai sorti une de son boîtier pour voir ce qui pouvait être aminci : l’essentiel de l’épaisseur venait du support de pile CR2032, du haut-parleur et du bouton. Le haut-parleur et le bouton pourraient probablement être supprimés après la configuration initiale, et si l’on veut un format de carte mince, on peut aussi retirer le support de pile et alimenter l’ensemble par le côté plutôt que par le dessus.
    • Il existe déjà des cartes ultrafines compatibles AirTag qui tiennent dans un portefeuille.
    • Voici une photo de l’AirTag que ma chatte tricolore de 8,5 livres porte à son collier depuis qu’elle a 3 mois.
      https://imgur.com/a/r9EGSOc
      La photo vient d’être prise avec des lunettes Meta Stories.
    • J’utilise ceci pour mon chien, et c’est très minimaliste.
      https://www.amazon.com/gp/product/B09DCVFNFF/
      Cela dit, j’ai dû l’entourer de ruban adhésif transparent pour empêcher l’AirTag de se dévisser et de sortir du support.
  • Je n’ai pas étudié cela en détail, mais je me demande s’il serait possible de s’en servir pour transmettre un petit payload de données arbitraires.

    • Oui. Il y a récemment eu un projet qui utilisait le réseau AirTag pour transmettre des données provenant d’un keylogger matériel.
      Même si l’ordinateur est totalement isolé, les données peuvent revenir via l’iPhone de la personne qui tape.
    • J’ai vu un cas où quelqu’un utilisait cela pour suivre l’état d’une boîte aux lettres. Un capteur de contact dans la boîte aux lettres faisait tourner la clé de diffusion selon le nombre de déclenchements.
      Si la clé change et qu’un nouvel appareil différent apparaît, cela signifie que du courrier est arrivé ; c’est assez malin.
  • Je me demande quelle est la limite supérieure du débit qu’un seul appareil peut envoyer aux serveurs d’Apple. Si un appareil Apple n’a ni cellulaire ni Wi‑Fi, combien de temps cet historique de pings de localisation reste-t-il sur l’appareil ?
    Je me demande aussi s’il y a là une possibilité d’attaque par déni de service : un attaquant imiterait plus d’un million d’appareils Bluetooth, et lorsqu’une victime passerait par hasard à proximité, son téléphone se retrouverait avec un nombre énorme d’appareils au même endroit, se bloquerait et continuerait à téléverser vers les serveurs d’Apple.

  • Mais peut-on réellement faire la configuration d’un AirTag avec ceci sans autre appareil Apple comme un iPhone ou un Mac ?

  • Article précédent : https://news.ycombinator.com/item?id=26342504

  • Peut-on les appairer avec la vraie app Apple Localiser et les retrouver dans l’app ?