OpenHaystack : technologie pour créer des « AirTags » de suivi d’appareils Bluetooth via le réseau Apple
(github.com/seemoo-lab)- 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.mailbundledans Mail, Preferences → General → Manage Plug-Ins - Réactiver ensuite Gatekeeper avec
sudo spctl --master-enable
- Désactiver Gatekeeper avec
- 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
- OpenHaystack est distribué sous GNU Affero General Public License v3.0
- Principales références
1 commentaires
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...
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
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
En réalité, il était dans un sac juste à côté de moi
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
À 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 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
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
Cela dit, la rotation est peut-être lente, et je ne connais pas l’algorithme exact
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.
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 ».
OpenHaystack est un hack qui utilise d’autres clés et, pour des raisons cryptographiques, ne peut pas apparaître dans l’app.
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.
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.
https://imgur.com/a/r9EGSOc
La photo vient d’être prise avec des lunettes Meta Stories.
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.
Même si l’ordinateur est totalement isolé, les données peuvent revenir via l’iPhone de la personne qui tape.
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 ?