Turvalisuse selgitus

Meari beebikaamera turvanõrkus: mida Timmy teeb teisiti

Meari juhtum näitab, et korralikust sisselogimisest ei piisa. Beebimonitori turvalisus sõltub arhitektuurist, õiguste haldusest ja võtmete haldusest.

Galaxus teatas vabalt ligipääsetavatest beebikaamerate salvestistest; The Verge teatas umbes 1,1 miljonist mõjutatud Meari seadmest. Minu jaoks on õppetund kainestav: sisselogimine ei kaitse lastetuba, kui selle taga olev platvorm ei eralda sõnumeid, pilte ega võtmeid seadmete kaupa korrektselt. Timmy ei lahenda kõiki maailma turvaprobleeme. Kuid Timmy kriitilised meedia- ja sidumissaladused ei asu pilvekaamerate platvormil.

Mis Meari juhtumis näib olevat ebaõnnestunud

Avalikes teadetes kirjeldatakse platvormi, mida kasutatakse eri kaubamärkide all müüdavates toodetes. Paljud kaubamärgid müüsid kaameraid, mis sõltusid samast Meari/CloudEdge'i taristust. Seepärast on see juhtum oluline: kui jagatud platvorm määrab autoriseerimispiiri valesti, ei satu ohtu üksainus nõrk kaamera, vaid terve seadmepark.

Kirjeldatud muster ulatub kaugemale nõrkadest vaikimisi paroolidest. Allikad kirjeldavad MQTT-sõnumeid, millel puudus piisav seadmekohane tellimuste kontroll, avalikult kättesaadavaid pildi-URL-e, nõrka piltide varjamist ning staatilisi või rakendusest väljavõetavaid võtmeid. See on platvormi läbikukkumine: taristu võis avaldada andmeid, mis poleks kunagi tohtinud teisele kontole kättesaadavad olla.

Pilvekaamera riskTimmy teistsugune lahendus
Taustasüsteem salvestab või jagab piltsündmusi.Timmyl ei ole lastetoa piltide pilvearhiivi; meedia edastatakse reaalajas WebRTC kaudu.
Vahendaja või salvestusruum peab iga seadme õigusi veatult kontrollima.Firestore edastab vaid sidumis- ja signaalivahetusandmeid; SDP/ICE krüpteeritakse enne Firestore'i kirjutamist.
Staatilised võtmed võivad mõjutada tervet seadmeparki.Iga sidumine loob seadmetes oma P-256 ECDH-st tuletatud võtme.
Releekanali võib ekslikult pidada meediale ligipääsuks.TURN edastab krüpteeritud SRTP-pakette, kuid ei saa meediavõtmeid.

Kuidas Timmy saladuse loob

Neljamärgiline Timmy kood ei ole meelega saladus. Koodis on see vaid ühenduspunkt: rakendus tuletab sellest meetingKey võtme, mille abil mõlemad seadmed leiavad sama Firestore'i avaliku võtme vahetuse. Privaatsed ECDH-võtmed ei lahku kunagi seadmetest.

Seejärel arvutavad mõlemad seadmed sama P-256 ECDH jagatud saladuse. Sidumisvõti tuletatakse seadmetes kohapeal. Kahekohaline SAS tuletatakse jagatud saladusest ja mõlemast järjestatud avalikust võtmest. Kui võtmevahetust manipuleeritakse, kuvavad seadmed erinevad numbrid, mis annab kasutajatele märku, et sidumist ei tohi kinnitada.

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
        

Timmy turvaahela lihtsustatud skeem: Firestore on kohtumis- ja signaalivahetuse edastuskanal; TURN on ainult relee; meedia jääb WebRTC-ga krüpteerituks.

Miks WebRTC-meediat ei saa märkamatult pealt vaadata

WebRTC ei tähenda lihtsalt „saada video”. Enne meedia edastamist teevad seadmed DTLS-i käepigistuse. Heli ja video SRTP-võtmed tuletatakse sellest turvalisest transpordist. Meediapaketid krüpteeritakse seejärel SRTP-ga. TURN-server saab neid pakette edastada, kuid ei saa heli või video avamiseks vajalikke võtmeid.

Timmy lisab enne seda veel ühe kihi: signaalivahetusandmed, näiteks SDP-pakkumised, SDP-vastused ja ICE-kandidaadid, krüpteeritakse AES-256-GCM-iga enne Firestore'i jõudmist. Firestore aitab seadmetel ühenduse parameetrites kokku leppida; see ei ole koht, kus peaksid asuma krüpteerimata video, heli või signaalivahetusandmed.

Mida Timmy siiski ei väida

Ükski tõsiseltvõetav beebimonitor ei tohiks väita, et seda ei ole võimalik häkkida. Kui telefon on kompromiteeritud, saab rünnata mis tahes rakendust. Pahatahtlik rakenduseversioon muudab riskimudelit. Ka server peab olema õigesti seadistatud. Timmy väide on kitsam ja puudutab arhitektuuri: taustasüsteemi ei salvestata lastetoast pärinevaid meediaandmeid kujul, mida see saaks lugeda, ning turvakriitilist sidumisloogikat saab avalikus põhiprojektis kontrollida.

Küsimused, mida küsida iga beebikaamera kohta

  • Kas tootja salvestab pilte või videoklippe?
  • Kas meedia-URL-id on privaatsed, lühiajalised ja seadmekohaselt autoriseeritud?
  • Kas võtmed luuakse seadme või sidumise kaupa, mitte staatiliselt rakenduse sees?
  • Kas vahendaja saab edastada sõnumeid ainult seadmele, mis sulle tegelikult kuulub?
  • Kas sidumine võimaldab inimesel märgata vahendusrünnet?

Loe koodi

Allikad