Galaxus a relatat despre înregistrări ale unor camere pentru bebeluși care puteau fi accesate liber, iar The Verge a relatat că au fost afectate aproximativ 1,1 milioane de dispozitive Meari. Pentru mine, concluzia este una sobră: autentificarea nu protejează camera copilului dacă platforma din spatele ei nu separă corect, pentru fiecare dispozitiv, mesajele, imaginile și cheile. Timmy nu rezolvă toate problemele de securitate din lume. Însă secretele esențiale pentru fluxurile audio-video și împerechere ale Timmy nu sunt păstrate într-o platformă cloud pentru camere.
Ce pare să fi eșuat în cazul Meari
Rapoartele publice descriu o platformă de tip white-label, folosită sub mărci diferite. Numeroase mărci cunoscute au vândut camere care depindeau de aceeași infrastructură Meari/CloudEdge. De aceea este important acest incident: când o platformă comună definește greșit limita de autorizare, rezultatul nu este o singură cameră vulnerabilă, ci expunerea unei întregi flote de dispozitive.
Modelul raportat depășește problema parolelor implicite slabe. Sursele descriu mesaje MQTT fără controale suficiente asupra abonamentelor pentru fiecare dispozitiv, URL-uri de imagini accesibile public, mascarea slabă a imaginilor și chei statice sau care pot fi extrase din aplicație. Este o defecțiune a platformei: infrastructura putea dezvălui date care nu ar fi trebuit să fie disponibile niciodată unui alt cont.
| Riscurile camerelor conectate la cloud | Soluția alternativă adoptată de Timmy |
|---|---|
| Sistemul backend stochează sau distribuie evenimente care conțin imagini. | Timmy nu are o arhivă cloud pentru imaginile din camera copilului; fluxurile audio-video sunt transmise în direct prin WebRTC. |
| Un broker sau un spațiu de stocare trebuie să autorizeze corect fiecare dispozitiv, fără nicio eroare. | Firestore transportă numai datele de împerechere și semnalizare; datele SDP și ICE sunt criptate înainte de a fi scrise. |
| Cheile statice pot afecta o întreagă flotă de dispozitive. | Pentru fiecare împerechere, dispozitivele generează o cheie proprie, derivată prin ECDH P-256. |
| Folosirea unui releu poate fi confundată cu accesul la fluxurile audio-video. | TURN redirecționează pachetele SRTP criptate, dar nu primește cheile necesare pentru decriptarea fluxurilor audio-video. |
Cum generează Timmy valoarea secretă
Codul Timmy din patru caractere nu este secretul propriu-zis. În implementare, el servește doar drept punct de întâlnire pentru cele două dispozitive. meetingKey Astfel, ambele dispozitive pot găsi același schimb de chei publice în Firestore. Cheile private ECDH nu părăsesc niciodată dispozitivele.
Apoi, ambele dispozitive calculează același secret partajat prin ECDH P-256. Cheia de împerechere este derivată local. Codul SAS din două cifre este derivat din secretul partajat și din cele două chei publice ordonate. Dacă schimbul de chei este manipulat, dispozitivele afișează numere diferite, indicându-le utilizatorilor că nu trebuie să confirme împerecherea.
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
Lanțul de securitate Timmy, pe scurt: Firestore servește drept punct de întâlnire și transport pentru semnalizare; TURN este doar un releu; fluxurile audio-video rămân criptate prin WebRTC.
De ce fluxurile WebRTC nu pot fi urmărite pe ascuns
WebRTC nu înseamnă doar „trimite semnalul video”. Înainte de transmiterea fluxurilor audio-video, dispozitivele efectuează o negociere DTLS. Cheile SRTP pentru sunet și imagine sunt derivate din acest canal securizat. Pachetele audio-video sunt apoi criptate prin SRTP. Un server TURN poate redirecționa aceste pachete, dar nu primește cheile necesare pentru a le decripta conținutul audio sau video.
Timmy adaugă înaintea acestui proces încă un nivel de protecție: datele de semnalizare, precum ofertele SDP, răspunsurile SDP și candidații ICE, sunt criptate cu AES-256-GCM înainte de a ajunge în Firestore. Firestore ajută dispozitivele să negocieze conexiunea; nu este destinat să conțină fluxuri video sau audio necriptate ori date de semnalizare în clar.
Ce nu pretinde Timmy
Niciun monitor pentru bebeluși serios nu ar trebui să pretindă că este imposibil de compromis. Dacă un telefon este compromis, orice aplicație instalată pe el poate fi atacată. O versiune malițioasă a aplicației schimbă modelul de risc. Configurația serverului trebuie să rămână corectă. Afirmația mai restrânsă a Timmy ține de arhitectură: evită păstrarea în backend a unor imagini sau înregistrări din camera copilului care ar putea fi citite acolo și permite inspectarea logicii de împerechere esențiale pentru securitate în proiectul public Timmy Core.
Întrebări de pus despre orice cameră pentru bebeluși
- Furnizorul stochează imagini sau clipuri?
- Adresele URL ale fluxurilor audio-video sunt private, au o durată de viață scurtă și sunt autorizate separat pentru fiecare dispozitiv?
- Cheile sunt generate pentru fiecare dispozitiv sau împerechere, în loc să fie statice în aplicație?
- Poate un broker să livreze mesaje doar pentru dispozitivul pe care îl dețineți efectiv?
- Procesul de împerechere îi permite utilizatorului să observe o tentativă de atac de tip man-in-the-middle?
Citește codul
- ECDH și SAS în Timmy Core
- Cheia punctului de întâlnire, cheia documentului și AES-GCM
- Reguli Firestore pentru sesiuni și împerechere
- Documentația de securitate din proiectul de bază
Surse
- Înregistrări din camere pentru bebeluși accesibile liber · Galaxus
- Un milion de monitoare pentru bebeluși și camere de securitate puteau fi văzute cu ușurință de hackeri · The Verge
- nimeni nu pune bebelușul într-un colț · Sammy Azdoufal
- Ghid pentru părinți despre același incident · Baby Monitor Timmy