Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
whisperpair-poc-tool — Uno strumento di ricerca sulla sicurezza che identifica e dimostra la vulnerabilità CVE-2025-36911: Fast Pair Pairing Mode Bypass | Kitploit
Strumenti/GitHubGitHub/aalex954/whisperpair-poc-tool
RicognizioneSicurezza BluetoothAnalisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza WirelessPenetration TestingSicurezza HardwareRed Teaming
GitHubaalex954/whisperpair-poc-tool

whisperpair-poc-tool

Uno strumento di ricerca sulla sicurezza che identifica e dimostra la vulnerabilità CVE-2025-36911: Fast Pair Pairing Mode Bypass

76 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

WhisperPair-PoC-Tool e Ricerca

Un'analisi approfondita di CVE-2025-36911 e delle lacune di sicurezza nell'ecosistema Fast Pair di Google

Articolo del Blog

demo

Sommario Esecutivo

Google Fast Pair è stato progettato per rendere l'associazione Bluetooth senza attriti: tocca una notifica e sei connesso. Ma cosa succede quando quell'esperienza senza attriti diventa un rischio per la sicurezza? WhisperPair-PoC-Tool è uno strumento di ricerca sulla sicurezza che espone due classi critiche di vulnerabilità che colpiscono milioni di accessori Bluetooth: il bypass non autorizzato dell'associazione e lo sfruttamento del tracciamento della rete Find My Device.

Questo articolo descrive i dettagli tecnici interni di WhisperPair-PoC-Tool, le debolezze del protocollo che sfrutta e cosa questo significa per l'ecosistema degli accessori Bluetooth.


Indice

  1. Le Vulnerabilità
  2. Introduzione al Protocollo Fast Pair
  3. Come Funziona WhisperPair-PoC-Tool
  4. La Superficie d'Attacco
  5. Metodologia di Rilevamento
  6. Capacità di Exploitation
  7. Guida alla Mitigazione
  8. Considerazioni Etiche

Le Vulnerabilità

CVE-2025-36911: Bypass della Modalità di Associazione Fast Pair

La specifica Google Fast Pair afferma esplicitamente:

"Se il campo opzionale Public Key è presente: se il dispositivo non è in modalità di associazione, ignora la scrittura ed esci."

  • Google Fast Pair GATT Procedure Specification

Questo è il controllo di sicurezza critico. I dispositivi dovrebbero solo rispondere alle richieste di Key-Based Pairing quando l'utente ha messo esplicitamente il dispositivo in modalità di associazione (in genere tenendo premuto un pulsante). Questo garantisce l'intenzione dell'utente, così non puoi associare gli auricolari di qualcuno mentre li sta indossando.

Il Problema: Molti produttori saltano del tutto questo controllo. Elaborano le richieste di associazione indipendentemente dallo stato della modalità di associazione, consentendo:

  • Associazione silenziosa senza interazione da parte dell'utente
  • Dirottamento dell'accessorio in attacchi di prossimità
  • Violazioni della privacy connettendosi ai dispositivi delle vittime

Esposizione della Account Key di Find Hub

La rete Find My Device Network (FMDN) di Google consente di tracciare gli accessori Bluetooth tramite la rete di dispositivi Android basata sul contributo collettivo. Ciò richiede una Account Key, una chiave simmetrica di 16 byte che collega il dispositivo a un account Google.

Il Problema: La characteristic Account Key spesso accetta scritture senza autenticazione:

  • L'attaccante può sovrascrivere una Account Key esistente
  • L'integrazione Find My Device della vittima si interrompe
  • L'attaccante può tracciare il dispositivo usando la propria chiave
  • Questo persiste fino al ripristino delle impostazioni di fabbrica

Introduzione al Protocollo Fast Pair

Prima di addentrarci nell'exploitation, comprendiamo il flusso Fast Pair legittimo:

Fase di Advertisement

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                    BLE Advertisement                         │
├─────────────────────────────────────────────────────────────┤
│  Service UUID: 0xFE2C (Fast Pair)                           │
│  Service Data:                                               │
│    [Pairing Mode]   → 3 bytes: Model ID only                │
│    [Not Pairing]    → 4+ bytes: 0x00 + Account Key Filter   │
└─────────────────────────────────────────────────────────────┘

Il formato dell'advertisement rivela lo stato di associazione:

  • 3 byte = solo Model ID = Il dispositivo è rilevabile (modalità di associazione)
  • 4+ byte = byte di versione + dati Account Key = Non in modalità di associazione

Handshake di Key-Based Pairing

root@kitploit:~
Seeker (Phone)                              Provider (Accessory)
      │                                              │
      │───── GATT Connect ──────────────────────────>│
      │                                              │
      │───── Discover Services ─────────────────────>│
      │<──── Service: 0xFE2C ────────────────────────│
      │                                              │
      │───── Enable Notifications (0xFE2C1234) ─────>│
      │                                              │
      │───── Write Key-Based Pairing Request ───────>│
      │      [16-byte encrypted block]               │
      │      [64-byte ECDH Public Key] (optional)    │
      │                                              │
      │      ┌────────────────────────────────────┐  │
      │      │ SECURITY CHECK:                    │  │
      │      │ If Public Key present AND          │  │
      │      │ device NOT in pairing mode:        │  │
      │      │   → IGNORE and EXIT                │  │
      │      │ Else:                              │  │
      │      │   → Process request                │  │
      │      └────────────────────────────────────┘  │
      │                                              │
      │<──── Notification: Encrypted Response ───────│
      │      [Provider's BR/EDR Address]             │
      │                                              │
      │═══════ Bluetooth Classic Pairing ═══════════>│

La vulnerabilità si verifica quando i dispositivi saltano del tutto il riquadro "SECURITY CHECK".


Come Funziona WhisperPair-PoC-Tool

WhisperPair-PoC-Tool è uno strumento di ricerca sulla sicurezza basato su Python, costruito sulla libreria BLE Bleak. Si articola in diverse fasi:

Panoramica dell'Architettura

root@kitploit:~
┌────────────────────────────────────────────────────────────────┐
│                        WhisperPair-PoC-Tool                          │
├────────────────────────────────────────────────────────────────┤
│  CLI Layer                                                      │
│  ├── Argument parsing (--target-name, --scan-duration)         │
│  ├── TargetPolicy construction                                  │
│  └── REPL initialization                                        │
├────────────────────────────────────────────────────────────────┤
│  Discovery Engine                                               │
│  ├── BLE scanning via Bleak                                    │
│  ├── Advertisement parsing                                      │
│  ├── Protocol detection (Fast Pair, FMDN, Swift Pair)          │
│  └── Device fingerprinting (Model ID, OUI lookup)              │
├────────────────────────────────────────────────────────────────┤
│  Check Engines                                                  │
│  ├── FastPairCheckEngine (passive advertisement analysis)      │
│  ├── FastPairBypass (active CVE-2025-36911 testing)           │
│  ├── FindHubCheckEngine (Account Key status detection)         │
│  └── RiskScorer (composite vulnerability assessment)           │
├────────────────────────────────────────────────────────────────┤
│  Connection Manager                                             │
│  ├── GATT connect with MTU negotiation                         │
│  ├── Service/characteristic discovery                          │
│  ├── Read/Write/Notify operations                              │
│  └── Error handling and retry logic                            │
├────────────────────────────────────────────────────────────────┤
│  Exploitation Modules                                           │
│  ├── ring_device() - Trigger locator sound                     │
│  ├── set_account_key() - Write Account Key                     │
│  └── Response parsing (BR/EDR address extraction)              │
└────────────────────────────────────────────────────────────────┘

Componenti Principali

1. Discovery Engine (discovery.py)

Lo scanner utilizza i callback di rilevamento di Bleak per catturare gli advertisement BLE:

root@kitploit:~
async def _detection_callback(
    self, device: BLEDevice, advertisement_data: AdvertisementData
) -> None:
    """Process each detected BLE advertisement."""
    discovered = DiscoveredDevice(
        address=device.address,
        name=device.name or advertisement_data.local_name,
        rssi=advertisement_data.rssi,
        advertisement=self._convert_advertisement(advertisement_data),
        first_seen=datetime.now(UTC),
        last_seen=datetime.now(UTC),
    )
    self._devices[device.address] = discovered

Per ogni dispositivo, lo strumento estrae:

  • UUID dei servizi (rilevando Fast Pair 0xFE2C, FMDN 0xFD44, ecc.)
  • Dati del produttore (Google 0x00E0, Apple 0x004C)
  • Dati del servizio (analizzati per Model ID e stato di associazione)

2. Inferenza della Modalità di Associazione (fastpair.py)

La modalità di associazione viene determinata analizzando l'advertisement del dispositivo:

root@kitploit:~
def _analyze_service_data(self, evidence: FastPairEvidence) -> None:
    """Analyze Fast Pair service data to infer pairing mode."""
    data = evidence.service_data_bytes
    
    # 3 bytes = Model ID only = Pairing Mode (discoverable)
    if len(data) == 3:
        evidence.inferred_pairing_mode = PairingModeState.IN_PAIRING_MODE
        return
    
    # 4+ bytes with version 0x00 = Not in pairing mode
    if data[0] == 0x00:
        akd_byte = data[1]
        akd_type = akd_byte & 0x0F  # Lower 4 bits
        # Type 0x00 = Show UI, Type 0x02 = Hide UI
        # Both indicate NOT in pairing mode
        evidence.inferred_pairing_mode = PairingModeState.NOT_IN_PAIRING_MODE

Questo è cruciale: se un dispositivo risulta non essere in modalità di associazione e risponde comunque alla richiesta di associazione, è vulnerabile.

3. Rilevamento della Vulnerabilità (fastpair_attack.py)

Il test di vulnerabilità principale invia richieste di Key-Based Pairing e monitora le risposte:

root@kitploit:~
async def check_vulnerability(self, device: DiscoveredDevice) -> BypassCheckResult:
    """Test if device responds to pairing requests when not in pairing mode."""
    
    # Enable notifications to receive response
    await self.connection_manager.start_notify(
        KEY_BASED_PAIRING_CHAR,
        self._notification_handler,
    )
    
    # Build and send request (multiple strategies)
    for strategy in self.strategies:
        request, flags = self._build_strategy_request(device.address, strategy)
        await self.connection_manager.write_characteristic(
            KEY_BASED_PAIRING_CHAR,
            request,
        )
        
        # Wait for response
        try:
            await asyncio.wait_for(
                self._response_received.wait(),
                timeout=self.response_timeout,
            )
            # Response received = VULNERABLE
            return BypassCheckResult(result=BypassResult.VULNERABLE, ...)
        except asyncio.TimeoutError:
            # No response = Device correctly ignored request
            continue
    
    return BypassCheckResult(result=BypassResult.NOT_VULNERABLE, ...)

Lo strumento implementa molteplici strategie di richiesta perché dispositivi diversi rispondono a diverse combinazioni di flag:

4. Analisi delle Risposte

Quando un dispositivo vulnerabile risponde, lo strumento estrae l'indirizzo BR/EDR (Bluetooth Classic):

root@kitploit:~
def _parse_response(self, response_data: bytes) -> str | None:
    """Extract provider's BR/EDR address from response."""
    
    # Strategy 1: Standard response (type 0x01)
    if response_data[0] == 0x01:
        return self._extract_address(response_data, offset=1)
    
    # Strategy 2: Extended response (type 0x02)
    if response_data[0] == 0x02:
        addr_count = response_data[2]
        return self._extract_address(response_data, offset=3)
    
    # Strategy 3: Brute force pattern matching
    for offset in range(len(response_data) - 5):
        addr = self._extract_address(response_data, offset)
        if self._is_valid_mac(addr):
            return addr

Questo indirizzo BR/EDR potrebbe essere usato per avviare l'associazione Bluetooth Classic (anche se WhisperPair-PoC-Tool si ferma al rilevamento).


La Superficie d'Attacco

Cosa Rende Vulnerabili i Dispositivi?

La ricerca ha identificato errori di implementazione comuni:

1. Controllo Mancante della Modalità di Associazione

Il problema più comune: i produttori semplicemente non implementano il controllo:

root@kitploit:~
// VULNERABLE: No pairing mode check
void handle_kbp_write(uint8_t* data, size_t len) {
    if (len >= 80 && has_public_key(data)) {
        // Should check: if (!is_in_pairing_mode()) return;
        process_pairing_request(data);  // Processes regardless
    }
}

2. Scritture Non Protette della Account Key

La characteristic Account Key dovrebbe richiedere l'autenticazione:

root@kitploit:~
// VULNERABLE: No authentication required
void handle_account_key_write(uint8_t* key, size_t len) {
    if (len == 16) {
        store_account_key(key);  // Accepts any key from anyone
    }
}

// SECURE: Verify caller knows existing key
void handle_account_key_write_secure(uint8_t* encrypted_key, size_t len) {
    if (!verify_encrypted_with_existing_key(encrypted_key)) {
        return;  // Reject unauthorized writes
    }
    store_account_key(decrypt(encrypted_key));
}

3. Perdita di Dati tramite Advertisement

I dispositivi che pubblicizzano dati del servizio Fast Pair quando non sono in modalità di associazione rivelano:

  • Che supportano Fast Pair (identificazione della superficie d'attacco)
  • L'Account Key Filter (può essere usato per il fingerprinting del dispositivo)
  • Potenzialmente il loro Model ID (identifica il modello esatto del dispositivo)

Metodologia di Rilevamento

WhisperPair-PoC-Tool utilizza un approccio di rilevamento a livelli:

Livello 1: Analisi Passiva degli Advertisement

Nessuna connessione richiesta. Lo strumento analizza ciò che il dispositivo trasmette:

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Passive Checks                                              │
├─────────────────────────────────────────────────────────────┤
│  ✓ Fast Pair service UUID present (0xFE2C)                  │
│  ✓ FMDN service UUID present (0xFD44)                       │
│  ✓ Pairing mode inferred from service data length           │
│  ✓ Model ID extracted (when in pairing mode)                │
│  ✓ Account Key Filter detected (when not in pairing mode)   │
│  ✓ Address type analysis (static vs. random)                │
└─────────────────────────────────────────────────────────────┘

Result: "Device advertising Fast Pair data while NOT in pairing mode"
        → Potential gating violation (needs active test to confirm)

Risultato: "Il dispositivo pubblicizza dati Fast Pair mentre NON è in modalità di associazione" → Potenziale violazione del gating (richiede un test attivo per conferma)

Livello 2: Sondaggio GATT Attivo

Richiede una connessione. Lo strumento interagisce con i servizi GATT:

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Active Checks                                               │
├─────────────────────────────────────────────────────────────┤
│  1. Connect to device via BLE                               │
│  2. Discover Fast Pair service (0xFE2C)                     │
│  3. Locate Key-Based Pairing characteristic (0xFE2C1234)    │
│  4. Enable notifications                                     │
│  5. Write Key-Based Pairing request                         │
│  6. Wait for response (with timeout)                        │
│  7. Response received → VULNERABLE                          │
│     Timeout/Rejected → NOT VULNERABLE                       │
└─────────────────────────────────────────────────────────────┘

Livello 3: Scoring del Rischio

Viene calcolato un punteggio di rischio composito:

Livelli di Rischio:

  • BASSO (≤0): Nessun problema significativo rilevato
  • MEDIO (1-2): Alcuni segnali preoccupanti
  • ALTO (≥3): Molteplici vulnerabilità confermate

Capacità di Exploitation

WhisperPair-PoC-Tool include funzionalità di exploitation controllata per dimostrare l'impatto:

1. Squillo del Dispositivo (comando ring)

Attiva la characteristic FMDN Beacon Actions per riprodurre il suono di localizzazione:

OSCURATO PER LA PUBBLICAZIONE

Impatto: L'attaccante può molestare la vittima attivando ripetutamente il suono, oppure usarlo per localizzare un dispositivo che vuole rubare.

2. Manipolazione della Account Key (comando set account-key)

Scrive una nuova Account Key sul dispositivo:

OSCURATO PER LA PUBBLICAZIONE

Impatto:

  • Interrompe l'integrazione Find My Device della vittima
  • L'attaccante può tracciare il dispositivo usando la propria chiave nota
  • Recuperabile solo tramite ripristino delle impostazioni di fabbrica

Cosa Non È Implementato

WhisperPair-PoC-Tool si ferma intenzionalmente prima della piena exploitation:


Guida alla Mitigazione

Per i Produttori di Dispositivi

  1. Implementare il controllo della modalità di associazione:
root@kitploit:~
if (has_public_key(request) && !is_in_pairing_mode()) {
    return;  // Ignore request per spec
}
  1. Richiedere l'autenticazione per le scritture della Account Key:

    • Crittografare la nuova chiave con la chiave esistente
    • Verificare prima di memorizzare
  2. Minimizzare l'esposizione degli advertisement:

    • Pubblicizzare l'UUID Fast Pair solo quando si è in modalità di associazione
    • Utilizzare indirizzi rotanti quando possibile
  3. Meccanismo di aggiornamento del firmware:

    • Distribuire le correzioni ai dispositivi interessati sul campo

Per gli Utenti Finali

  1. Mantenere aggiornato il firmware degli accessori Bluetooth
  2. Ripristino delle impostazioni di fabbrica se sospetti una compromissione
  3. Prestare attenzione ai dispositivi che si associano automaticamente senza premere un pulsante
  4. Controllare periodicamente le impostazioni di Find My Device

Uso Previsto

Questo strumento è destinato a:

  • ✅ Ricercatori di sicurezza che valutano le implementazioni degli accessori
  • ✅ Ingegneri QA che testano i prodotti della propria azienda
  • ✅ Proprietari di dispositivi che controllano i propri accessori
  • ❌ NON per l'accesso non autorizzato ai dispositivi altrui

Conclusione

WhisperPair-PoC-Tool dimostra che l'esperienza Fast Pair "senza attriti" comporta compromessi di sicurezza che molti produttori non riescono ad affrontare. Il controllo della modalità di associazione è una singola condizione che separa un dispositivo sicuro da uno vulnerabile, eppure viene spesso omesso.

Il modello di fiducia di Fast Pair presuppone che i dispositivi applichino l'intenzione dell'utente. Quando non lo fanno, gli attaccanti ottengono associazione silenziosa, capacità di tracciamento e vettori di denial-of-service contro i dispositivi delle vittime.

Questo strumento mira ad aiutare l'ecosistema a identificare e correggere questi problemi, rendendo gli accessori Bluetooth più sicuri per tutti.


Riferimenti

  • Ricerca Originale WhisperPair
  • Specifica Google Fast Pair
  • CVE-2025-36911
  • Protocollo Find My Device Network
  • Specifica Core Bluetooth
  • Libreria BLE Bleak

WhisperPair-PoC-Tool è rilasciato esclusivamente per ricerca di sicurezza autorizzata. Non si assume alcuna responsabilità per l'uso improprio di questo strumento.

Scarica lo strumento
StrategiaFlagDescrizione
RAW_KBP0x11INITIATE_BONDING | EXTENDED_RESPONSE
WITH_PUBLIC_KEY0x11Richiesta da 80 byte con chiave pubblica ECDH
RETROACTIVE0x0AElude alcuni controlli dei produttori
EXTENDED0x10Per firmware di dispositivi più recenti
SegnalePunteggioSignificato
Violazione del gating (passiva)+2Pubblicizza FP quando non è in modalità di associazione
Bypass confermato (attivo)+2Ha risposto a KBP quando non era in modalità di associazione
FMDN senza Account Key+2Tracciabile tramite la rete Find My
Indirizzo BLE statico+1Il dispositivo è tracciabile in modo persistente
Rotazione dell'indirizzo osservata-1Comportamento che preserva la privacy
CapacitàImplementataMotivazione
Rilevamento delle vulnerabilità✅ SìScopo principale
Estrazione dell'indirizzo BR/EDR✅ SìRaccolta di prove
Associazione Bluetooth Classic❌ NoRichiede codice specifico per piattaforma
Dirottamento audio HFP❌ NoOltre lo scopo dello strumento BLE
Impianto persistente❌ NoCapacità dannosa