Tietoturvaselitys

Meari-vauvavalvontakameran tietoturvahaavoittuvuus: mitä Timmy tekee toisin

Meari-tapaus osoittaa, ettei viimeistelty kirjautuminen riitä. Vauvavalvonnan tietoturva riippuu arkkitehtuurista, valtuutuksista ja avainten hallinnasta.

Galaxus kertoi vapaasti saatavilla olleista vauvakameroiden tallenteista, ja The Verge raportoi noin 1,1 miljoonasta Meari-laitteesta. Minulle opetus on selvä: kirjautuminen ei suojaa lastenhuonetta, jos sen taustalla oleva alusta ei erota viestejä, kuvia tai avaimia selkeästi laitekohtaisesti. Timmy ei ratkaise kaikkia maailman tietoturvaongelmia. Mutta Timmyssä kriittiset media- ja pariliitossalaisuudet eivät sijaitse pilvikamera-alustalla.

Mikä Meari-tapauksessa näyttää menneen pieleen

Julkisten raporttien mukaan kyse oli white-label-alustasta. Monet näkyvät brändit myivät kameroita, jotka perustuivat samaan Meari/CloudEdge-infrastruktuuriin. Siksi tapaus on merkittävä: kun yhteinen alusta määrittää valtuutusrajan väärin, seurauksena ei ole yhden heikon kameran ongelma vaan koko laitekannan laajuinen altistuminen.

Raportoitu ongelmakuvio menee heikkoja oletussalasanoja pidemmälle. Lähteiden mukaan MQTT-viesteissä ei ollut riittäviä laitekohtaisia tilausten rajoituksia, kuvien URL-osoitteet olivat julkisesti saavutettavissa, kuvien peittaus oli heikkoa ja avaimet olivat staattisia tai sovelluksesta poimittavissa. Kyse on alustatason virheestä: infrastruktuuri saattoi paljastaa tietoja, joiden ei olisi koskaan pitänyt olla toisen tilin saatavilla.

Pilvikameroiden riskitTimmyn vastamalli
Taustajärjestelmä tallentaa tai välittää kuvatapahtumia.Timmyssä ei ole pilviarkistoa lastenhuoneen kuville; media välitetään suorana WebRTC-yhteytenä.
Välittäjäpalvelimen tai tallennussäilön on valtuutettava jokainen laite virheettömästi.Firestore välittää vain pariliitos- ja signalointitietoja; SDP/ICE salataan ennen tallennusta.
Staattiset avaimet voivat vaikuttaa koko laitekantaan.Jokainen pariliitos luo laitteille oman P-256 ECDH:sta johdetun avaimen.
Releyhteys voidaan erehtyä luulemaan mediapääsyksi.TURN välittää salattuja SRTP-paketteja, mutta ei vastaanota media-avaimia.

Miten Timmy luo salaisuuden

Nelimerkkinen Timmy-koodi ei tarkoituksella ole salaisuus. Se toimii vain kohtaamispaikkana: sovellus johtaa siitä tunnisteen meetingKey , jonka avulla molemmat laitteet löytävät saman Firestoressa tapahtuvan julkisten avainten vaihdon. Yksityiset ECDH-avaimet eivät koskaan poistu laitteilta.

Molemmat laitteet laskevat sitten saman P-256 ECDH -jaetun salaisuuden. Pariliitosavain johdetaan paikallisesti. Kaksinumeroinen SAS johdetaan jaetusta salaisuudesta sekä molemmista järjestetyistä julkisista avaimista. Jos avaintenvaihtoa peukaloidaan, laitteet näyttävät eri numerot, mikä kertoo käyttäjille, ettei pariliitosta pidä vahvistaa.

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
        

Yksinkertaistettu Timmyn tietoturvaketju: Firestore toimii kohtaamis- ja signalointiväylänä, TURN on vain rele ja media pysyy WebRTC-salattuna.

Miksi WebRTC-mediaa ei voi katsella huomaamatta

WebRTC ei ole vain ”lähetä videota”. Ennen kuin media liikkuu, laitteet tekevät DTLS-kättelyn. Äänen ja videon SRTP-avaimet johdetaan tästä suojatusta siirtoyhteydestä. Mediapaketit salataan sitten SRTP:llä. TURN-palvelin voi välittää nämä paketit, mutta se ei saa äänen tai videon avaamiseen tarvittavia avaimia.

Timmy lisää tätä ennen vielä yhden kerroksen: signalointitiedot, kuten SDP-tarjoukset, SDP-vastaukset ja ICE-ehdokkaat, salataan AES-256-GCM:llä ennen kuin ne päätyvät Firestoreen. Firestore auttaa laitteita neuvottelemaan yhteyden; sinne ei ole tarkoitus tallentaa selväkielistä videota, ääntä tai signalointia.

Mitä Timmy ei silti väitä

Yksikään vakavasti otettava vauvavalvontaratkaisu ei voi väittää olevansa mahdoton murtaa. Jos puhelin on vaarantunut, mitä tahansa sovellusta voidaan hyökätä vastaan. Haitallinen sovellusversio muuttaa riskimallia. Palvelinasetusten on pysyttävä oikeina. Timmyn rajatumpi väite koskee arkkitehtuuria: se välttää taustajärjestelmän luettavissa olevia lastenhuoneen mediajälkiä ja tekee tietoturvakriittisen pariliitoslogiikan tarkasteltavaksi julkisessa ydinprojektissa.

Kysymyksiä, jotka kannattaa esittää mistä tahansa vauvavalvontakamerasta

  • Tallentaako toimittaja kuvia tai videoleikkeitä?
  • Ovatko mediaosoitteet yksityisiä, lyhytkestoisia ja laitekohtaisesti valtuutettuja?
  • Luodaanko avaimet laite- tai pariliitoskohtaisesti sen sijaan, että ne olisivat staattisia sovelluksessa?
  • Voiko välittäjäpalvelin välittää viestejä vain laitteelle, jonka todella omistat?
  • Antaako pariliitos käyttäjälle mahdollisuuden huomata väliintulohyökkäys?

Lue koodi

Lähteet