
The official reference implementation & vulnerability verification of our attack WhisperPair (CVE-2025-36911) which affects Google's Fast Pair protocol.
Ein praktisches Werkzeug, um zu testen, ob Google Fast Pair Geräte anfällig für Pairing-, Konto-Bindungs- und Protokollangriffe sind.
Dieses Repository stellt die WhisperPair-Testumgebung bereit, ein Werkzeug zur Bewertung der Sicherheit von Google Fast Pair Geräten. Es ist sowohl für Forscher als auch für Praktiker konzipiert, um unsere Ergebnisse zu reproduzieren und eigene Geräte zu testen.
Eine Übersicht über das Projekt, betroffene Geräte und zusätzliche Informationen finden Sie auf unserer Website.
Dieses Repository enthält auch das Artefakt für das Paper One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol, das auf der IEEE S&P 2026 erschienen ist.
Die vollständige Version des Papers finden Sie hier. Wenn Sie diese Arbeit nützlich finden, bitten wir Sie, das Paper zu zitieren:
@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},
}
Die Materialien werden bereitgestellt, um die Reproduzierbarkeit unserer Evaluierung zu ermöglichen und Forschern bei der Durchführung defensiver Tests zu helfen. Verwenden Sie diese Materialien nur für autorisierte Sicherheitsforschung und defensive Überprüfungen auf Geräten, die Ihnen gehören oder für die Sie ausdrückliche Erlaubnis zum Testen haben. Da der Code in diesem Repository Schwachstellen in Verbraucherzubehör demonstriert, verwenden Sie ihn nicht, um Drittgeräte ohne klare schriftliche Erlaubnis anzugreifen. Die Autoren führten alle Experimente auf Geräten durch, die dem Projektteam gehören oder mit informierter Einwilligung gespendet wurden. Durch die Ausführung dieser Tools stimmen Sie zu, sie nur für defensive Forschung, Reproduktion unserer Ergebnisse oder Selbsttests von Geräten zu verwenden.
[!NOTE] Zusammenfassung: Stellen Sie sicher, dass Sie einen Linux-Rechner mit Bluetooth-Adapter haben und Node.js (LTS) sowie pnpm installiert sind.
Sie können sowohl die UI als auch den Server auf demselben Rechner ausführen, indem Siebash build.shgefolgt vonbash start.shausführen.
Dieses Repository enthält eine Testumgebung zur Bewertung, ob ein Zielgerät bestimmte Sicherheitsanforderungen von Google Fast Pair korrekt implementiert. Die Umgebung kann testen, ob das Pairing-Status-Prädikat korrekt implementiert ist, ob Nachrichten mit wiederverwendeten Nonces zurückgewiesen werden und ob das Gerät anfällig für einen Invalid-Curve-Angriff ist. Die Umgebung besteht aus einem Backend-Server und einer Frontend-Web-UI.
[!NOTE] Wenn Sie speziell nach der Implementierung der Angriffe suchen:
./toolkit-server/src/fast-pair-service.tsund./toolkit-server/src/protocol.tsenthalten die Implementierung der Angriffe und des Fast Pair Protokolls.
Das Toolkit besteht aus zwei Komponenten: dem Server und der UI.
Der Server muss auf einem Linux-System ausgeführt werden und wurde mit einem Raspberry Pi 4 getestet.
Die UI ist ein Next.js-Frontend, das zur Steuerung des Servers verwendet werden kann, und kann überall dort ausgeführt werden, wo Node.js unterstützt wird.
Die UI muss über das Netzwerk eine Verbindung zum Server herstellen können.
Wir haben die Umgebung mit Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8), BlueZ Version 5.82 getestet.
Ein Linux-Rechner mit installiertem BlueZ, Node.js und pnpm.
Wir empfehlen dringend die aktuelle Long-Term-Support (LTS)-Version von Node.js (v24.14.0) zu verwenden.
Wir haben sichergestellt, dass das Toolkit mit dieser Version funktioniert.
Ältere Versionen funktionieren möglicherweise bis v18, aber ältere Versionen werden wahrscheinlich abstürzen oder unerwartete Ergebnisse liefern.
nvm.shWenn Sie nvm zur Verwaltung Ihrer installierten Node.js-Versionen verwenden, müssen Sie sicherstellen, dass auch root Zugriff auf die von nvm verwaltete Node.js-Version hat.
Wie in diesem StackOverflow-Beitrag erläutert, müssen Sie möglicherweise einen neuen symbolischen Link erstellen.
# Source - https://stackoverflow.com/a/40078875
# Posted by SimpleJ, modified by community. See post 'Timeline' for change history
# Retrieved 2026-03-30, License - 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] Um den Server auszuführen, müssen Sie nur
nodeverlinken.
Wenn Node.js auch mit einem externen Paketmanager installiert ist, kann die für sudo verfügbare Version von der von nvm verwendeten abweichen.
Sie können dies überprüfen, indem Sie die Ausgaben von node -v und sudo node -v vergleichen.
Wir empfehlen Node.js LTS v24, aber der Server sollte bis v18 korrekt funktionieren.
pnpmWenn Node.js v24 LTS installiert ist, sollten Sie pnpm mit dem folgenden Befehl aktivieren können:
corepack enable
Die Testumgebung benötigt außerdem hcitool und l2ping.
Je nach Linux-Distribution ist hcitool möglicherweise nicht verfügbar. Sie müssen möglicherweise bluez-deprecated-tools installieren.
Es bleibt zum Zeitpunkt der Erstellung dieses Dokuments (1. Oktober 2025) auf der neuesten Raspberry Pi OS Lite Version vorinstalliert.
Wenn der Bluetooth-Adapter nicht eingeschaltet ist, versucht der Server, ihn mit rfkill einzuschalten.
Das Testen der Audio Switch-Erweiterung erfordert rfcomm.
[!NOTE] Der Server überprüft beim Start die Verfügbarkeit dieser Werkzeuge.
Zusätzliche Informationen zu Funktionen, die möglicherweise nicht verfügbar sind, werden in der Konsole angezeigt.
Zur Reproduktion der Ergebnisse benötigen Sie physischen Zugang zu einem anfälligen Gerät.
Beachten Sie, dass die meisten Hersteller Software-Updates für WhisperPair veröffentlicht haben, sodass Sie möglicherweise Geräte mit veralteter Firmware benötigen.
Weitere Informationen zu den von uns in unserer Evaluierung verwendeten Geräten finden Sie unter Auswahl eines Geräts.
Wenn Sie die UI und den Server auf demselben (Linux-)Rechner ausführen möchten, können Sie die Skripte build.sh und start.sh verwenden.
Installieren Sie zunächst die erforderlichen Abhängigkeiten und erstellen Sie die Komponenten mit:
bash build.sh
Stellen Sie sicher, dass Bluetooth aktiviert ist:
sudo rfkill unblock bluetooth
Führen Sie dann die UI und den Server mit:
bash start.sh
Die UI sollte nun unter http://localhost:3000 erreichbar sein.
Sie können die UI und den Server auf verschiedenen Hosts ausführen.
Dadurch können Sie den Server auf einem Linux-Rechner ausführen, während die UI lokal läuft.
Obwohl dies nicht empfohlen wird, können Sie wie folgt vorgehen:
toolkit-server auf dem Linux-Rechner verfügbar ist.toolkit-server, indem Sie bash build.sh ausführen..env-Datei im Verzeichnis toolkit-ui, sodass die Variable SERVER_URL auf die Server-URL gesetzt ist.
Sie können bash update_server_url.sh <YOUR_URL> ausführen, um die .env-Datei automatisch zu aktualisieren.toolkit-ui, indem Sie bash build.sh ausführen.toolkit-server mit bash start.sh.toolkit-ui mit bash start.sh.Die UI sollte nun unter http://localhost:3000 erreichbar sein.
Alternativ zur Verwendung der Skripte build.sh und start.sh können Sie den Server auch manuell erstellen und starten.
Detaillierte Anweisungen zur Durchführung dieser Schritte finden Sie in der toolkit-server README
Alternativ zur Verwendung der Skripte build.sh und start.sh können Sie die UI auch manuell erstellen und starten.
Detaillierte Anweisungen zur Durchführung dieser Schritte finden Sie in der toolkit-ui README
Sie benötigen ein Fast Pair-kompatibles Zubehör, um die Angriffe durchzuführen und das Toolkit zu verwenden. Wir haben 25 Geräte von 16 Herstellern evaluiert, die in der folgenden Tabelle aufgeführt sind. Wenn Sie eines dieser Geräte besitzen und dessen Firmware seit September 2025 nicht aktualisiert wurde, können Sie unsere Ergebnisse reproduzieren.
Sie können das Toolkit auch verwenden, um ein Gerät zu evaluieren, das wir nicht getestet haben. Allerdings können je nach Zuverlässigkeit des Bluetooth-Chipsatzes des Zielgeräts unerwartete Fehler auftreten.
Stellen Sie bei der Durchführung der Angriffe sicher, dass Sie wissen, ob sich das Zielgerät im Pairing-Modus befindet oder nicht. Einige Angriffe erfordern, dass sich das Gerät nicht im Pairing-Modus befindet, andernfalls können sie falsch-positive Ergebnisse liefern. Andere Angriffe erfordern, dass sich das Gerät im Pairing-Modus befindet, und funktionieren andernfalls nicht.
Wenn Sie nach Fast Pair-kompatiblen Geräten suchen, können Sie die Modell-ID-Liste verwenden, um alle Fast Pair-zertifizierten Geräte anzuzeigen.
Modell nicht im Testsatz enthalten WarnmeldungDie UI zeigt eine Warnmeldung an, wenn Sie ein Gerät ausgewählt haben, das nicht in unserem Testsatz enthalten ist. Diese Meldung wird basierend auf der Modell-ID angezeigt, die je nach Farbe und Region bei demselben Gerät variieren kann. Beispielsweise verwendet ein blaues Sony WH-1000XM6 Headset eine andere Modell-ID als ein schwarzes Sony WH-1000XM6 Headset.
Da es wahrscheinlich ist, dass diese Geräte dieselbe Firmware haben (auch wenn ihre Modell-IDs unterschiedlich sind), können Sie diese Warnmeldung getrost ignorieren.
Kein Gerät mit Modell-ID <number> gefunden FehlermeldungAufgrund der strengeren Ratenbegrenzung der Fast Pair gRPC-API können einige Anfragen nach Modelldaten erfolgreiche Antworten mit leerem Körper zurückgeben.
Dies führt dazu, dass die UI Kein Gerät mit Modell-ID <number> gefunden anzeigt.
Wenn Sie sicher sind, dass die eingegebene Modell-ID existiert, warten Sie bitte einige Minuten und versuchen Sie es erneut.
[!NOTE] Modelldaten für die Geräte in unserem Testsatz sind in diesem Repository enthalten und werden aus einem Cache gelesen. Die Evaluierung dieser Geräte erfordert keinen API-Aufruf an den gRPC-Dienst. Beachten Sie, dass Geräte derselben Serie möglicherweise nicht dieselben Modell-IDs haben. Weitere Informationen finden Sie unter Modell nicht im Testsatz enthalten Warnmeldung.

Die UI versucht beim Start, eine Verbindung zum Server herzustellen. Bei erfolgreicher Verbindung wird in der unteren rechten Ecke des Bildschirms die Meldung „Verbunden mit dem Server“ angezeigt.
Die Evaluierung, ob ein Gerät anfällig ist, umfasst drei Schritte: Erkennen des Geräts, Festlegen seiner Modell-ID und Durchführen eines Angriffs.
Die Testumgebung scannt kontinuierlich nach Bluetooth Low Energy-Geräten, die auf der linken Seite des Bildschirms angezeigt werden. Geräte, die Fast Pair-Daten aussenden, werden oben angezeigt. Gerätedetails werden auf der rechten Seite des Bildschirms angezeigt, nachdem Sie auf einem Gerät auf „Auswählen“ geklickt haben.
Um die im Paper beschriebenen Tests durchzuführen, muss eine Modell-ID für ein Gerät festgelegt werden. Wenn das Gerät die Fast Pair GATT-Charakteristik bereitstellt, wird in den Gerätedetails ein Button „Modell-ID lesen“ angezeigt. Wenn Sie auf diesen Button klicken, wird versucht, die Modell-ID zu lesen.
Beachten Sie, dass viele Geräte diese Charakteristik nicht korrekt implementieren und ungültige Modell-IDs zurückgeben. Alternativ können Sie die Modell-ID des Geräts manuell festlegen, indem Sie auf den Button „Modell-ID festlegen“ klicken und manuell einen Wert eingeben. Geräte, die während unserer Tests evaluiert wurden, können ausgewählt werden, oder es kann ein benutzerdefinierter Wert eingegeben werden. Eine vollständige Liste der Fast Pair-kompatiblen Geräte ist im Stammverzeichnis dieses Repositories enthalten.
Sobald eine Modell-ID festgelegt wurde, werden Metadaten über das Gerät in den Gerätedetails angezeigt.
Um einen Angriff durchzuführen, klicken Sie im Bereich Gerätedetails auf den Button „Angriff“. Es gibt drei implementierte Angriffe: Pairing-Status-Prädikat-Durchsetzung, Nonce-Wiederverwendung und einen Invalid-Curve-Angriff. Wenn Sie bereits mit einem Gerät verbunden sind, wird durch Aktivieren des Kontrollkästchens „Erneut verbinden“ die Verbindung zum Gerät getrennt und wiederhergestellt, bevor der Angriff durchgeführt wird.
Die Prüfung der Pairing-Status-Prädikat-Durchsetzung bietet einige zusätzliche Konfigurationsoptionen:
Während eines Angriffs werden Protokolle in Echtzeit in der UI angezeigt. Nach Abschluss des Angriffs wird seine Dauer angezeigt.
Manchmal kann ein Angriff oder Pairing länger dauern als erwartet. Sie können einen Angriff oder ein Pairing abbrechen, indem Sie im entsprechenden Dialog auf den Button „Abbrechen“ klicken. Wenn Sie die UI während eines Angriffs oder Pairings neu geladen haben, können Sie stattdessen die Aufgabenverwaltung zum Abbrechen verwenden.
Auf der rechten oberen Seite des Bildschirms zeigt der zweite Button von rechts den Aufgabenstatus an. Wenn keine Aufgaben aktiv sind, wird „Keine aktiven Aufgaben“ angezeigt. Andernfalls lautet die Anzeige „Aufgabe läuft“. Um eine Aufgabe abzubrechen, klicken Sie auf den Button „Aufgabe läuft“ und drücken Sie dann den Button „Abbrechen“.
Wenn der Server aufgrund einer ausstehenden Aufgabe hängt, die nicht abgebrochen werden kann, versuchen Sie, den Bluetooth-Adapter zurückzusetzen.
[!NOTE] Das Abbrechen von Aufgaben kann bis zu 20 Sekunden dauern.
In einigen Fällen kann der Bluetooth-Adapter in einem „schlechten Zustand“ stecken bleiben. Die einfachste Lösung für dieses Problem ist das Zurücksetzen des Bluetooth-Adapters. Führen Sie einen Reset durch, indem Sie das Fehlerbehebungsmenü über das Schraubenschlüssel-Symbol oben rechts auf dem Bildschirm öffnen. Wählen Sie dann „BLE-Adapter zurücksetzen“ und bestätigen Sie den Reset, indem Sie im Dialog auf „Zurücksetzen“ klicken.
Wenn ein schwerwiegender Fehler auftritt und der Server heruntergefahren werden muss, startet das Skript start.sh den Server automatisch neu.
In Szenarien mit vielen nahegelegenen BLE-Geräten kann der Server aufgrund eines D-Bus-Fehlers unerwartet geschlossen werden.
Dies kommt sehr selten vor, und das Skript ./start.sh sollte den Server in diesem Fall automatisch neu starten.
Wenn Sie nach Fast Pair-kompatiblen Geräten suchen, können Sie die Modell-ID-Liste verwenden, um alle Fast Pair-zertifizierten Geräte anzuzeigen.
Diese Arbeit wurde von der flämischen Regierung im Rahmen des Cybersecurity-Forschungsprogramms mit der Fördernummer VOEWICS02 unterstützt.
| Hersteller | Gerätename | Modell-ID | Anfällig für Hijack | Zeit bis Hijack (s) | Anfällig für Nonce-Wiederverwendung | Anfällig für Invalid-Curve-Angriff |
|---|
| Apple | Beats Solo Buds | 6980580 | Nein | Ja | Nein | |
| Pixel Buds Pro 2 | 12934265 | Ja | 6.89 | Nein | Nein | |
| Jabra | Elite 8 Active | 3778746 | Ja | 32.01 | Nein | Nein |
| JBL | Tune Beam | 3293323 | Ja | 6.91 | Nur in derselben Sitzung | Nein |
| Marshall | MOTIF II A.N.C. | 15473012 | Ja | 9.49 | Ja | Nein |
| Nothing | Ear (a) | 8625818 | Ja | 38.80 | Nur in derselben Sitzung | Nein |
| OnePlus | Nord Buds Pro 3 | 13394952 | Ja | 10.19 | Nur in derselben Sitzung | Nein |
| HP | Poly VFree 60 | 15984097 | Nein | Nein | Nein | |
| Redmi | Buds 5 Pro | 11155060 | Ja | 8.32 | Nur in derselben Sitzung | Nein |
| Soundcore | Liberty 4 NC | 5409858 | Ja | 15.27 | Ja | Nein |
| Sony | WF-1000XM5 | 12499626 | Ja | 9.43 | Ja | Nein |
| Audio-Technica | ATH-M20xBT | 13285048 | Nein | Nur in derselben Sitzung | Nein | |
| Bose | QuietComfort Ultra | 5723549 | Nein | Nein | Nein | |
| JBL | Live 775 NC | 14502233 | Ja | 7.62 | Nur in derselben Sitzung | Nein |
| Marshall | Major V | 12915160 | Ja | 11.70 | Nur in derselben Sitzung | Nein |
| Sonos | Ace V | 7340495 | Nein | Nein | Nein | |
| Sony | WH-1000XM4 | 13386638 | Ja | 9.69 | Ja | Nein |
| Sony | WH-1000XM5 | 13911719 | Ja | 12.38 | Ja | Nein |
| Sony | WH-1000XM6 | 6360443 | Ja | 12.94 | Nur in derselben Sitzung | Nein |
| Sony | WH-CH720N | 16003068 | Ja | 7.46 | Ja | Nein |
| Bang & Olufsen | Beosound A1 | 2431472 | Nein | Nein | Nein | |
| Jabra | Speak2 55 UC | 9888885 | Nein | Nein | Nein | |
| JBL | Clip 5 | 1917389 | Ja | 36.19 | Ja | Nein |
| JBL | Flip 6 | 7278954 | Nein | Nein | Nein | |
| Logitech | Wonderboom 4 | 11575855 | Ja | 11.96 | Nur in derselben Sitzung | Nein |