Säkerhetsförklaring

Säkerhetsbrist i Meari-babykameror: vad Timmy gör annorlunda

Fallet Meari visar att en snygg inloggning inte räcker. Säkerheten i en babyvakt beror på arkitektur, behörighetsstyrning och nyckelhantering.

Galaxus rapporterade om fritt tillgängliga inspelningar från babykameror, och The Verge rapporterade att omkring 1,1 miljoner Meari-enheter berördes. För mig är lärdomen krasst uttryckt denna: en inloggning skyddar inte barnrummet om den bakomliggande plattformen inte tydligt håller meddelanden, bilder och nycklar åtskilda för varje enhet. Timmy löser inte alla säkerhetsproblem i världen. Men Timmys säkerhetskritiska medie- och parkopplingshemligheter finns inte i en molnkameraplattform.

Vad som verkar ha brustit i Meari-fallet

De offentliga rapporterna beskriver en white-label-plattform. Många varumärken sålde kameror som var beroende av samma Meari/CloudEdge-infrastruktur. Därför är incidenten betydelsefull: när en gemensam plattform definierar en behörighetsgräns felaktigt blir resultatet inte bara en osäker kamera, utan en exponering som omfattar hela enhetsflottan.

Det rapporterade mönstret handlar om mer än svaga standardlösenord. Källor beskriver MQTT-meddelanden utan tillräcklig kontroll av prenumerationer per enhet, offentligt nåbara bildadresser, svag maskering av bilder och statiska eller ur appen utvinningsbara nycklar. Det är ett plattformsfel: infrastrukturen kunde avslöja data som aldrig borde ha varit tillgängliga för ett annat konto.

Risk med molnkamerorSå motverkar Timmys design riskerna
Backend-systemet lagrar eller distribuerar bildhändelser.Timmy har inget molnarkiv för bilder från barnrummet; media skickas live via WebRTC.
En meddelandeförmedlare eller lagringsbehållare måste tillämpa rätt behörighet för varje enhet.Firestore hanterar endast parkopplings- och signaleringsdata; SDP/ICE krypteras innan det skrivs dit.
Statiska nycklar kan påverka en hel enhetsflotta.Varje parkoppling skapar en egen nyckel på enheterna, härledd med P-256 ECDH.
En reläväg kan misstolkas som åtkomst till media.TURN vidarebefordrar krypterade SRTP-paket men tar inte emot medienycklar.

Så skapar Timmy hemligheten

Timmys kod med fyra tecken är avsiktligt inte själva hemligheten. I koden fungerar den bara som en mötespunkt: appen härleder en meetingKey från den så att båda enheterna kan hitta samma utbyte av offentliga nycklar i Firestore. Privata ECDH-nycklar lämnar aldrig enheterna.

Båda enheterna beräknar sedan samma delade hemlighet med P-256 ECDH. Parkopplingsnyckeln härleds lokalt. Den tvåsiffriga SAS-koden härleds från den delade hemligheten och båda sorterade offentliga nycklarna. Om nyckelutbytet manipuleras visar enheterna olika siffror, vilket säger användarna att inte bekräfta parkopplingen.

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
        

Förenklad säkerhetskedja i Timmy: Firestore fungerar som mötespunkt och transport för signalering; TURN är bara ett relä; medietrafiken förblir WebRTC-krypterad.

Varför WebRTC-media inte kan avlyssnas i smyg

WebRTC handlar inte bara om att ”skicka video”. Innan medietrafiken börjar utför enheterna en DTLS-handskakning. SRTP-nycklarna för ljud och video härleds från den säkra transporten. Mediepaketen krypteras sedan med SRTP. En TURN-server kan vidarebefordra paketen, men får inte de nycklar som krävs för att dekryptera ljudet eller videon.

Timmy lägger till ett lager före detta: signaleringsdata som SDP-erbjudanden, SDP-svar och ICE-kandidater krypteras med AES-256-GCM innan de når Firestore. Firestore hjälper enheterna att förhandla; där ska inte okrypterad video, ljud eller okrypterad signalering finnas.

Vad Timmy fortfarande inte påstår

Ingen seriös babyvakt bör påstå sig vara omöjlig att hacka. Om en telefon har komprometterats kan vilken app som helst angripas. En manipulerad appversion förändrar riskbilden. Serverkonfigurationen måste också fortsätta vara korrekt. Timmys mer begränsade påstående gäller arkitekturen: Timmy undviker mediematerial från barnrummet som backend-systemet kan läsa och gör den säkerhetskritiska parkopplingslogiken möjlig att granska i det publikt tillgängliga kärnprojektet.

Frågor att ställa om vilken babykamera som helst

  • Lagrar leverantören bilder eller klipp?
  • Är medieadresserna privata, giltiga under kort tid och behörighetsstyrda per enhet?
  • Skapas nycklar per enhet eller parkoppling i stället för att vara statiska i en app?
  • Kan en meddelandeförmedlare endast leverera meddelanden för den enhet som du faktiskt äger?
  • Gör parkopplingen det möjligt för en person att upptäcka ett försök till man-in-the-middle-attack?

Läs koden

Källor