Galaxus je izvijestio o slobodno dostupnim snimkama baby kamera, a The Verge o približno 1,1 milijun pogođenih Meari uređaja. Pouka je za mene jasna: prijava ne štiti dječju sobu ako platforma iza nje ne odvaja poruke, slike ili ključeve zasebno za svaki uređaj. Timmy ne rješava svaki sigurnosni problem na svijetu. No ključne tajne za medije i uparivanje u Timmyju ne nalaze se unutar platforme za kamere u oblaku.
Što se čini da je zakazalo u slučaju Meari
Javna izvješća opisuju platformu koja se prodaje pod različitim robnim markama (white-label). Mnogi poznati brendovi prodavali su kamere koje su ovisile o istoj infrastrukturi Meari/CloudEdge. Zato je incident važan: kada zajednička platforma pogrešno postavi granicu autorizacije, posljedica nije samo jedna nesigurna kamera, nego izloženost cijele flote uređaja.
Prijavljeni obrazac nadilazi slabe zadane lozinke. Izvori opisuju MQTT poruke bez dovoljno strogih kontrola pretplate po uređaju, javno dostupne URL-ove slika, slabo prikrivanje slika te statične ključeve ili ključeve koji se mogu izvući iz aplikacije. To je kvar platforme: infrastruktura je mogla otkriti podatke koji nikada nisu smjeli biti dostupni drugom računu.
| Rizik kamera u oblaku | Timmyjev sigurnosni pristup |
|---|---|
| Pozadinski sustav pohranjuje ili distribuira događaje sa slikama. | Timmy nema arhivu slika iz dječje sobe u oblaku; mediji se prenose uživo putem WebRTC-a. |
| Posrednik ili spremnik mora besprijekorno provjeravati ovlasti za svaki uređaj. | Firestore prenosi samo podatke za uparivanje i signalizaciju; podaci SDP-a i ICE-a šifriraju se prije zapisivanja. |
| Statični ključevi mogu utjecati na cijelu flotu uređaja. | Svako uparivanje na uređajima stvara vlastiti ključ izveden P-256 ECDH postupkom. |
| Put preko releja može se zamijeniti za pristup medijima. | TURN prosljeđuje šifrirane SRTP pakete, ali ne prima medijske ključeve. |
Kako Timmy stvara tajnu
Timmyjev kod od četiri znaka namjerno nije tajna. U kodu je on samo mjesto susreta: aplikacija iz njega izvodi meetingKey ključ sastanka kako bi oba uređaja mogla pronaći istu Firestore razmjenu javnih ključeva. Privatni ECDH ključevi nikada ne napuštaju uređaje.
Oba uređaja zatim izračunavaju istu zajedničku tajnu P-256 ECDH postupkom. Ključ za uparivanje izvodi se lokalno. Dvoznamenkasti SAS izvodi se iz zajedničke tajne i oba poredana javna ključa. Ako netko neovlašteno izmijeni tu razmjenu ključeva, uređaji prikazuju različite brojeve, što korisnicima pokazuje da ne smiju potvrditi uparivanje.
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
Pojednostavljeni Timmyjev sigurnosni lanac: Firestore služi kao mjesto susreta i prijenos signalizacije; TURN je samo relej; mediji ostaju šifrirani putem WebRTC-a.
Zašto se WebRTC mediji ne mogu potajno gledati
WebRTC nije samo „slanje videa”. Prije prijenosa medija uređaji uspostavljaju sigurnu vezu DTLS postupkom. Iz te sigurne veze izvode se SRTP ključevi za zvuk i video. Medijski paketi zatim se šifriraju kao SRTP. TURN poslužitelj može prosljeđivati te pakete, ali ne dobiva ključeve potrebne za dešifriranje zvuka ili videa.
Timmy prije toga dodaje još jedan sloj: podaci za signalizaciju, poput SDP ponuda, SDP odgovora i ICE kandidata, šifriraju se AES-256-GCM postupkom prije nego što stignu u Firestore. Firestore pomaže uređajima dogovoriti vezu; nije predviđen za pohranu nešifriranog videa, zvuka ni signalizacije.
Što Timmy i dalje ne tvrdi
Nijedan ozbiljan monitor za bebe ne bi smio tvrditi da ga je nemoguće hakirati. Ako je telefon kompromitiran, može se napasti svaka aplikacija. Zlonamjerna verzija aplikacije mijenja model rizika. Konfiguracija poslužitelja mora ostati ispravna. Timmyjeva uža tvrdnja odnosi se na arhitekturu: izbjegava medijske zapise iz dječje sobe koje pozadinski sustav može pročitati i omogućuje provjeru logike uparivanja ključne za sigurnost u javnom projektu Timmy Core.
Pitanja koja treba postaviti o svakoj kameri za bebe
- Pohranjuje li proizvođač slike ili isječke?
- Jesu li URL-ovi medija privatni, kratkog vijeka i autorizirani zasebno za svaki uređaj?
- Stvaraju li se ključevi zasebno za svaki uređaj ili svako uparivanje, umjesto da budu statički ugrađeni u aplikaciju?
- Može li posrednik isporučiti poruke samo za uređaj koji doista posjedujete?
- Omogućuje li uparivanje korisniku da primijeti pokušaj napada posrednika?
Pročitajte kod
- ECDH i SAS u projektu Timmy Core
- Ključ sastanka, ključ dokumenta i AES-GCM
- Firestore pravila za sesije i uparivanje
- Sigurnosna dokumentacija u osnovnom projektu
Izvori
- Snimke s baby kamera slobodno dostupne · Galaxus
- Milijun monitora za bebe i sigurnosnih kamera hakeri su mogli lako gledati · The Verge
- nitko ne stavlja bebu u kut · Sammy Azdoufal
- Vodič za roditelje o istom incidentu · Baby Monitor Timmy