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 molnkameror | Så 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
- ECDH och SAS i Timmy Core
- Mötesnyckel, dokumentnyckel och AES-GCM
- Firestore-regler för sessioner och parkoppling
- Säkerhetsdokumentation i kärnprojektet
Källor
- Inspelningar från babykameror fritt tillgängliga · Galaxus
- En miljon babyvakter och övervakningskameror kunde enkelt ses av hackare · The Verge
- ingen sätter Baby i ett hörn · Sammy Azdoufal
- Föräldraguiden för samma incident · Baby Monitor Timmy