Galaxus je objavio da su snimci kamera za bebe bili slobodno dostupni; The Verge je izvestio o približno 1,1 milion pogođenih Meari uređaja. Moj zaključak je jednostavan: prijava ne štiti dečju sobu ako platforma iza nje ne razdvaja jasno poruke, slike i ključeve za svaki uređaj. Timmy ne rešava svaki bezbednosni problem na svetu. Međutim, Timmyjeve ključne tajne za medijski prenos i uparivanje ne nalaze se unutar platforme za kamere u oblaku.
Šta je, po svemu sudeći, pošlo po zlu u slučaju Meari
Javni izveštaji opisuju platformu koju su različiti proizvođači nudili pod sopstvenim robnim markama. Mnogi poznati brendovi prodavali su kamere koje su zavisile od iste Meari/CloudEdge infrastrukture. Zato je ovaj incident važan: kada zajednička platforma pogrešno postavi granicu ovlašćenja, rezultat nije jedna slabo zaštićena kamera, već izloženost čitave flote uređaja.
Opisani obrazac prevazilazi problem slabih podrazumevanih lozinki. Izvori navode MQTT poruke bez dovoljne kontrole pretplate za svaki uređaj, javno dostupne URL-ove slika, slabo prikrivanje slika i statične ključeve ili ključeve koji se mogu izvući iz aplikacije. To je propust platforme: infrastruktura je mogla da otkrije podatke koji nikada nisu smeli da budu dostupni drugom nalogu.
| Rizici kamera u oblaku | Timmyjev drugačiji pristup |
|---|---|
| Pozadinski sistem čuva ili distribuira događaje koji sadrže slike. | Timmy nema arhivu slika iz dečje sobe u oblaku; mediji se prenose uživo preko WebRTC-a. |
| Posrednik ili skladišni prostor moraju besprekorno da proveravaju ovlašćenja za svaki uređaj. | Firestore prenosi samo podatke za uparivanje i signalizaciju; SDP/ICE podaci šifruju se pre upisivanja. |
| Statični ključevi mogu ugroziti čitavu flotu uređaja. | Za svako uparivanje uređaji stvaraju zaseban ključ izveden pomoću P-256 ECDH-a. |
| Put preko releja može se pogrešno smatrati pristupom medijima. | TURN prosleđuje šifrovane SRTP pakete, ali ne dobija medijske ključeve. |
Kako Timmy stvara tajnu
Timmy kod od četiri znaka namerno nije tajna. U programskom kodu on služi samo kao mesto susreta: aplikacija iz njega izvodi vrednost meetingKey pomoću koje oba uređaja pronalaze istu razmenu javnih ključeva u Firestore-u. Privatni ECDH ključevi nikada ne napuštaju uređaje.
Zatim oba uređaja izračunavaju istu P-256 ECDH zajedničku tajnu. Ključ za uparivanje izvodi se lokalno. Dvocifreni SAS izvodi se iz zajedničke tajne i oba sortirana javna ključa. Ako neko izmeni tu razmenu ključeva, uređaji prikazuju različite brojeve, što korisnicima ukazuje da ne treba da potvrde 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 bezbednosni lanac: Firestore služi kao mesto susreta i prenos za signalizaciju; TURN je samo relej; medijski prenos ostaje zaštićen WebRTC šifrovanjem.
Zašto WebRTC medijski prenos ne može neprimetno da se nadzire
WebRTC nije samo „slanje videa“. Pre nego što počne medijski prenos, uređaji uspostavljaju bezbednu DTLS vezu. Iz tog bezbednog prenosa izvode se SRTP ključevi za zvuk i video. Medijski paketi se zatim šifruju kao SRTP. TURN server može da prosleđuje te pakete, ali ne dobija ključeve potrebne za dešifrovanje zvuka ili videa.
Timmy pre toga dodaje još jedan sloj zaštite: podaci za signalizaciju, kao što su SDP ponude, SDP odgovori i ICE kandidati, šifruju se pomoću AES-256-GCM-a pre nego što stignu do Firestore-a. Firestore pomaže uređajima da uspostave vezu; nije predviđen za čuvanje nešifrovanog videa, zvuka ili signalizacionih podataka.
Šta Timmy ipak ne tvrdi
Nijedan ozbiljan uređaj za nadzor bebe ne bi trebalo da tvrdi da ga je nemoguće hakovati. Ako je telefon kompromitovan, napadač može ugroziti bilo koju aplikaciju. Zlonamerna verzija aplikacije menja model rizika. Konfiguracija servera mora ostati ispravna. Timmyjeva uža tvrdnja odnosi se na arhitekturu: izbegava medijske zapise iz dečje sobe koje pozadinski sistem može da čita i omogućava pregled bezbednosno kritične logike uparivanja u javno dostupnom osnovnom projektu.
Pitanja koja treba postaviti o svakoj kameri za bebe
- Da li proizvođač čuva slike ili snimke?
- Da li su URL-ovi medija privatni i kratkotrajni i da li se pristup odobrava posebno za svaki uređaj?
- Da li se ključevi stvaraju za svaki uređaj ili svako uparivanje, umesto da budu statički ugrađeni u aplikaciju?
- Može li posrednik da isporuči poruke samo za uređaj koji zaista posedujete?
- Da li uparivanje omogućava korisniku da primeti napad posrednika („čovek u sredini“)?
Pogledajte kod
- ECDH i SAS u Timmy Core-u
- Ključ sastanka, ključ dokumenta i AES-GCM
- Firestore pravila za sesije i uparivanje
- Bezbednosna dokumentacija u osnovnom projektu
Izvori
- Snimci kamera za bebe bili su slobodno dostupni · Galaxus
- Hakeri su lako mogli da gledaju milion uređaja za nadzor bebe i bezbednosnih kamera · The Verge
- niko ne stavlja bebu u ćošak · Sammy Azdoufal
- Vodič za roditelje o istom incidentu · Baby Monitor Timmy