
L'implémentation de référence officielle et la vérification de vulnérabilité de notre attaque WhisperPair (CVE-2025-36911) qui affecte le protocole Fast Pair de Google.
Un outil pratique pour tester si les appareils Google Fast Pair sont vulnérables aux attaques d'appairage, de liaison de compte et de protocole.
Ce dépôt fournit le harness de test WhisperPair, un outil pour évaluer la sécurité des appareils Google Fast Pair. Il est conçu à la fois pour les chercheurs et les praticiens afin de reproduire nos résultats et de tester leurs propres appareils.
Pour un aperçu du projet, des appareils concernés et du contexte supplémentaire, veuillez consulter notre site web.
Ce dépôt contient également l'artefact pour l'article One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol, présenté à IEEE S&P 2026.
La version complète de l'article est disponible ici. Si vous trouvez ce travail utile, veuillez envisager de citer l'article :
@inproceedings{whisperpair2026,
title = {One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol},
author = {Duttagupta, Sayon and Wyns, Seppe and Antonijević, Nikola and Singelée, Dave and Preneel, Bart},
booktitle = {2026 IEEE Symposium on Security and Privacy (S\&P)},
year = {2026},
}
Le matériel est fourni pour permettre la reproductibilité de notre évaluation et pour aider les chercheurs à effectuer des tests défensifs. Utilisez ce matériel uniquement pour des recherches de sécurité autorisées et des vérifications défensives sur des appareils que vous possédez ou pour lesquels vous avez l'autorisation explicite de tester. Étant donné que le code de ce dépôt démontre des vulnérabilités dans les accessoires grand public, ne l'utilisez pas pour attaquer des appareils tiers sans autorisation écrite claire. Les auteurs ont réalisé toutes les expériences sur des appareils appartenant à l'équipe du projet ou donnés avec consentement éclairé. En exécutant ces outils, vous acceptez de les utiliser uniquement pour des recherches défensives, la reproduction de nos résultats ou l'auto-test de vos appareils.
[!NOTE] Résumé : assurez-vous de disposer d'une machine Linux avec un adaptateur Bluetooth et que Node.js (LTS) et pnpm sont installés.
Vous pouvez exécuter l'interface utilisateur et le serveur sur la même machine en exécutantbash build.shpuisbash start.sh.
Ce dépôt contient un harness de test pour évaluer si un appareil cible implémente correctement certaines exigences de sécurité de Google Fast Pair. Le harness peut tester si le prédicat d'état d'appairage est correctement implémenté, si les messages avec des nonces réutilisés sont rejetés et si l'appareil est vulnérable à une attaque par courbe invalide. Le harness se compose d'un serveur backend et d'une interface utilisateur web frontend.
[!NOTE] Si vous cherchez l'implémentation des attaques spécifiquement :
./toolkit-server/src/fast-pair-service.tset./toolkit-server/src/protocol.tscontiennent l'implémentation des attaques et du protocole Fast Pair.
La trousse à outils se compose de deux composants : le serveur et l'interface utilisateur.
Le serveur doit être exécuté sur un système Linux et a été testé avec un Raspberry Pi 4.
L'interface utilisateur est un frontend Next.js qui peut être utilisé pour contrôler le serveur, et peut fonctionner partout où Node.js est pris en charge.
L'interface utilisateur doit pouvoir se connecter au serveur via le réseau.
Nous avons testé le harness avec Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8), BlueZ version 5.82.
Une machine Linux avec BlueZ, Node.js et pnpm installés.
Nous recommandons vivement d'utiliser la version actuelle de support à long terme (LTS) de Node.js (v24.14.0).
Nous avons vérifié que la trousse à outils fonctionne avec cette version.
Les versions plus anciennes peuvent fonctionner jusqu'à la v18, mais les versions plus anciennes planteront probablement ou produiront des résultats inattendus.
nvm.shSi vous utilisez nvm pour gérer vos versions installées de Node.js, vous devez vous assurer que root a également accès à la version de Node.js gérée par nvm.
Comme expliqué dans ce post StackOverflow, vous devrez peut-être créer un nouveau lien symbolique.
# Source - https://stackoverflow.com/a/40078875
# Posté par SimpleJ, modifié par la communauté. Voir le post 'Timeline' pour l'historique des modifications
# Consulté le 30/03/2026, Licence - CC BY-SA 4.0
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
[!NOTE] Pour exécuter le serveur, vous devez uniquement lier
node.
Si Node.js est également installé via un gestionnaire de paquets externe, la version disponible pour sudo peut être différente de celle utilisée par nvm.
Vous pouvez le vérifier en comparant les sorties de node -v et sudo node -v.
Bien que nous recommandions Node.js LTS v24, le serveur devrait fonctionner correctement jusqu'à la v18.
pnpmSi Node.js v24 LTS est installé, vous devriez pouvoir activer pnpm en utilisant la commande suivante :
corepack enable
Le harness nécessite également hcitool et l2ping.
Selon votre distribution Linux, hcitool peut ne pas être disponible. Vous devrez peut-être installer bluez-deprecated-tools.
Il reste préinstallé sur la dernière version de Raspberry Pi OS Lite au moment de la rédaction. (1er octobre 2025)
Si l'adaptateur Bluetooth n'est pas allumé, le serveur tentera d'utiliser rfkill pour l'allumer.
Tester l'extension Audio Switch nécessite rfcomm.
[!NOTE] Le serveur vérifiera la disponibilité de ces outils au démarrage. Des informations supplémentaires sur les fonctionnalités qui peuvent ne pas être disponibles seront affichées dans la console.
Reproduire les résultats nécessite un accès physique à un appareil vulnérable.
Attention : la plupart des fabricants ont publié des mises à jour logicielles pour WhisperPair, vous aurez donc peut-être besoin d'appareils avec un micrologiciel obsolète.
Voir Sélection d'un appareil pour plus d'informations sur les appareils que nous avons utilisés dans notre évaluation.
Si vous souhaitez exécuter l'interface utilisateur et le serveur sur la même machine (Linux), vous pouvez utiliser les scripts build.sh et start.sh.
Commencez par installer les dépendances requises et construire les composants en utilisant :
bash build.sh
Assurez-vous que le Bluetooth est activé :