Forklaring om sikkerhet

Sikkerhetssårbarhet i Meari-babykameraer: Hva Timmy gjør annerledes

Meari-saken viser at en pen innlogging ikke er nok. Sikkerheten i en babycall avhenger av arkitektur, autorisering og nøkkelhåndtering.

Galaxus rapporterte om fritt tilgjengelige opptak fra babykameraer, og The Verge rapporterte om rundt 1,1 millioner berørte Meari-enheter. For meg er lærdommen nøktern: En innlogging beskytter ikke barnerommet hvis plattformen bak ikke skiller meldinger, bilder eller nøkler tydelig mellom enheter. Timmy løser ikke alle sikkerhetsproblemer i verden. Men Timmy sine kritiske medie- og sammenkoblingshemmeligheter finnes ikke i en skybasert kameraplattform.

Det som ser ut til å ha sviktet i Meari-saken

De offentlige rapportene beskriver en white-label-plattform. Mange synlige merkevarer solgte kameraer som var avhengige av den samme Meari/CloudEdge-infrastrukturen. Derfor er hendelsen viktig: Når en delt plattform trekker en autoriseringsgrense feil, blir resultatet ikke bare ett svakt kamera, men eksponering i stor skala.

Det rapporterte mønsteret handler om mer enn svake standardpassord. Kilder beskriver MQTT-meldinger uten tilstrekkelig kontroll av abonnementer per enhet, offentlig tilgjengelige bilde-URL-er, svak skjuling av bilder og statiske nøkler eller nøkler som kan hentes ut fra appen. Det er en plattformfeil: Infrastrukturen kunne avsløre data som aldri skulle vært tilgjengelige for en annen konto.

Risiko ved skybaserte kameraerTimmys motdesign
Backend-en lagrer eller distribuerer bildehendelser.Timmy har ikke noe skyarkiv for bilder fra barnerommet; mediene overføres direkte via WebRTC.
En megler eller lagringsbøtte må autorisere hver enhet helt korrekt.Firestore håndterer bare data for sammenkobling og signalering; SDP/ICE krypteres før det skrives.
Statiske nøkler kan påvirke en hel enhetsflåte.Hver sammenkobling oppretter sin egen P-256 ECDH-avledede nøkkel på enhetene.
En relébane kan forveksles med tilgang til mediene.TURN videresender krypterte SRTP-pakker, men mottar ikke medienøklene.

Slik oppretter Timmy hemmeligheten

Timmy-koden med fire tegn er med vilje ikke hemmeligheten. I koden er den bare et møtested: Appen utleder en meetingKey fra den, slik at begge enhetene kan finne den samme Firestore-utvekslingen av offentlige nøkler. Private ECDH-nøkler forlater aldri enhetene.

Begge enhetene beregner deretter den samme delte P-256 ECDH-hemmeligheten. Sammenkoblingsnøkkelen utledes lokalt. Den tosifrede SAS-en utledes fra den delte hemmeligheten samt begge de sorterte offentlige nøklene. Hvis nøkkelutvekslingen blir manipulert, viser enhetene forskjellige tall, som forteller brukerne at de ikke skal bekrefte sammenkoblingen.

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
        

Forenklet Timmy-sikkerhetskjede: Firestore er transport for møtested og signalering; TURN er bare et relé; mediene forblir WebRTC-kryptert.

Hvorfor WebRTC-medier ikke kan overvåkes i det skjulte

WebRTC er ikke bare «send video». Før mediene flyter, utfører enhetene et DTLS-handshake. SRTP-nøkler for lyd og video utledes fra denne sikre transporten. Mediepakkene krypteres deretter som SRTP. En TURN-server kan videresende pakkene, men mottar ikke nøklene som trengs for å åpne lyden eller videoen.

Timmy legger til et lag før dette: Signaleringsdata som SDP-tilbud, SDP-svar og ICE-kandidater krypteres med AES-256-GCM før de når Firestore. Firestore hjelper enhetene med å forhandle; det er ikke stedet der video, lyd eller signalering i klartekst skal ligge.

Dette påstår Timmy fortsatt ikke

Ingen seriøs babycall bør hevde at den er umulig å hacke. Hvis en telefon er kompromittert, kan enhver app angripes. En ondsinnet appversjon endrer risikomodellen. Serverkonfigurasjonen må fortsatt være korrekt. Timmys mer begrensede påstand er arkitektonisk: Den unngår medieartefakter fra barnerommet som backend-en kan lese, og gjør den sikkerhetskritiske sammenkoblingslogikken mulig å inspisere i det offentlige kjerneprosjektet.

Spørsmål å stille om ethvert babykamera

  • Lagrer leverandøren bilder eller klipp?
  • Er medie-URL-ene private, kortvarige og autorisert per enhet?
  • Genereres nøkler per enhet eller sammenkobling, i stedet for å være statiske i en app?
  • Kan en megler bare levere meldinger for enheten du faktisk eier?
  • Lar sammenkoblingen et menneske oppdage et forsøk på man-in-the-middle-angrep?

Les koden

Kilder