
L'implementazione di riferimento ufficiale e la verifica della vulnerabilità del nostro attacco WhisperPair (CVE-2025-36911) che interessa il protocollo Fast Pair di Google.
Uno strumento pratico per testare se i dispositivi Google Fast Pair sono vulnerabili ad attacchi di associazione, binding dell'account e attacchi a livello di protocollo.
Questo repository fornisce il banco di prova WhisperPair, uno strumento per valutare la sicurezza dei dispositivi Google Fast Pair. È progettato sia per ricercatori che per professionisti per riprodurre i nostri risultati e testare i propri dispositivi.
Per una panoramica del progetto, dei dispositivi interessati e del contesto aggiuntivo, visita il nostro sito web.
Questo repository contiene anche l'artefatto per l'articolo One Tap to Hijack Them All: A Security Analysis of the Google Fast Pair Protocol, presentato a IEEE S&P 2026.
La versione completa dell'articolo è disponibile qui. Se trovi utile questo lavoro, considera di citare l'articolo:
@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},
}
I materiali sono forniti per consentire la riproducibilità della nostra valutazione e per assistere i ricercatori nell'esecuzione di test difensivi. Utilizza questi materiali solo per ricerche di sicurezza autorizzate e verifica difensiva su dispositivi di tua proprietà o per i quali hai esplicito permesso di test. Poiché il codice in questo repository dimostra vulnerabilità negli accessori di consumo, non utilizzarlo per attaccare dispositivi di terze parti senza un'esplicita autorizzazione scritta. Gli autori hanno condotto tutti gli esperimenti su dispositivi di proprietà del team di progetto o donati con consenso informato. Eseguendo questi strumenti accetti di utilizzarli solo per ricerca difensiva, riproduzione dei nostri risultati o autotest dei dispositivi.
[!NOTE] Riepilogo: assicurati di avere una macchina Linux con un adattatore Bluetooth e che Node.js (LTS) e pnpm siano installati.
Puoi eseguire sia l'interfaccia utente che il server sulla stessa macchina eseguendobash build.shseguito dabash start.sh.
Questo repository contiene un banco di prova per valutare se un dispositivo target implementa correttamente determinati requisiti di sicurezza di Google Fast Pair. Il banco di prova può testare se il predicato dello stato di associazione è implementato correttamente, se i messaggi con nonce riutilizzati vengono rifiutati e se il dispositivo è vulnerabile a un attacco di curva invalida. Il banco di prova è composto da un server backend e un'interfaccia utente web frontend.
[!NOTE] Se stai cercando l'implementazione degli attacchi in particolare:
./toolkit-server/src/fast-pair-service.tse./toolkit-server/src/protocol.tscontengono l'implementazione degli attacchi e del protocollo Fast Pair.
Il toolkit è composto da due componenti: il server e l'interfaccia utente.
Il server deve essere eseguito su un sistema Linux ed è stato testato con un Raspberry Pi 4.
L'interfaccia utente è un frontend Next.js che può essere utilizzato per controllare il server e può essere eseguito ovunque Node.js sia supportato.
L'interfaccia utente deve essere in grado di connettersi al server tramite rete.
Abbiamo testato il banco di prova con Raspberry Pi OS Lite (64-bit) (6.12.47+rpt-rpi-v8), BlueZ versione 5.82.
Una macchina Linux con BlueZ, Node.js e pnpm installati.
Raccomandiamo vivamente di utilizzare la versione Long-Term-Support (LTS) corrente di Node.js (v24.14.0).
Abbiamo verificato che il toolkit funzioni con questa versione.
Versioni precedenti potrebbero funzionare fino alla v18, ma versioni più vecchie molto probabilmente si bloccheranno o produrranno risultati imprevisti.
nvm.shSe usi nvm per gestire le versioni installate di Node.js, devi assicurarti che anche root abbia accesso alla versione di Node.js gestita da nvm.
Come spiegato in questo post di StackOverflow, potresti aver bisogno di creare un nuovo collegamento simbolico.
# Fonte - https://stackoverflow.com/a/40078875
# Pubblicato da SimpleJ, modificato dalla community. Vedi post 'Timeline' per cronologia modifiche
# Recuperato 2026-03-30, Licenza - 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] Per eseguire il server, devi solo collegare
node.
Se Node.js è installato anche tramite un gestore di pacchetti esterno, la versione disponibile per sudo potrebbe essere diversa da quella usata da nvm.
Puoi verificarlo confrontando l'output di node -v e sudo node -v.
Sebbene raccomandiamo Node.js LTS v24, il server dovrebbe essere in grado di funzionare correttamente fino alla v18.
pnpmSe Node.js v24 LTS è installato, dovresti essere in grado di abilitare pnpm usando il seguente comando:
corepack enable
Il banco di prova richiede anche hcitool e l2ping.
A seconda della distribuzione Linux, hcitool potrebbe non essere disponibile. Potresti dover installare bluez-deprecated-tools.
Al momento della scrittura, rimane preinstallato nell'ultima versione di Raspberry Pi OS Lite. (1 ottobre 2025)
Se l'adattatore Bluetooth non è acceso, il server tenterà di utilizzare rfkill per accenderlo.
Testare l'estensione Audio Switch richiede rfcomm.
[!NOTE] Il server verificherà la disponibilità di questi strumenti all'avvio. Ulteriori informazioni sulle funzionalità che potrebbero non essere disponibili verranno visualizzate nella console.
Per riprodurre i risultati è necessario l'accesso fisico a un dispositivo vulnerabile.
Tieni presente che la maggior parte dei venditori ha rilasciato aggiornamenti software per WhisperPair, quindi potresti aver bisogno di dispositivi con firmware obsoleto.
Vedi Selezione di un dispositivo per maggiori informazioni sui dispositivi che abbiamo utilizzato nella nostra valutazione.
Se desideri eseguire l'interfaccia utente e il server sulla stessa macchina (Linux), puoi utilizzare gli script build.sh e start.sh.
Per prima cosa, installa le dipendenze richieste e costruisci i componenti usando:
bash build.sh
Assicurati che il Bluetooth sia abilitato:
sudo rfkill unblock bluetooth