Galaxus informoval o voľne dostupných nahrávkach z detských kamier; The Verge uviedol približne 1,1 milióna dotknutých zariadení Meari. Pre mňa je ponaučenie jasné: prihlásenie nechráni detskú izbu, ak platforma za ním nedokáže čisto oddeliť správy, obrázky či kľúče pre jednotlivé zariadenia. Timmy nevyrieši každý bezpečnostný problém na svete. Kritické tajomstvá médií a párovania Timmy však nie sú uložené v platforme cloudových kamier.
Čo zrejme zlyhalo v prípade Meari
Verejné správy opisujú platformu poskytovanú pod značkami rôznych predajcov. Mnohé známe značky predávali kamery závislé od rovnakej infraštruktúry Meari/CloudEdge. Práve preto je tento incident dôležitý: keď zdieľaná platforma nesprávne nastaví hranice oprávnení, výsledkom nie je iba jedna slabo zabezpečená kamera, ale ohrozenie celej flotily zariadení.
Opisovaný problém presahuje rámec slabých predvolených hesiel. Zdroje uvádzajú správy MQTT bez dostatočnej kontroly odberov pre jednotlivé zariadenia, verejne dostupné adresy URL obrázkov, slabé maskovanie obrázkov a statické kľúče alebo kľúče, ktoré možno získať z aplikácie. Ide o zlyhanie platformy: infraštruktúra mohla odhaliť údaje, ktoré nikdy nemali byť dostupné inému účtu.
| Riziko cloudových kamier | Ako to rieši Timmy |
|---|---|
| Backend ukladá alebo distribuuje snímky udalostí. | Timmy nemá cloudový archív obrázkov z detskej izby; médiá sa prenášajú naživo cez WebRTC. |
| Broker alebo úložisko musí bezchybne kontrolovať oprávnenia každého zariadenia. | Firestore prenáša iba údaje o párovaní a signalizácii; SDP a ICE sú zašifrované ešte pred uložením do Firestore. |
| Statické kľúče môžu ovplyvniť celú flotilu zariadení. | Každé párovanie vytvorí na zariadeniach vlastný kľúč odvodený z P-256 ECDH. |
| Reléová cesta môže byť mylne považovaná za prístup k médiám. | TURN preposiela šifrované pakety SRTP, ale nedostáva mediálne kľúče. |
Ako Timmy vytvára tajomstvo
Štvorznakový kód Timmy zámerne nie je tajomstvom. V kóde slúži len ako miesto stretnutia: aplikácia z neho odvodí meetingKey aby obe zariadenia našli rovnakú výmenu verejných kľúčov vo Firestore. Súkromné kľúče ECDH nikdy neopustia zariadenia.
Obe zariadenia potom vypočítajú rovnaké zdieľané tajomstvo P-256 ECDH. Kľúč párovania sa odvodí lokálne. Dvojciferný SAS sa odvodí zo zdieľaného tajomstva a oboch zoradených verejných kľúčov. Ak niekto s výmenou kľúčov manipuluje, zariadenia zobrazia odlišné čísla, čo používateľom napovie, aby párovanie nepotvrdzovali.
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ý reťazec Timmy: Firestore slúži na spojenie a prenos signalizácie; TURN je len relé; médiá zostávajú šifrované cez WebRTC.
Prečo médiá WebRTC nemožno potichu sledovať
WebRTC neznamená len „odosielanie videa“. Pred začiatkom prenosu médií zariadenia nadviažu zabezpečené spojenie pomocou DTLS. Z tohto zabezpečeného prenosu sa odvodia kľúče SRTP pre zvuk a video. Mediálne pakety sa potom zašifrujú pomocou SRTP. Server TURN môže tieto pakety preposielať, ale nezíska kľúče potrebné na dešifrovanie zvuku alebo videa.
Timmy pred to pridáva ďalšiu vrstvu: signalizačné údaje, napríklad ponuky SDP, odpovede SDP a kandidáti ICE, sa šifrujú pomocou AES-256-GCM predtým, než sa dostanú do Firestore. Firestore pomáha zariadeniam dohodnúť sa; nie je miestom, kde majú byť uložené nešifrované video, zvuk alebo signalizácia v otvorenom texte.
Čo Timmy stále netvrdí
Žiadny seriózny monitor bábätka by nemal tvrdiť, že jeho zabezpečenie nemožno prelomiť. Ak je telefón napadnutý, útočník môže zaútočiť na ktorúkoľvek aplikáciu. Škodlivá verzia aplikácie mení model rizika. Konfigurácia servera musí zostať správna. Užšie tvrdenie Timmy sa týka architektúry: Timmy sa vyhýba ukladaniu mediálnych záznamov z detskej izby, ktoré by mohol čítať backend, a umožňuje preskúmať bezpečnostne kritickú logiku párovania vo verejnom základnom projekte.
Otázky, ktoré si položiť pri každej detskej kamere
- Ukladá výrobca obrázky alebo klipy?
- Sú adresy URL médií súkromné, majú krátku platnosť a vyžadujú oprávnenie pre konkrétne zariadenie?
- Generujú sa kľúče pre každé zariadenie alebo párovanie namiesto toho, aby boli staticky uložené v aplikácii?
- Môže sprostredkovateľ doručovať správy len pre zariadenie, ktoré skutočne vlastníte?
- Umožňuje párovanie používateľovi rozpoznať pokus o útok sprostredkovateľa (man-in-the-middle)?
Prečítať kód
- ECDH a SAS v Timmy Core
- Kľúč stretnutia, kľúč dokumentu a AES-GCM
- Pravidlá Firestore pre relácie a párovanie
- Bezpečnostná dokumentácia v základnom projekte
Zdroje
- Voľne dostupné nahrávky z detských kamier · Galaxus
- Milión detských monitorov a bezpečnostných kamier mohli hackeri jednoducho sledovať · The Verge
- nikto nedáva dieťa do kúta · Sammy Azdoufal
- Sprievodca pre rodičov k rovnakému incidentu · Baby Monitor Timmy