Drošības skaidrojums

Meari mazuļu kameras drošības ievainojamība: ar ko Timmy atšķiras

Meari gadījums parāda, ka ar labi izstrādātu pieteikšanos nepietiek. Mazuļu uzraudzības drošība ir atkarīga no arhitektūras, autorizācijas un atslēgu pārvaldības.

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 risksTimmy 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

Avoti