Il y a une vulnérabilité (CVE-2024-27867) dans le firmware des Apple AirPods. Toute personne connaissant l’adresse MAC Bluetooth (qui est en quelque sorte publique) peut se connecter à vos AirPods et écouter le microphone ou jouer de la musique. Même lorsque les AirPods sont connectés à votre téléphone (bien que la musique s’arrête si quelqu’un active le microphone).
Une mise à jour est disponible pour les AirPods 2, 3, Pro, Pro 2, Max, et certains casques Beats.
Il y a quelques mois, j’ai obtenu une paire d’AirPods 3. Après quelques instants d’émerveillement devant leur fonctionnement magique avec mon téléphone (Apple) et mon ordinateur portable (Apple), je suis retourné dans mon monde quotidien et ai redémarré l’ordinateur portable sous Linux. Alors que les AirPods fonctionnaient assez bien là aussi, ils refusaient désormais de se connecter à la fois à mon téléphone et à mon ordinateur portable.
Cela m’a intrigué : cela fonctionnait parfaitement lorsque j’utilisais macOS, mais cela ne fonctionnait pas avec Linux sur le même ordinateur portable. J’ai pensé qu’ils utilisaient probablement un tas de protocoles spécifiques à Apple pour obtenir toutes ces fonctionnalités sophistiquées que les autres écouteurs Bluetooth n’ont pas. J’ai donc décidé d’examiner de plus près et de réimplémenter quelques-uns d’entre eux, pour voir si je pouvais obtenir toutes les fonctionnalités sur Linux également.
Dans le cadre de tout cela (je parlerai des détails dans un autre article de blog), j’ai découvert une vulnérabilité dans la fonctionnalité “Fast Connect” qu’Apple utilise pour connecter les périphériques Bluetooth. Fast Connect est un protocole propriétaire et créatif d’Apple qui utilise de manière créative la fonction “ping” de la spécification Bluetooth. Son objectif principal semble être de réduire le temps nécessaire pour établir une connexion entre deux appareils Apple d’environ 1 seconde à environ 0,5 seconde.
La façon dont Fast Connect fonctionne est que, avant de s’authentifier avec l’appareil auquel vous vous connectez (c’est-à-dire les AirPods), les deux appareils échangent des messages de ping L2CAP (pensez à des pings normaux en réseau), et Apple place des messages de protocole dans la charge utile du ping. Avec ce tour de passe-passe, ils peuvent établir que les deux appareils parlent le protocole Fast Connect sans violer la spécification Bluetooth, puis passer à l’échange de 3 autres messages en aller-retour, négociant tout ce qui est nécessaire pour connecter pleinement les deux appareils.
Le fait que cela ne nécessite que 4 messages en tout en aller-retour est ce qui rend Fast Connect sophistiqué, car habituellement en Bluetooth, la phase de câblage des canaux individuels pour une connexion est une négociation assez complexe et implique l’envoi de divers descripteurs SDP qui décrivent quels protocoles/fonctionnalités les deux côtés supportent.
Il s’avère qu’Apple (très probablement) a oublié de faire certaines vérifications dans les chemins de code séparés qui implémentent Fast Connect. Certaines très importantes : les AirPods oublient de vérifier le niveau de sécurité de la connexion, c’est-à-dire “l’autre côté s’est-il réellement authentifié et a-t-il activé le chiffrement ?”
L’authentification et l’activation du chiffrement sont des étapes censées se produire après le message initial Fast Connect. Bien sûr, iOS et macOS le font parfaitement, mais si un attaquant décide de sauter cette étape lors de la connexion, les AirPods continueront joyeusement avec le Fast Connect. Cette étape d’authentification est quelque peu implicite si vous connectez les AirPods sans Fast Connect (c’est-à-dire la manière dont tous les appareils Bluetooth non Apple se connecteraient), et c’est probablement la raison pour laquelle ils ont oublié d’ajouter une vérification explicite à cet effet dans les chemins de code Fast Connect.
Donc oui, avec cette vulnérabilité, n’importe qui peut se connecter à vos AirPods, tant qu’il connaît l’adresse MAC Bluetooth fixe des AirPods. Cette adresse n’est pas exactement une information privée, elle est diffusée dans l’air lorsque votre appareil Bluetooth est en mode d’appairage, et elle peut être facilement obtenue dans l’air lorsque les AirPods sont actifs en utilisant du matériel comme le .
Une fois connecté, un attaquant peut faire tout ce qu’un appareil légitime peut faire, écouter le microphone, jouer de la musique, voir et mettre en pause la musique qui est actuellement diffusée depuis un autre appareil connecté, ou faire diverses choses que le protocole AAP peut faire (comme changer les paramètres, planter les AirPods en envoyant des messages mal formatés, et bien d’autres choses que je n’ai pas examinées).
Apple a publié diverses mises à jour du firmware avec des correctifs pour cette vulnérabilité au cours des derniers jours, donc si vous possédez des AirPods, vous devriez vous assurer que le firmware est à jour.
Bien sûr, tout cela est particulièrement problématique pour les personnes qui utilisent des AirPods sans appareils iOS ou macOS (bonjour aux utilisateurs Android, Windows ou Linux). C’est parce que les AirPods mettent à jour automatiquement leur firmware par eux-mêmes, mais seulement lorsqu’ils sont utilisés avec un iPhone ou un MacBook, donc les utilisateurs Android n’ont pas de moyen facile de mettre à jour leur firmware. Si vous êtes l’un de ces utilisateurs, vous pouvez vous rendre dans un Apple Store et ils mettront à jour le firmware pour vous.
Trouver et signaler tout cela a été tout un parcours. Je tiens à remercier tout particulièrement Jiska Classen de l’Université de Potsdam pour son aide avec un tas de questions sur le Bluetooth et des conseils sur le processus de divulgation.
Et bien sûr, un grand merci à toute la communauté Linux ! Sans des outils géniaux comme BlueZ, il n’aurait pas été possible de trouver aucun de ces problèmes.