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 risk | Timmy 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
- ECDH ja SAS Timmy Core'is
- Kohtumisvõti, dokumendivõti ja AES-GCM
- Firestore'i reeglid seansside ja sidumise jaoks
- Turvadokumentatsioon põhiprojektis
Allikad
- Beebikaamerate salvestised vabalt kättesaadavad · Galaxus
- Miljon beebimonitori ja turvakaamerat olid häkkeritele kergesti vaadatavad · The Verge
- keegi ei pane beebit nurka · Sammy Azdoufal
- Lapsevanemate juhend sama juhtumi kohta · Baby Monitor Timmy