Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
WhisperPair — The official reference implementation & vulnerability verification of our attack WhisperPair (CVE-2025-36911) which affects Google's Fast Pair protocol. | Kitploit
Outils/GitHubGitHub/kuleuven-cosic/whisperpair
Bluetooth SecurityVulnerability AnalysisExploitationWireless SecurityPenetration TestingHardware & IoT SecurityPapers & ResearchLearning & Education
GitHubkuleuven-cosic/whisperpair

WhisperPair

The official reference implementation & vulnerability verification of our attack WhisperPair (CVE-2025-36911) which affects Google's Fast Pair protocol.

Voir le dépôt
8010il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

WhisperPair : Harness de test pour Google Fast Pair

Venue License: CC BY 4.0 OS Hardware Website

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.

Citation

La version complète de l'article est disponible ici. Si vous trouvez ce travail utile, veuillez envisager de citer l'article :

root@kitploit:~
@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},
}

Avertissement et utilisation responsable

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.

Setup et requis

[!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écutant bash build.sh puis bash 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.ts et ./toolkit-server/src/protocol.ts contiennent 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.

Prérequis

Une machine Linux avec BlueZ, Node.js et pnpm installés.

Node.js

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.sh

Si 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.

root@kitploit:~
# 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.

pnpm

Si Node.js v24 LTS est installé, vous devriez pouvoir activer pnpm en utilisant la commande suivante :

root@kitploit:~
corepack enable

Outils supplémentaires

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.

Installation rapide

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 :

root@kitploit:~
bash build.sh

Assurez-vous que le Bluetooth est activé :

root@kitploit:~
sudo rfkill unblock bluetooth

Ensuite, exécutez l'interface utilisateur et le serveur en utilisant :

root@kitploit:~
bash start.sh

L'interface utilisateur devrait maintenant être accessible à http://localhost:3000.

Exécution de l'interface utilisateur et du serveur sur des hôtes différents

Vous pouvez exécuter l'interface utilisateur et le serveur sur des hôtes différents.
Cela vous permet d'exécuter le serveur sur une machine Linux, tandis que l'interface utilisateur s'exécute localement.
Bien que cela ne soit pas recommandé, vous pouvez procéder comme suit :

  1. Assurez-vous que le répertoire toolkit-server est disponible sur la machine Linux
  2. Construisez toolkit-server en exécutant bash build.sh
  3. Mettez à jour le fichier .env dans le répertoire toolkit-ui afin que la variable SERVER_URL soit définie sur l'URL du serveur. Vous pouvez exécuter bash update_server_url.sh <VOTRE_URL> pour mettre à jour automatiquement le fichier .env.
  4. Construisez toolkit-ui en exécutant bash build.sh
  5. Démarrez toolkit-server en exécutant bash start.sh
  6. Démarrez toolkit-ui en exécutant bash start.sh

L'interface utilisateur devrait maintenant être accessible à http://localhost:3000.

Configuration manuelle du serveur

En alternative à l'utilisation des scripts build.sh et start.sh, vous pouvez également construire et démarrer le serveur manuellement. Des instructions détaillées sur la façon d'effectuer ces étapes se trouvent dans le README de toolkit-server

Configuration manuelle de l'interface utilisateur

En alternative à l'utilisation des scripts build.sh et start.sh, vous pouvez également construire et démarrer l'interface utilisateur manuellement. Des instructions détaillées sur la façon d'effectuer ces étapes se trouvent dans le README de toolkit-ui

Utilisation

Sélection d'un appareil

Vous devez disposer d'un accessoire compatible Fast Pair pour effectuer les attaques et utiliser la trousse à outils.
Nous avons évalué 25 appareils de 16 fabricants, présentés dans le tableau ci-dessous. Si vous possédez l'un de ces appareils et que son micrologiciel n'a pas été mis à jour depuis septembre 2025, vous pouvez reproduire nos résultats.

Vous pouvez également utiliser la trousse à outils pour évaluer un appareil que nous n'avons pas testé.
Cependant, vous pourriez rencontrer des erreurs inattendues en fonction de la fiabilité de la puce Bluetooth de l'appareil cible.

Lors de l'exécution des attaques, assurez-vous de savoir si l'appareil cible est en mode appairage ou non.
Certaines attaques nécessitent que l'appareil ne soit pas en mode appairage, et peuvent produire des faux positifs dans le cas contraire.
D'autres attaques nécessitent que l'appareil soit en mode appairage, et peuvent ne pas fonctionner autrement.

Si vous cherchez des appareils compatibles Fast Pair, vous pouvez utiliser la liste des IDs de modèle pour voir tous les appareils certifiés Fast Pair.

Message d'avertissement « Model not included in test set »

L'interface utilisateur affichera un message d'avertissement si vous avez sélectionné un appareil qui ne faisait pas partie de notre ensemble de test.
Ce message est basé sur l'ID de modèle, qui peut varier selon les couleurs et les régions pour un même appareil.
Par exemple, un casque Sony WH-1000XM6 bleu utilise un ID de modèle différent d'un casque Sony WH-1000XM6 noir.

Comme il est probable que ces appareils aient le même micrologiciel (même si leurs IDs de modèle sont différents), vous pouvez ignorer ce message d'avertissement en toute sécurité.

Message d'erreur « No device with Model ID was found »

En raison d'une limitation de débit plus stricte imposée par l'API gRPC Fast Pair, certaines requêtes de données de modèle peuvent renvoyer des réponses réussies avec des corps vides. Cela entraînera l'affichage de « No device with Model ID was found ».
Si vous êtes certain que l'ID de modèle que vous avez saisi existe, veuillez patienter quelques minutes et réessayer.

[!NOTE] Les données de modèle pour les appareils de notre ensemble de test sont incluses dans ce dépôt et seront lues depuis un cache. L'évaluation de ces appareils ne nécessite pas d'appel API au service gRPC. Notez que les appareils d'une même série peuvent ne pas avoir les mêmes IDs de modèle. Voir le message d'avertissement « Model not included in test set » pour plus d'informations.

Manuel de l'interface utilisateur

L'interface utilisateur de la trousse à outils

L'interface utilisateur tentera de se connecter au serveur au démarrage.
Lorsque la connexion est réussie, un message « Connected to the server » s'affichera dans le coin inférieur droit de l'écran.

L'évaluation de la vulnérabilité d'un appareil nécessite trois étapes : découvrir l'appareil, définir son ID de modèle et exécuter une attaque.

1. Découverte des appareils

Le harness analyse en continu les appareils Bluetooth Low Energy, qui sont affichés sur le côté gauche de l'écran. Les appareils annonçant des données Fast Pair sont affichés en haut. Les détails de l'appareil sont affichés sur le côté droit de l'écran après avoir cliqué sur « Select » sur un appareil.

2. Définition d'un ID de modèle

Pour exécuter les tests décrits dans l'article, un ID de modèle doit être défini pour un appareil. Si l'appareil expose la caractéristique GATT Fast Pair, un bouton « Read Model ID » sera affiché dans les détails de l'appareil. Cliquer sur ce bouton tentera de lire l'ID de modèle.

Notez que de nombreux appareils n'implémentent pas correctement cette caractéristique, renvoyant des IDs de modèle invalides. Vous pouvez également définir manuellement l'ID de modèle de l'appareil en appuyant sur le bouton « Set Model ID » et en saisissant une valeur manuellement. Les appareils qui ont été évalués lors de nos tests peuvent être sélectionnés, ou une valeur personnalisée peut être saisie. Une liste complète des appareils compatibles Fast Pair est incluse à la racine de ce dépôt.

Une fois qu'un ID de modèle a été défini, les métadonnées de l'appareil seront affichées dans les détails de l'appareil.

3. Exécution d'une attaque

Pour exécuter une attaque, cliquez sur le bouton « Attack » dans le volet des détails de l'appareil. Trois attaques sont implémentées : le contrôle du prédicat d'état d'appairage, la réutilisation de nonce et une attaque par courbe invalide. Si vous êtes déjà connecté à un appareil, cocher la case « Reconnect » déconnectera et reconnectera l'appareil avant d'effectuer l'attaque.

Le contrôle du prédicat d'état d'appairage offre quelques options de configuration supplémentaires :

  • Switch back : tente de revenir à l'hôte d'origine en utilisant la fonctionnalité Audio Switch, si prise en charge.
  • Bond : effectue un appairage BR/EDR si le prédicat d'état d'appairage n'est pas appliqué.
  • Write account key : écrit une clé de compte (codée en dur) après la procédure d'appairage.

Pendant qu'une attaque est en cours, les journaux seront affichés en temps réel dans l'interface utilisateur. Une fois l'attaque terminée, sa durée sera affichée.

Gestion des tâches

Parfois, une attaque ou un appairage peut prendre plus de temps que prévu.
Vous pouvez annuler une attaque ou un appairage en cliquant sur le bouton « Cancel » dans la boîte de dialogue correspondante. Si vous avez rechargé l'interface utilisateur pendant une attaque ou un appairage, vous pouvez utiliser le gestionnaire de tâches pour annuler à la place.

Dans le coin supérieur droit de l'écran, le deuxième bouton en partant de la droite affichera l'état de la tâche. Si aucune tâche n'est active, il affichera « No active tasks ». Sinon, il indiquera « Task in progress ». Pour annuler une tâche, cliquez sur le bouton « Task in progress », puis appuyez sur le bouton « Cancel ».

Si le serveur se bloque en raison d'une tâche en attente qui ne peut pas être annulée, essayez de réinitialiser l'adaptateur Bluetooth.

[!NOTE] Les tâches peuvent prendre jusqu'à 20 secondes pour être annulées.

Dépannage

Dans certains cas, l'adaptateur Bluetooth peut rester « bloqué » dans un « mauvais état ». La solution la plus simple à ce problème est de réinitialiser l'adaptateur Bluetooth. Pour effectuer une réinitialisation, ouvrez le menu de dépannage en appuyant sur l'icône de clé à molette dans le coin supérieur droit de l'écran. Ensuite, sélectionnez « Reset BLE adapter » et confirmez la réinitialisation en cliquant sur « Reset » dans la boîte de dialogue.

Si une erreur fatale se produit et que le serveur doit s'arrêter, le script start.sh redémarrera automatiquement le serveur.

Dans les scénarios avec de nombreux appareils BLE à proximité, le serveur peut se fermer de manière inattendue en raison d'une erreur D-Bus. Cela se produit très rarement, et le script ./start.sh devrait redémarrer automatiquement le serveur si cela se produit.

Résultats et appareils évalués

Si vous cherchez des appareils compatibles Fast Pair, vous pouvez utiliser la liste des IDs de modèle pour voir tous les appareils certifiés Fast Pair.

Remerciements

Ce travail a été soutenu par le gouvernement flamand dans le cadre du programme de recherche en cybersécurité avec le numéro de subvention VOEWICS02.

Télécharger l’outil
FabricantNom de l'appareilID de modèleVulnérable au détournementTemps de détournement (s)Vulnérable à la réutilisation de nonceVulnérable à l'attaque par courbe invalide
AppleBeats Solo Buds6980580NonOuiNon
GooglePixel Buds Pro 212934265Oui6.89NonNon
JabraElite 8 Active3778746Oui32.01NonNon
JBLTune Beam3293323Oui6.91Uniquement dans la même sessionNon
MarshallMOTIF II A.N.C.15473012Oui9.49OuiNon
NothingEar (a)8625818Oui38.80Uniquement dans la même sessionNon
OnePlusNord Buds Pro 313394952Oui10.19Uniquement dans la même sessionNon
HPPoly VFree 6015984097NonNonNon
RedmiBuds 5 Pro11155060Oui8.32Uniquement dans la même sessionNon
SoundcoreLiberty 4 NC5409858Oui15.27OuiNon
SonyWF-1000XM512499626Oui9.43OuiNon
Audio-TechnicaATH-M20xBT13285048NonUniquement dans la même sessionNon
BoseQuietComfort Ultra5723549NonNonNon
JBLLive 775 NC14502233Oui7.62Uniquement dans la même sessionNon
MarshallMajor V12915160Oui11.70Uniquement dans la même sessionNon
SonosAce V7340495NonNonNon
SonyWH-1000XM413386638Oui9.69OuiNon
SonyWH-1000XM513911719Oui12.38OuiNon
SonyWH-1000XM66360443Oui12.94Uniquement dans la même sessionNon
SonyWH-CH720N16003068Oui7.46OuiNon
Bang & OlufsenBeosound A12431472NonNonNon
JabraSpeak2 55 UC9888885NonNonNon
JBLClip 51917389Oui36.19OuiNon
JBLFlip 67278954NonNonNon
LogitechWonderboom 411575855Oui11.96Uniquement dans la même sessionNon