Galaxus informó de grabaciones de cámaras para bebés accesibles libremente; The Verge informó de aproximadamente 1,1 millones de dispositivos Meari afectados. Para mí, la conclusión es aleccionadora: un inicio de sesión no protege la habitación del bebé si la plataforma que hay detrás no separa correctamente los mensajes, las imágenes y las claves de cada dispositivo. Timmy no resuelve todos los problemas de seguridad del mundo. Sin embargo, sus secretos críticos para el contenido multimedia y el emparejamiento no están alojados en una plataforma de cámaras en la nube.
Qué parece haber fallado en el caso de Meari
Los informes públicos describen una plataforma de marca blanca. Muchas marcas visibles vendían cámaras que dependían de la misma infraestructura de Meari/CloudEdge. Por eso importa este incidente: cuando una plataforma compartida define mal un límite de autorización, el resultado no es una sola cámara vulnerable, sino una exposición a nivel de toda la flota.
El patrón descrito va más allá de las contraseñas predeterminadas débiles. Las fuentes hablan de mensajes MQTT sin controles suficientes de suscripción por dispositivo, URL de imágenes accesibles públicamente, ocultación débil de imágenes y claves estáticas o extraíbles de la app. Es un fallo de plataforma: la infraestructura podía revelar datos que nunca debieron estar disponibles para otra cuenta.
| Riesgo de las cámaras en la nube | El diseño alternativo de Timmy |
|---|---|
| El backend almacena o distribuye eventos de imágenes. | Timmy no mantiene un archivo en la nube con imágenes de la habitación del bebé; el contenido multimedia se transmite en directo mediante WebRTC. |
| Un bróker o contenedor de almacenamiento debe autorizar correctamente cada dispositivo. | Firestore solo transporta datos de emparejamiento y señalización; los datos SDP/ICE se cifran antes de escribirse. |
| Las claves estáticas pueden afectar a toda una flota. | Cada emparejamiento crea en los dispositivos su propia clave derivada mediante ECDH con P-256. |
| Una ruta de relé puede confundirse con acceso a los medios. | TURN reenvía paquetes SRTP cifrados, pero no recibe las claves del contenido multimedia. |
Cómo crea Timmy el secreto
El código de cuatro caracteres de Timmy no pretende ser el secreto. En el código fuente solo sirve como punto de encuentro: la app deriva una meetingKey a partir de él para que ambos dispositivos puedan encontrar el mismo intercambio de claves públicas en Firestore. Las claves ECDH privadas nunca salen de los dispositivos.
Después, ambos dispositivos calculan el mismo secreto compartido P-256 ECDH. La clave de emparejamiento se deriva localmente. El SAS de dos dígitos se deriva del secreto compartido y de las dos claves públicas ordenadas. Si se manipula ese intercambio de claves, los dispositivos muestran números distintos, lo que indica a los usuarios que no deben confirmar el emparejamiento.
sequenceDiagram
participant Baby as Baby device
participant Firestore as Firestore meeting point
participant Parent as Parent device
participant Turn as TURN relay
Baby->>Baby: Generate P-256 ECDH keypair
Parent->>Parent: Generate P-256 ECDH keypair
Baby->>Firestore: Write public key only under meetingKey
Parent->>Firestore: Write public key only under meetingKey
Firestore-->>Baby: Parent public key
Firestore-->>Parent: Baby public key
Baby->>Baby: Compute sharedSecret + SAS
Parent->>Parent: Compute sharedSecret + SAS
Baby-->>Parent: Humans compare SAS on both screens
Baby->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
Parent->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
Baby-)Turn: WebRTC media as DTLS/SRTP packets
Turn-)Parent: Relay forwards encrypted packets
Note over Turn: TURN sees network metadata, not media keys
Cadena de seguridad simplificada de Timmy: Firestore sirve como punto de encuentro y transporte de señalización; TURN actúa únicamente como relé; el contenido multimedia permanece cifrado mediante WebRTC.
Por qué el contenido multimedia de WebRTC no puede interceptarse sin que se note
WebRTC no consiste solo en «enviar vídeo». Antes de transmitir el contenido multimedia, los dispositivos realizan un protocolo de enlace DTLS. Las claves SRTP para el audio y el vídeo se derivan de ese transporte seguro. A continuación, los paquetes multimedia se cifran mediante SRTP. Un servidor TURN puede reenviar esos paquetes, pero no recibe las claves necesarias para descifrar el audio o el vídeo.
Timmy añade una capa previa: los datos de señalización, como las ofertas SDP, las respuestas SDP y los candidatos ICE, se cifran con AES-256-GCM antes de llegar a Firestore. Firestore ayuda a los dispositivos a negociar la conexión; no está pensado para alojar vídeo, audio ni señalización sin cifrar.
Lo que Timmy no afirma
Ningún vigilabebés serio debería afirmar que es imposible de hackear. Si un teléfono está comprometido, se puede atacar cualquier app. Una compilación maliciosa de la app cambia el modelo de riesgo. La configuración del servidor debe seguir siendo correcta. La afirmación más limitada de Timmy es de carácter arquitectónico: evita que el backend pueda leer elementos multimedia de la habitación del bebé y permite inspeccionar la lógica de emparejamiento crítica para la seguridad en el proyecto público Timmy Core.
Preguntas que hacer sobre cualquier cámara para bebés
- ¿El proveedor almacena imágenes o clips?
- ¿Las URL de medios son privadas, de corta duración y autorizadas por dispositivo?
- ¿Las claves se generan para cada dispositivo o emparejamiento, en lugar de ser estáticas dentro de una app?
- ¿Puede un bróker entregar únicamente los mensajes del dispositivo que realmente posees?
- ¿El emparejamiento permite que una persona detecte un intento de ataque de intermediario?
Leer el código
- ECDH y SAS en Timmy Core
- Clave de reunión, clave de documento y AES-GCM
- Reglas de Firestore para sesiones y emparejamiento
- Documentación de seguridad en el proyecto central
Fuentes
- Grabaciones de cámaras para bebés accesibles libremente · Galaxus
- Un millón de vigilabebés y cámaras de seguridad podían ser vistos fácilmente por hackers · The Verge
- nadie pone al bebé en un rincón · Sammy Azdoufal
- Guía para padres sobre el mismo incidente · Baby Monitor Timmy