Galaxus je poročal o prosto dostopnih posnetkih otroških kamer; The Verge pa o približno 1,1 milijona prizadetih naprav Meari. Zame je nauk preprost: prijava ne zaščiti otroške sobe, če platforma v ozadju sporočil, slik in ključev ne ločuje ustrezno za vsako napravo. Timmy ne rešuje vseh varnostnih težav na svetu. Toda Timmyjeve varnostno pomembne skrivnosti za prenos medijev in seznanjanje niso shranjene v platformi za kamere v oblaku.
Kaj je po vsej verjetnosti odpovedalo v primeru Meari
Javna poročila opisujejo platformo, ki se prodaja pod različnimi blagovnimi znamkami. Številne prepoznavne blagovne znamke so prodajale kamere, odvisne od iste infrastrukture Meari/CloudEdge. Prav zato je incident pomemben: kadar skupna platforma napačno določi mejo avtorizacije, posledica ni le ena slabo zaščitena kamera, temveč izpostavljenost celotnega nabora naprav.
Opisani vzorec presega šibka privzeta gesla. Viri navajajo sporočila MQTT brez zadostnega nadzora naročnin za posamezne naprave, javno dosegljive URL-je slik, šibko prikrivanje slik ter statične ključe ali ključe, ki jih je mogoče pridobiti iz aplikacije. To je napaka platforme: infrastruktura je lahko razkrila podatke, ki drugemu računu nikoli ne bi smeli biti na voljo.
| Tveganja kamer v oblaku | Timmyjeva varnostna zasnova |
|---|---|
| Zaledni sistem shranjuje ali razpošilja dogodke s slikami. | Timmy nima arhiva slik iz otroške sobe v oblaku; mediji se prenašajo v živo prek WebRTC. |
| Posrednik ali objektna shramba mora brezhibno preverjati dovoljenja za vsako napravo. | Firestore prenaša le podatke za seznanjanje in signalizacijo; SDP/ICE je šifriran, preden se zapiše. |
| Statični ključi lahko vplivajo na celoten nabor naprav. | Vsako seznanjanje v napravah ustvari svoj ključ, izpeljan z algoritmom P-256 ECDH. |
| Relejna pot se lahko zmotno razume kot dostop do medijev. | TURN posreduje šifrirane pakete SRTP, vendar ne prejme ključev za medije. |
Kako Timmy ustvari skrivnost
Timmyjeva štiriznakovna koda namenoma ni skrivnost. V programski kodi je zgolj stičišče: aplikacija iz nje izpelje meetingKey , da lahko obe napravi najdeta isto izmenjavo javnih ključev v storitvi Firestore. Zasebni ključi ECDH nikoli ne zapustijo naprav.
Obe napravi nato izračunata isto skupno skrivnost P-256 ECDH. Ključ za seznanjanje se izpelje lokalno. Dvomestni SAS se izpelje iz skupne skrivnosti in obeh razvrščenih javnih ključev. Če kdo poseže v to izmenjavo ključev, napravi prikažeta različni številki, kar uporabnikom pove, naj seznanjanja ne potrdijo.
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
Poenostavljena Timmyjeva varnostna veriga: Firestore je stičišče in prenaša signalizacijo; TURN je le rele; mediji ostanejo šifrirani s tehnologijo WebRTC.
Zakaj medijskih tokov WebRTC ni mogoče neopazno prestrezati
WebRTC ni le »pošiljanje videa«. Pred začetkom prenosa medijev napravi izvedeta rokovanje DTLS. Ključi SRTP za zvok in video se izpeljejo iz tega varnega prenosa, medijski paketi pa se nato šifrirajo s protokolom SRTP. Strežnik TURN lahko te pakete posreduje, vendar ne prejme ključev, potrebnih za dešifriranje zvoka ali videa.
Timmy pred tem doda še eno zaščitno plast: signalizacijski podatki, kot so ponudbe SDP, odgovori SDP in kandidati ICE, se šifrirajo z AES-256-GCM, preden dosežejo Firestore. Firestore napravama pomaga vzpostaviti povezavo; ni namenjen hrambi nešifriranega videa, zvoka ali signalizacije.
Česa Timmy še vedno ne trdi
Nobena resna otroška varuška ne bi smela biti predstavljena kot nevdrljiva. Če je telefon kompromitiran, je lahko tarča napada katera koli aplikacija. Zlonamerna različica aplikacije spremeni model tveganja. Tudi konfiguracija strežnika mora ostati pravilna. Timmyjeva ožja trditev se nanaša na arhitekturo: izogiba se medijskim artefaktom iz otroške sobe, ki bi jih lahko prebral zaledni sistem, varnostno ključno logiko seznanjanja pa je mogoče pregledati v javno dostopnem projektu jedra.
Vprašanja, ki jih je treba zastaviti o vsaki otroški kameri
- Ali ponudnik shranjuje slike ali videoposnetke?
- Ali so URL-ji medijev zasebni, kratkotrajni in avtorizirani za posamezno napravo?
- Ali se ključi ustvarijo za vsako napravo ali seznanjanje, namesto da so statični v aplikaciji?
- Ali lahko posrednik dostavlja samo sporočila za napravo, ki jo dejansko posedujete?
- Ali seznanjanje uporabniku omogoča, da opazi poskus napada s posrednikom (man-in-the-middle)?
Preberite kodo
- ECDH in SAS v Timmy Core
- Ključ stičišča, ključ dokumenta in AES-GCM
- Pravila Firestore za seje in seznanjanje
- Varnostna dokumentacija v projektu Timmy Core
Viri
- Prosto dostopni posnetki otroških kamer · Galaxus
- Milijon otroških varušk in varnostnih kamer je bilo hekerjem zlahka dostopnih za ogled · The Verge
- nihče ne postavlja dojenčka v kot · Sammy Azdoufal
- Vodnik za starše o istem incidentu · Baby Monitor Timmy