Galaxus ziņoja par brīvi pieejamiem mazuļu kameru ierakstiem; The Verge ziņoja par aptuveni 1,1 miljonu skartu Meari ierīču. Man secinājums ir skaidrs: pieteikšanās nepasargā bērnistabu, ja platforma aiz tās katrai ierīcei skaidri nenodala ziņojumus, attēlus un atslēgas. Timmy neatrisina visas drošības problēmas pasaulē. Taču Timmy kritiskie multivides un savienošanas pārī noslēpumi neatrodas mākoņkameru platformā.
Kas, šķiet, nedarbojās Meari gadījumā
Publiskajos ziņojumos aprakstīta baltās etiķetes platforma. Daudzi redzami zīmoli pārdeva kameras, kas balstījās uz vienu un to pašu Meari/CloudEdge infrastruktūru. Tāpēc šis incidents ir svarīgs: ja koplietota platforma nepareizi nosaka autorizācijas robežu, tiek apdraudēta nevis viena vāja kamera, bet viss ierīču parks.
Aprakstītā situācija pārsniedz vājas noklusējuma paroles. Avotos minēti MQTT ziņojumi bez pietiekamas abonementu kontroles katrai ierīcei, publiski sasniedzami attēlu URL, vāja attēlu maskēšana un statiskas vai no lietotnes iegūstamas atslēgas. Tā ir platformas kļūme: infrastruktūra varēja atklāt datus, kuriem citam kontam nekad nebūtu bijis jābūt pieejamiem.
| Mākoņkameru risks | Timmy pretējais risinājums |
|---|---|
| Aizmugursistēma glabā vai izplata attēlu notikumus. | Timmy nav bērnistabas attēlu mākoņa arhīva; multivide tiek pārraidīta tiešraidē ar WebRTC. |
| Starpniekam vai datu glabātuvei ir nevainojami jāautorizē katra ierīce. | Firestore pārsūta tikai savienošanas pārī un signalizācijas datus; SDP/ICE tiek šifrēti pirms to ierakstīšanas. |
| Statiskas atslēgas var ietekmēt visu ierīču parku. | Katrs savienojums pārī ierīcēs izveido savu no P-256 ECDH atvasinātu atslēgu. |
| Releja ceļu var kļūdaini uzskatīt par piekļuvi multividei. | TURN pārsūta šifrētas SRTP paketes, bet nesaņem multivides atslēgas. |
Kā Timmy izveido noslēpumu
Četru rakstzīmju Timmy kods apzināti nav noslēpums. Lietotnē tas kalpo tikai par satikšanās punktu meetingKey — tā abas ierīces var atrast vienu un to pašu Firestore publisko atslēgu apmaiņu. Privātās ECDH atslēgas nekad neatstāj ierīces.
Pēc tam abas ierīces aprēķina vienu un to pašu P-256 ECDH kopīgo noslēpumu. Savienošanas pārī atslēga tiek atvasināta lokāli. Divciparu SAS tiek atvasināts no kopīgā noslēpuma un abām sakārtotajām publiskajām atslēgām. Ja ar šo atslēgu apmaiņu manipulē, ierīces rāda atšķirīgus skaitļus, tādējādi lietotājiem norādot, ka savienošanu pārī nevajag apstiprināt.
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
Vienkāršota Timmy drošības ķēde: Firestore ir satikšanās un signalizācijas pārsūtīšanas līdzeklis; TURN ir tikai relejs; multivide paliek šifrēta ar WebRTC.
Kāpēc WebRTC multividi nevar nemanāmi skatīties
WebRTC nav tikai “nosūtīt video”. Pirms tiek pārraidīta multivide, ierīces veic DTLS rokasspiedienu. Audio un video SRTP atslēgas tiek atvasinātas no šī drošā transporta. Pēc tam multivides paketes tiek šifrētas kā SRTP. TURN serveris var šīs paketes pārsūtīt, taču tas nesaņem atslēgas, kas vajadzīgas audio vai video atvēršanai.
Timmy pirms tam pievieno vēl vienu slāni: signalizācijas dati, piemēram, SDP piedāvājumi, SDP atbildes un ICE kandidāti, tiek šifrēti ar AES-256-GCM, pirms tie nonāk Firestore. Firestore palīdz ierīcēm vienoties; tas nav paredzēts vietai, kur glabāt nešifrētu video, audio vai nešifrētu signalizāciju.
Ko Timmy joprojām neapgalvo
Nevienam nopietnam mazuļu uzraudzības risinājumam nevajadzētu apgalvot, ka to nav iespējams uzlauzt. Ja tālrunis ir kompromitēts, var uzbrukt jebkurai lietotnei. Ļaunprātīga lietotnes versija maina riska modeli. Servera konfigurācijai ir jāpaliek pareizai. Timmy šaurākais apgalvojums ir arhitektonisks: tas izvairās no aizmugursistēmā nolasāmiem bērnistabas multivides artefaktiem un ļauj publiskajā pamatprojektā pārbaudīt drošībai kritisko savienošanas pārī loģiku.
Jautājumi par jebkuru mazuļu kameru
- Vai piegādātājs glabā attēlus vai klipus?
- Vai multivides URL ir privāti, īslaicīgi un autorizēti katrai ierīcei?
- Vai atslēgas tiek ģenerētas katrai ierīcei vai savienojumam pārī, nevis ir statiskas lietotnē?
- Vai starpnieks var piegādāt ziņojumus tikai tai ierīcei, kas patiešām pieder jums?
- Vai savienošana pārī ļauj cilvēkam pamanīt starpnieka uzbrukuma mēģinājumu?
Lasīt kodu
- ECDH un SAS Timmy Core
- Tikšanās atslēga, dokumenta atslēga un AES-GCM
- Firestore noteikumi sesijām un savienošanai pārī
- Drošības dokumentācija pamatprojektā
Avoti
- Mazuļu kameru ieraksti brīvi pieejami · Galaxus
- Miljonu mazuļu uzraudzības ierīču un drošības kameru hakeri varēja viegli apskatīt · The Verge
- neviens neliek mazuli stūrī · Sammy Azdoufal
- Vecāku ceļvedis par šo pašu incidentu · Baby Monitor Timmy