Galaxus informoval o volně přístupných záznamech z dětských kamer; The Verge uvedl, že bylo zasaženo přibližně 1,1 milionu zařízení Meari. Pro mě z toho plyne střízlivé ponaučení: přihlášení dětský pokoj neochrání, pokud platforma na pozadí nedokáže pro jednotlivá zařízení důsledně oddělit zprávy, snímky a klíče. Timmy neřeší každý bezpečnostní problém na světě. Jeho klíčová tajemství pro přenos médií a párování však nejsou uložena v cloudové platformě pro kamery.
Co se v případě Meari zřejmě nepovedlo
Veřejné zprávy popisují platformu typu white label. Kamery závislé na stejné infrastruktuře Meari/CloudEdge prodávala řada různých značek. Právě proto je tento incident důležitý: když sdílená platforma nesprávně nastaví hranice oprávnění, nejde o slabinu jediné kamery, ale o ohrožení celé flotily zařízení.
Popsaný problém sahá dál než ke slabým výchozím heslům. Zdroje uvádějí zprávy MQTT bez dostatečného řízení odběru pro jednotlivá zařízení, veřejně dostupné adresy URL obrázků, slabé maskování obrázků a statické klíče nebo klíče, které lze získat z aplikace. Jde o selhání platformy: infrastruktura mohla zpřístupnit data, ke kterým jiný účet nikdy neměl mít přístup.
| Riziko cloudových kamer | Jak to Timmy řeší |
|---|---|
| Backend ukládá nebo distribuuje události s obrázky. | Timmy nemá cloudový archiv snímků z dětského pokoje; média se přenášejí živě přes WebRTC. |
| Broker nebo úložiště musí dokonale autorizovat každé zařízení. | Firestore přenáší pouze data párování a signalizace; SDP/ICE je před zápisem zašifrováno. |
| Statické klíče mohou ohrozit celou flotilu zařízení. | Při každém párování vznikne na zařízeních vlastní klíč odvozený z P-256 ECDH. |
| Reléová cesta může být zaměněna za přístup k médiím. | TURN přeposílá šifrované pakety SRTP, ale nezískává klíče k médiím. |
Jak Timmy vytváří tajemství
Čtyřznakový kód Timmy záměrně není tajemstvím. V kódu slouží jen jako bod setkání: aplikace z něj odvodí meetingKey aby obě zařízení našla stejnou výměnu veřejných klíčů ve Firestore. Soukromé klíče ECDH nikdy neopustí zařízení.
Obě zařízení pak vypočítají stejné sdílené tajemství P-256 ECDH. Klíč pro párování se odvodí lokálně. Dvoumístný SAS se odvodí ze sdíleného tajemství a obou seřazených veřejných klíčů. Pokud by někdo do výměny klíčů zasáhl, zařízení zobrazí různá čísla, což uživatelům napoví, aby párování nepotvrzovali.
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
Zjednodušený bezpečnostní řetězec Timmy: Firestore slouží jako bod setkání a přenos signalizace; TURN je pouze relé; média zůstávají šifrovaná přes WebRTC.
Proč nelze média WebRTC potichu sledovat
WebRTC neznamená jen „odesílání videa“. Než začne přenos médií, zařízení provedou navázání spojení pomocí protokolu DTLS. Z tohoto zabezpečeného přenosu se odvodí klíče SRTP pro zvuk a video. Mediální pakety se poté šifrují pomocí SRTP. Server TURN je může přeposílat, ale nezíská klíče potřebné k dešifrování zvuku nebo videa.
Timmy před tím přidává další vrstvu: signalizační data, například nabídky SDP, odpovědi SDP a kandidáti ICE, jsou před odesláním do Firestore zašifrována pomocí AES-256-GCM. Firestore pomáhá zařízením vyjednat spojení; není místem pro nešifrované video, zvuk ani nešifrovanou signalizaci.
Co Timmy stále netvrdí
Žádná seriózní dětská chůvička by neměla tvrdit, že ji nelze napadnout. Pokud je telefon kompromitován, může být napadena jakákoli aplikace. Škodlivá verze aplikace mění model rizik. Také konfigurace serveru musí zůstat správná. Užší tvrzení Timmy se týká jeho architektury: nevytváří na backendu čitelné mediální soubory z dětského pokoje a bezpečnostně kritickou logiku párování lze zkontrolovat ve veřejném projektu jádra aplikace.
Na co se ptát u každé dětské kamery
- Ukládá výrobce obrázky nebo klipy?
- Jsou adresy URL médií neveřejné, krátkodobé a je přístup k nim autorizován pro každé zařízení zvlášť?
- Vytvářejí se klíče pro každé zařízení nebo párování, místo aby byly staticky uložené v aplikaci?
- Může broker doručovat zprávy pouze pro zařízení, které skutečně vlastníte?
- Umožňuje párování uživateli rozpoznat útok prostředníka (man-in-the-middle)?
Přečíst kód
- ECDH a SAS v Timmy Core
- Klíč setkání, klíč dokumentu a AES-GCM
- Pravidla Firestore pro relace a párování
- Bezpečnostní dokumentace v jádrovém projektu
Zdroje
- Záznamy z dětských kamer byly volně dostupné · Galaxus
- Milion dětských chůviček a bezpečnostních kamer mohli hackeři snadno sledovat · The Verge
- nikdo nedává dítě do kouta · Sammy Azdoufal
- Průvodce pro rodiče k témuž incidentu · Baby Monitor Timmy