WhatsApp Contact Enumeration Flaw: anatomía de una vulnerabilidad que expuso datos de 3.500 millones de usuarios
Durante años, WhatsApp ha presumido —con razón— de su cifrado punto a punto y su arquitectura robusta basada en el protocolo Signal. Sin embargo, incluso los gigantes que dominan la mensajería mundial pueden caer en vulnerabilidades aparentemente mundanas… pero con impacto masivo. En este caso, hablamos de un fallo clásico pero devastador: enumeración de contactos a escala planetaria.
Sí, ese tipo de bug que solemos ver en apps pequeñas, mal configuradas o en proyectos de estudiantes. Pero esta vez ocurrió en un sistema con más de 3.5B usuarios y respaldado por una de las infraestructuras más grandes del mundo...
A mediados de 2025 un grupo de investigadores demostró algo que en la comunidad de hacking ya sospechábamos desde hace años: el sistema de descubrimiento de contactos de WhatsApp (Contact Discovery) era, efectivamente, explotable y a una escala masiva y silenciosa. No hablamos de un leak puntual ni de un fallo lógico trivial, sino de un diseño que permitía enumerar prácticamente toda la base de usuarios de WhatsApp, correlacionar claves públicas, timestamps y metadatos del ecosistema de dispositivos.
Aunque Meta corrigió parte del problema a finales de 2025, el caso deja lecciones importantes —no solo sobre WhatsApp— sino sobre el riesgo sistémico de cualquier arquitectura que use números de teléfono como identificador principal.
En este artículo analizamos el origen del fallo, la técnica exacta usada por los investigadores, las implicaciones criptográficas y de privacidad, y por qué este incidente es mucho más grave de lo que algunos medios han comunicado.
El origen del problema: Contact Discovery + ausencia de rate-limiting
WhatsApp utiliza un mecanismo aparentemente inocuo: cuando instalas la app, sube un hash de tu agenda para comprobar qué números existen en su base de datos. Este sistema es antiguo, simple y compatible con su arquitectura distribuida… pero extremadamente sensible si no tiene una protección robusta contra abusos.
Lo que descubrieron los investigadores es que el backend de WhatsApp permitía realizar consultas arbitrarias de números sin imponer limitaciones reales de velocidad (rate limiting), volumen, origen y correlación de actividad.
Resultado: con un único servidor barato podían consultar más de 100 millones de números por hora. No se trata de reverse engineering del cliente o explotación de un bug local: es un fallo de diseño del servidor.
Enumeración masiva: cómo se obtenían los datos
Al abusar del endpoint de Contact Discovery, los investigadores pudieron recuperar:
1. Número de teléfono → existencia en WhatsApp
El dato más básico, pero extremadamente valioso. Crear un “phonebook global” de 3.500 millones de usuarios permite:
- alimentar campañas de phishing altamente dirigidas,
- validar números para SIM swapping,
- automatizar ataques de ingeniería social a escala masiva.
2. Claves públicas de WhatsApp
WhatsApp, desde su implementación de Signal Protocol, asocia a cada usuario varias claves públicas (Identity Key, Signed Pre-Key y One-Time Pre-Keys). El backend devolvía la información necesaria para iniciar sesiones cifradas, lo que permite:
- mapear qué claves están activas,
- ver cuándo se rotan,
- estudiar la salud y unicidad del ecosistema de claves.
Y aquí viene lo jugoso: miles de usuarios presentaban claves duplicadas entre sí. Algo que nunca debería ocurrir en Signal Protocol…
3. Reutilización de claves (Key Reuse)
La reutilización masiva de claves indica que:
- existen clientes no oficiales (mods, forks, automatizadores) que generan claves incorrectamente,
- o dispositivos comprometidos que restauran data sin regenerar claves,
- o bugs en implementaciones de terceros (Android forks, emuladores, etc.).
En un hallazgo más bizarro, varios números mostraban una public key con todos los bytes a cero. Esto no rompe directamente el cifrado (la identidad real se negocia con más elementos), pero demuestra el nivel de inconsistencia que había en el ecosistema.
Tener un dataset global de claves públicas es un tesoro criptográfico para cualquier analista defensivo… o atacante avanzado.
4. Timestamps y metadata “side-channel”
El endpoint devolvía además timestamps de última clave generada, correlación indirecta sobre cuándo un usuario ha reinstalado WhatsApp e indicios sobre si el usuario tiene “companion devices” (ej. WhatsApp Web o multidevice).
Con suficiente volumen, estos datos permiten modelar patrones de uso: edad de las cuentas, ciclos de reinstalación, regiones con mayor rotación de dispositivos, etc.
5. Perfil público (si estaba visible)
Para ~57% de los usuarios se podía obtener la foto de perfil, texto “About” y el estado si estaba definido.
Esto no es un bug en sí: WhatsApp permite hacerlo… pero no a escala planetaria. Un atacante puede construir un mapa global persona → número → foto → estado → metadatos. Perfecto para OSINT agresivo, doxxing o profiling automatizado.
El experimento real: scrapeo de 3.500 millones de cuentas
Los investigadores ejecutaron un ciclo de enumeración global desde principios de 2024 hasta verano de 2025. No fue un ataque rápido, sino una operación metódica de más de un año que reveló:
- el backend no los bloqueaba,
- el tráfico masivo pasaba desapercibido,
- no existía un sistema de detección de abuso efectivo,
- la infraestructura de WhatsApp no diferenciaba scrapers de clientes legítimos.
La escala del scraping logró reconstruir:
- el “universo completo” de claves públicas,
- 70 TB de datos crudos relacionados con el ecosistema cifrado,
- metadatos agregados útiles para fingerprinting global.
Impacto real: privacidad, seguridad, criptografía y vigilancia
Aunque Meta insistió en que “no se filtraron mensajes”, el impacto es mucho más profundo.
1. Riesgo de correlación masiva (Graph Attacks)
Con datos globales, puedes:
- agrupar usuarios por país y operador,
- identificar patrones de uso entre comunidades o colectivos,
- cruzar números con leaks anteriores de operadoras,
- detectar usuarios que activan un número temporalmente (burner SIMs).
2. Vigilancia a gran escala
En países donde WhatsApp está prohibido, restringido o vigilado, basta con comprobar qué números aparecen como usuarios activos. Sin necesidad de infectar dispositivos.
3. Ataques dirigidos a cuentas específicas
Sabiendo exactamente cuándo se rotan las claves y cuántos dispositivos tiene un usuario, un atacante sofisticado (ej. APTs) puede detectar:
- reinstalaciones recientes,
- cambios de dispositivo,
- periodos donde la superficie de ataque es mayor (ej. migración Android → iOS).
4. Criptoanálisis del ecosistema WhatsApp
Aunque el cifrado end-to-end sigue siendo seguro, la disponibilidad global de claves públicas permite:
- detectar implementaciones incorrectas,
- mapear dispositivos comprometidos,
- auditar la entropía real de las claves,
- identificar clusters anómalos (bots, clientes modificados, automatizaciones).
Para la comunidad defensiva es una mina de oro. Para la ofensiva también. Entonces...
¿Por qué Meta tardó tanto en solucionarlo?
El diseño original de WhatsApp priorizaba:
- compatibilidad global,
- bajo coste de infraestructura,
- latencia mínima para millones de dispositivos low-end.
Aplicar rate limiting serio, fingerprinting de clientes o proof-of-work en consultas implica:
- más latencia,
- más recursos,
- más lógica de validación,
- gastos operativos no triviales a escala de 3–4B usuarios.
Aun así, el fallo estuvo años explotable. Y no hay forma práctica de saber si grupos criminales, agencias estatales o actores privados lo usaron previamente.
Lo seguro es que ya no es explotable a gran escala, pero el daño histórico no puede deshacerse.
Lecciones aprendidas
- “Public doesn’t mean harmless”: Un endpoint que devuelve datos públicos puede ser gravísimo si no limita el ratio de consulta.
- Los sistemas basados en números de teléfono son un problema estructural: Mientras WhatsApp y otros servicios sigan usando números como “ID global”, la superficie de enumeración siempre existirá.
- La seguridad criptográfica no es suficiente si el ecosistema alrededor es débil: WhatsApp usa Signal Protocol, pero la seguridad del sistema se debilitó por:
- filtración de metadatos,
- key reuse,
- forked clients inseguros.
- Criptografía fuerte ≠ privacidad fuerte.
- La escala transforma un “minor bug” en un incident level global: La diferencia entre consultar un número y 10^9 es la diferencia entre “normal” y “catastrófico”.
- La observabilidad global es poder: Tener el mapa completo de claves públicas + timestamps del planeta es una herramienta poderosa, incluso sin mensajes.
Mitigaciones y el futuro
Meta reaccionó en 2025 aplicando: rate limiting real, heurísticas anti-abuso, límites por IP y controles adicionales en endpoints.
Pero la solución de fondo es otra: dejar de usar números como identidad universal. Signal introdujo usernames privados en 2024. WhatsApp ha empezado a hablar de algo similar, pero no está claro cuándo lo implementarán globalmente.
Conclusión
Esta vulnerabilidad es probablemente el dataset de perfilado global más grande jamás generado sin hackear servidores. No expuso mensajes, sí, pero reveló el talón de Aquiles de WhatsApp: su arquitectura basada en números y su diseño de Contact Discovery nunca estuvo preparado para atacantes modernos.
El "incidente" nos deja claro que:
- a veces los metadatos son más valiosos (y peligrosos) que el contenido,
- la criptografía no protege de fallos de diseño,
- y que cualquier servicio masivo sin limitaciones sólidas será explotado en silencio tarde o temprano.
En definitiva, para pentesters, analistas forenses, investigadores OSINT y red-teamers: este caso es un ejemplo perfecto de cómo un simple endpoint mal protegido puede convertirse en un arma global de enumeración, profiling y vigilancia.
Fuentes:
- A Simple WhatsApp Security Flaw Exposed 3.5 Billion Phone Numbers
Comentarios
Publicar un comentario