Penjelasan keselamatan

Kerentanan Keselamatan Kamera Bayi Meari: Apa yang Timmy Lakukan Secara Berbeza

Kes Meari menunjukkan bahawa log masuk yang kemas sahaja tidak mencukupi. Keselamatan monitor bayi bergantung pada seni bina, kebenaran akses dan pengurusan kunci.

Galaxus melaporkan rakaman kamera bayi yang boleh diakses secara bebas; The Verge melaporkan kira-kira 1.1 juta peranti Meari terjejas. Bagi saya, pengajarannya jelas: log masuk tidak melindungi bilik bayi jika platform di belakangnya gagal memisahkan mesej, imej atau kunci dengan baik bagi setiap peranti. Timmy tidak menyelesaikan setiap masalah keselamatan di dunia. Namun, rahsia media dan penggandingan Timmy yang kritikal dari segi keselamatan tidak disimpan dalam platform kamera awan.

Apa yang nampaknya gagal dalam kes Meari

Laporan awam menerangkan platform label putih. Banyak jenama yang kelihatan berbeza menjual kamera yang bergantung pada infrastruktur Meari/CloudEdge yang sama. Itulah sebab insiden ini penting: apabila platform bersama menetapkan sempadan kebenaran akses dengan salah, hasilnya bukan satu kamera yang lemah, tetapi pendedahan pada tahap keseluruhan kumpulan peranti.

Corak yang dilaporkan melangkaui kata laluan lalai yang lemah. Sumber menerangkan mesej MQTT tanpa kawalan langganan yang mencukupi bagi setiap peranti, URL imej yang boleh dicapai secara terbuka, penyamaran imej yang lemah, serta kunci statik atau kunci yang boleh diekstrak daripada aplikasi. Ini ialah kegagalan platform: infrastruktur boleh mendedahkan data yang sepatutnya tidak pernah tersedia kepada akaun lain.

Risiko kamera awanPendekatan reka bentuk Timmy
Sistem pelayan menyimpan atau mengedarkan peristiwa imej.Timmy tidak mempunyai arkib awan untuk imej bilik bayi; media dihantar secara langsung melalui WebRTC.
Broker atau bekas storan mesti mengesahkan akses bagi setiap peranti dengan betul.Firestore hanya membawa data penggandingan dan pensinyalan; SDP/ICE disulitkan sebelum ditulis.
Kunci statik boleh menjejaskan keseluruhan kumpulan peranti.Setiap penggandingan menghasilkan kunci tersendiri yang diperoleh melalui P-256 ECDH pada peranti.
Laluan relai mungkin disalah anggap sebagai akses media.TURN meneruskan paket SRTP yang disulitkan tetapi tidak menerima kunci media.

Cara Timmy mencipta rahsia

Kod Timmy empat aksara itu memang sengaja tidak dijadikan rahsia. Dalam kod, ia hanya titik pertemuan: aplikasi memperoleh satu meetingKey daripadanya supaya kedua-dua peranti boleh mencari pertukaran kunci awam Firestore yang sama. Kunci ECDH peribadi tidak pernah meninggalkan peranti.

Kedua-dua peranti kemudian mengira rahsia bersama P-256 ECDH yang sama. Kunci penggandingan diperoleh secara setempat. SAS dua digit diperoleh daripada rahsia bersama serta kedua-dua kunci awam yang diisih. Jika pertukaran kunci itu diusik, peranti akan memaparkan nombor yang berbeza, yang memberitahu pengguna supaya tidak mengesahkan penggandingan.

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
        

Rantaian keselamatan Timmy yang dipermudah: Firestore ialah titik pertemuan dan saluran pensinyalan; TURN hanyalah relai; media kekal disulitkan melalui WebRTC.

Mengapa media WebRTC tidak boleh ditonton secara senyap

WebRTC bukan sekadar "hantar video". Sebelum media dihantar, peranti menjalankan jabat tangan DTLS. Kunci SRTP untuk audio dan video diperoleh daripada pengangkutan selamat itu. Paket media kemudian disulitkan sebagai SRTP. Pelayan TURN boleh meneruskan paket tersebut, tetapi tidak menerima kunci yang diperlukan untuk membuka audio atau video.

Timmy menambah satu lapisan sebelum itu: data pensinyalan seperti tawaran SDP, jawapan SDP dan calon ICE disulitkan dengan AES-256-GCM sebelum sampai ke Firestore. Firestore membantu peranti berunding; video, audio atau data pensinyalan dalam bentuk teks biasa tidak sepatutnya disimpan di situ.

Perkara yang tidak didakwa oleh Timmy

Tiada monitor bayi yang serius patut mendakwa bahawa produknya mustahil digodam. Jika telefon terjejas, mana-mana aplikasi boleh diserang. Versi aplikasi yang berniat jahat mengubah model risiko. Konfigurasi pelayan mesti kekal betul. Dakwaan Timmy lebih khusus dari segi seni bina: Timmy mengelakkan artifak media bilik bayi yang boleh dibaca oleh sistem pelayan dan membolehkan logik penggandingan yang kritikal dari segi keselamatan diperiksa dalam projek teras awam.

Soalan untuk ditanya tentang mana-mana kamera bayi

  • Adakah pembekal menyimpan imej atau klip?
  • Adakah URL media bersifat peribadi, sementara dan diberi kebenaran bagi setiap peranti?
  • Adakah kunci dijana bagi setiap peranti atau penggandingan, bukannya kekal statik dalam aplikasi?
  • Bolehkah broker hanya menghantar mesej untuk peranti yang benar-benar anda miliki?
  • Adakah proses penggandingan membolehkan pengguna menyedari cubaan serangan pihak di tengah (man-in-the-middle)?

Baca kod

Sumber