Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
whisperpair-poc-tool — Una herramienta de investigación de seguridad que identifica y demuestra la CVE-2025-36911: Fast Pair Pairing Mode Bypass vulnerabilidad | Kitploit
Herramientas/GitHubGitHub/aalex954/whisperpair-poc-tool
ReconocimientoSeguridad BluetoothAnálisis de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad InalámbricaPruebas de PenetraciónSeguridad de HardwareRed Teaming
GitHubaalex954/whisperpair-poc-tool

whisperpair-poc-tool

Una herramienta de investigación de seguridad que identifica y demuestra la CVE-2025-36911: Fast Pair Pairing Mode Bypass vulnerabilidad

73hace 7 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
Compartir

WhisperPair-PoC-Tool e Investigación

Un análisis profundo de CVE-2025-36911 y las brechas de seguridad en el ecosistema Fast Pair de Google

Blog Post

demo

Resumen Ejecutivo

Google Fast Pair fue diseñado para hacer que el emparejamiento Bluetooth sea fluido: toca una notificación y estás conectado. Pero, ¿qué sucede cuando esa experiencia fluida se convierte en una responsabilidad de seguridad? WhisperPair-PoC-Tool es una herramienta de investigación de seguridad que expone dos clases críticas de vulnerabilidades que afectan a millones de accesorios Bluetooth: elusión de emparejamiento no autorizada y explotación del seguimiento de la Red de Encontrar Dispositivo.

Esta publicación detalla los internos técnicos de WhisperPair-PoC-Tool, las debilidades del protocolo que explota y lo que esto significa para el ecosistema de accesorios Bluetooth.


Tabla de Contenidos

  1. Las Vulnerabilidades
  2. Introducción al Protocolo Fast Pair
  3. Cómo Funciona WhisperPair-PoC-Tool
  4. La Superficie de Ataque
  5. Metodología de Detección
  6. Capacidades de Explotación
  7. Guía de Corrección
  8. Consideraciones Éticas

Las Vulnerabilidades

CVE-2025-36911: Bypass del Modo de Emparejamiento de Fast Pair

La especificación de Google Fast Pair establece explícitamente:

"Si el campo opcional de Clave Pública está presente: si el dispositivo no está en modo de emparejamiento, ignora la escritura y sal."

  • Especificación del Procedimiento GATT de Google Fast Pair

Esta es la puerta de seguridad crítica. Los dispositivos solo deben responder a solicitudes de Emparejamiento Basado en Clave cuando el usuario ha puesto explícitamente el dispositivo en modo de emparejamiento (generalmente manteniendo presionado un botón). Esto asegura la intención del usuario, para que no puedas emparejarte con los auriculares de alguien mientras los está usando.

El Problema: Muchos fabricantes omiten esta verificación por completo. Procesan solicitudes de emparejamiento independientemente del estado del modo de emparejamiento, lo que permite:

  • Emparejamiento silencioso sin interacción del usuario
  • Secuestro de accesorios en ataques de proximidad
  • Violaciones de privacidad al conectarse a los dispositivos de las víctimas

Exposición de la Clave de Cuenta de Find Hub

La Red de Encontrar Dispositivo de Google (FMDN) permite rastrear accesorios Bluetooth a través de la red de dispositivos Android obtenida de forma colaborativa. Esto requiere una Clave de Cuenta, una clave simétrica de 16 bytes que vincula el dispositivo a una cuenta de Google.

El Problema: La característica de Clave de Cuenta a menudo acepta escrituras sin autenticación:

  • Un atacante puede sobrescribir una Clave de Cuenta existente
  • La integración de Encontrar Dispositivo de la víctima se rompe
  • El atacante puede rastrear el dispositivo usando su propia clave
  • Esto persiste hasta un restablecimiento de fábrica

Introducción al Protocolo Fast Pair

Antes de sumergirnos en la explotación, entendamos el flujo legítimo de Fast Pair:

Fase de Anuncio

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│                    Anuncio BLE                               │
├─────────────────────────────────────────────────────────────┤
│  UUID de Servicio: 0xFE2C (Fast Pair)                       │
│  Datos de Servicio:                                          │
│    [Modo de Emparejamiento]  → 3 bytes: Solo ID de Modelo   │
│    [Sin Emparejamiento]     → 4+ bytes: 0x00 + Filtro de    │
│                                        Clave de Cuenta       │
└─────────────────────────────────────────────────────────────┘

El formato del anuncio revela el estado de emparejamiento:

  • 3 bytes = Solo ID de Modelo = El dispositivo es detectable (modo de emparejamiento)
  • 4+ bytes = Byte de versión + Datos de Clave de Cuenta = No en modo de emparejamiento

Intercambio de Emparejamiento Basado en Clave

root@kitploit:~
Buscador (Teléfono)                            Proveedor (Accesorio)
      │                                              │
      │───── Conexión GATT ─────────────────────────>│
      │                                              │
      │───── Descubrir Servicios ───────────────────>│
      │<──── Servicio: 0xFE2C ────────────────────────│
      │                                              │
      │───── Habilitar Notificaciones (0xFE2C1234) ─>│
      │                                              │
      │───── Escribir Solicitud de Emparejamiento ──>│
      │      [bloque cifrado de 16 bytes]            │
      │      [Clave Pública ECDH de 64 bytes] (opc) │
      │                                              │
      │      ┌────────────────────────────────────┐  │
      │      │ VERIFICACIÓN DE SEGURIDAD:         │  │
      │      │ Si Clave Pública presente Y        │  │
      │      │ dispositivo NO en modo emparej.:   │  │
      │      │   → IGNORAR y SALIR                │  │
      │      │ Sino:                              │  │
      │      │   → Procesar solicitud             │  │
      │      └────────────────────────────────────┘  │
      │                                              │
      │<──── Notificación: Respuesta Cifrada ────────│
      │      [Dirección BR/EDR del Proveedor]        │
      │                                              │
      │═══════ Emparejamiento Bluetooth Clásico ════>│

La vulnerabilidad ocurre cuando los dispositivos omiten completamente el recuadro de "VERIFICACIÓN DE SEGURIDAD".


Cómo Funciona WhisperPair-PoC-Tool

WhisperPair-PoC-Tool es una herramienta de investigación de seguridad basada en Python construida sobre la biblioteca BLE Bleak. Opera en varias fases:

Visión General de la Arquitectura

root@kitploit:~
┌────────────────────────────────────────────────────────────────┐
│                     WhisperPair-PoC-Tool                       │
├────────────────────────────────────────────────────────────────┤
│  Capa CLI                                                      │
│  ├── Análisis de argumentos (--target-name, --scan-duration)   │
│  ├── Construcción de TargetPolicy                              │
│  └── Inicialización de REPL                                    │
├────────────────────────────────────────────────────────────────┤
│  Motor de Descubrimiento                                       │
│  ├── Escaneo BLE mediante Bleak                                │
│  ├── Análisis de anuncios                                      │
│  ├── Detección de protocolo (Fast Pair, FMDN, Swift Pair)     │
│  └── Huella digital del dispositivo (ID de Modelo, búsqueda   │
│      OUI)                                                      │
├────────────────────────────────────────────────────────────────┤
│  Motores de Verificación                                       │
│  ├── FastPairCheckEngine (análisis pasivo de anuncios)        │
│  ├── FastPairBypass (prueba activa CVE-2025-36911)           │
│  ├── FindHubCheckEngine (detección de estado de Clave de      │
│  │   Cuenta)                                                   │
│  └── RiskScorer (evaluación compuesta de vulnerabilidades)    │
├────────────────────────────────────────────────────────────────┤
│  Gestor de Conexión                                            │
│  ├── Conexión GATT con negociación MTU                        │
│  ├── Descubrimiento de servicio/característica                │
│  ├── Operaciones de Lectura/Escritura/Notificación            │
│  └── Manejo de errores y lógica de reintento                  │
├────────────────────────────────────────────────────────────────┤
│  Módulos de Explotación                                        │
│  ├── ring_device() - Activar sonido de localización           │
│  ├── set_account_key() - Escribir Clave de Cuenta             │
│  └── Análisis de respuesta (extracción de dirección BR/EDR)   │
└────────────────────────────────────────────────────────────────┘

Componentes Principales

1. Motor de Descubrimiento (discovery.py)

El escáner usa callbacks de detección de Bleak para capturar anuncios 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

Para cada dispositivo, la herramienta extrae:

  • UUIDs de servicio (detectando Fast Pair 0xFE2C, FMDN 0xFD44, etc.)
  • Datos del fabricante (Google 0x00E0, Apple 0x004C)
  • Datos de servicio (analizados para ID de Modelo y estado de emparejamiento)

2. Inferencia del Modo de Emparejamiento (fastpair.py)

El modo de emparejamiento se determina analizando el anuncio 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

Esto es crucial: si se determina que un dispositivo no está en modo de emparejamiento, y aún así responde a la solicitud de emparejamiento, es vulnerable.

3. Detección de Vulnerabilidad (fastpair_attack.py)

La prueba de vulnerabilidad central envía solicitudes de Emparejamiento Basado en Clave y monitorea las respuestas:

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, ...)

La herramienta implementa múltiples estrategias de solicitud porque diferentes dispositivos responden a diferentes combinaciones de banderas:

4. Análisis de Respuesta

Cuando un dispositivo vulnerable responde, la herramienta extrae la dirección BR/EDR (Bluetooth Clásico):

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

Esta dirección BR/EDR podría usarse para iniciar el emparejamiento Bluetooth Clásico (aunque WhisperPair-PoC-Tool se detiene en la detección).


La Superficie de Ataque

¿Qué Hace que los Dispositivos Sean Vulnerables?

La investigación identificó fallos de implementación comunes:

1. Falta de Verificación del Modo de Emparejamiento

El problema más común: los fabricantes simplemente no implementan la verificación:

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. Escrituras no Protegidas de la Clave de Cuenta

La característica de Clave de Cuenta debería requerir autenticación:

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. Filtración de Anuncios

Los dispositivos que anuncian datos de servicio de Fast Pair cuando no están en modo de emparejamiento revelan:

  • Que soportan Fast Pair (identificación de superficie de ataque)
  • Filtro de Clave de Cuenta (puede usarse para huella digital del dispositivo)
  • Potencialmente su ID de Modelo (identifica el modelo exacto del dispositivo)

Metodología de Detección

WhisperPair-PoC-Tool utiliza un enfoque de detección en capas:

Capa 1: Análisis Pasivo de Anuncios

No requiere conexión. La herramienta analiza lo que el dispositivo transmite:

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Verificaciones Pasivas                                      │
├─────────────────────────────────────────────────────────────┤
│  ✓ UUID de servicio Fast Pair presente (0xFE2C)            │
│  ✓ UUID de servicio FMDN presente (0xFD44)                 │
│  ✓ Modo de emparejamiento inferido de la longitud de datos  │
│    de servicio                                              │
│  ✓ ID de Modelo extraído (cuando está en modo emparej.)    │
│  ✓ Filtro de Clave de Cuenta detectado (cuando NO está en  │
│    modo de emparejamiento)                                  │
│  ✓ Análisis de tipo de dirección (estática vs. aleatoria)   │
└─────────────────────────────────────────────────────────────┘

Resultado: "Dispositivo anunciando datos Fast Pair mientras NO está en modo de emparejamiento"
        → Posible violación de compuerta (necesita prueba activa para confirmar)

Capa 2: Sondéo GATT Activo

Requiere conexión. La herramienta interactúa con los servicios GATT:

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Verificaciones Activas                                      │
├─────────────────────────────────────────────────────────────┤
│  1. Conectar al dispositivo vía BLE                         │
│  2. Descubrir servicio Fast Pair (0xFE2C)                   │
│  3. Localizar característica de Emparejamiento Basado en    │
│     Clave (0xFE2C1234)                                      │
│  4. Habilitar notificaciones                                 │
│  5. Escribir solicitud de Emparejamiento Basado en Clave    │
│  6. Esperar respuesta (con tiempo de espera)                │
│  7. Respuesta recibida → VULNERABLE                         │
│     Tiempo de espera/Rechazado → NO VULNERABLE              │
└─────────────────────────────────────────────────────────────┘

Capa 3: Puntuación de Riesgo

Se calcula una puntuación de riesgo compuesta:

Niveles de Riesgo:

  • BAJO (≤0): No se detectaron problemas significativos
  • MEDIO (1-2): Algunas señales preocupantes
  • ALTO (≥3): Múltiples vulnerabilidades confirmadas

Capacidades de Explotación

WhisperPair-PoC-Tool incluye características de explotación controladas para demostrar el impacto:

1. Sonido del Dispositivo (comando ring)

Activa la característica de Acciones de Baliza FMDN para reproducir el sonido de localización:

REDACTADO PARA PUBLICACIÓN

Impacto: Un atacante puede acosar a la víctima activando repetidamente el sonido, o usarlo para localizar un dispositivo que quiera robar.

2. Manipulación de la Clave de Cuenta (comando set account-key)

Escribe una nueva Clave de Cuenta en el dispositivo:

REDACTADO PARA PUBLICACIÓN

Impacto:

  • Rompe la integración de Encontrar Dispositivo de la víctima
  • El atacante puede rastrear el dispositivo usando su clave conocida
  • Solo se puede recuperar mediante un restablecimiento de fábrica

Lo que No Está Implementado

WhisperPair-PoC-Tool se detiene intencionalmente antes de la explotación completa:


Guía de Corrección

Para Fabricantes de Dispositivos

  1. Implementar la verificación del modo de emparejamiento:
root@kitploit:~
if (has_public_key(request) && !is_in_pairing_mode()) {
    return;  // Ignore request per spec
}
  1. Requerir autenticación para escrituras de Clave de Cuenta:

    • Cifrar la nueva clave con la clave existente
    • Verificar antes de almacenar
  2. Minimizar la exposición del anuncio:

    • Anunciar solo el UUID de Fast Pair cuando esté en modo de emparejamiento
    • Usar direcciones rotativas cuando sea posible
  3. Mecanismo de actualización de firmware:

    • Enviar correcciones a los dispositivos afectados en el campo

Para Usuarios Finales

  1. Mantener el firmware actualizado en los accesorios Bluetooth
  2. Restablecer de fábrica si sospechas de un compromiso
  3. Tener precaución con dispositivos que se emparejan automáticamente sin presionar un botón
  4. Revisar la configuración de Encontrar Dispositivo periódicamente

Uso Previsto

Esta herramienta está destinada para:

  • ✅ Investigadores de seguridad que evalúan implementaciones de accesorios
  • ✅ Ingenieros de control de calidad que prueban productos de su empresa
  • ✅ Propietarios de dispositivos que verifican sus propios accesorios
  • ❌ NO para acceso no autorizado a los dispositivos de otros

Conclusión

WhisperPair-PoC-Tool demuestra que la experiencia "fluida" de Fast Pair conlleva concesiones de seguridad que muchos fabricantes no logran abordar. La verificación del modo de emparejamiento es un solo condicional que separa un dispositivo seguro de uno vulnerable, pero con frecuencia se omite.

El modelo de confianza de Fast Pair asume que los dispositivos impondrán la intención del usuario. Cuando no lo hacen, los atacantes obtienen emparejamiento silencioso, capacidades de rastreo y vectores de denegación de servicio contra los dispositivos de las víctimas.

Esta herramienta busca ayudar al ecosistema a identificar y corregir estos problemas, haciendo que los accesorios Bluetooth sean más seguros para todos.


Referencias

  • Investigación Original de WhisperPair
  • Especificación de Google Fast Pair
  • CVE-2025-36911
  • Protocolo de Red de Encontrar Dispositivo
  • Especificación Principal de Bluetooth
  • Biblioteca BLE Bleak

WhisperPair-PoC-Tool se publica solo para investigación de seguridad autorizada. No se asume ninguna responsabilidad por el mal uso de esta herramienta.

Descargar herramienta
EstrategiaBanderasDescripción
RAW_KBP0x11INITIATE_BONDING | EXTENDED_RESPONSE
WITH_PUBLIC_KEY0x11Solicitud de 80 bytes con clave pública ECDH
RETROACTIVE0x0AEvita algunas verificaciones del fabricante
EXTENDED0x10Para firmware de dispositivo más reciente
SeñalPuntuaciónSignificado
Violación de compuerta (pasivo)+2Anunciando FP cuando no está en modo de emparejamiento
Bypass confirmado (activo)+2Respondió a KBP cuando no estaba en modo de emparejamiento
FMDN sin Clave de Cuenta+2Rastreable a través de la red Encontrar Dispositivo
Dirección BLE estática+1El dispositivo es persistentemente rastreable
Rotación de dirección observada-1Comportamiento que preserva la privacidad
CapacidadImplementadoRazón
Detección de vulnerabilidades✅ SíPropósito principal
Extracción de dirección BR/EDR✅ SíRecopilación de evidencia
Emparejamiento Bluetooth Clásico❌ NoRequiere código específico de plataforma
Secuestro de audio HFP❌ NoMás allá del alcance de la herramienta BLE
Implante persistente❌ NoCapacidad maliciosa