Penjelasan keamanan

Kerentanan Keamanan Kamera Bayi Meari: Apa yang Dilakukan Timmy Secara Berbeda

Kasus Meari menunjukkan bahwa tampilan login yang rapi saja tidak cukup. Keamanan baby monitor bergantung pada arsitektur, otorisasi, dan pengelolaan kunci.

Galaxus melaporkan rekaman kamera bayi yang dapat diakses bebas; The Verge melaporkan sekitar 1,1 juta perangkat Meari terdampak. Bagi saya, pelajarannya jelas: login tidak melindungi kamar bayi jika platform di baliknya gagal memisahkan pesan, gambar, atau kunci dengan benar untuk setiap perangkat. Timmy tidak menyelesaikan semua masalah keamanan di dunia. Namun, rahasia media dan pairing yang penting di Timmy tidak berada di dalam platform kamera cloud.

Apa yang tampaknya gagal dalam kasus Meari

Laporan publik menggambarkan sebuah platform white-label. Banyak merek yang terlihat oleh konsumen menjual kamera yang bergantung pada infrastruktur Meari/CloudEdge yang sama. Itulah sebabnya insiden ini penting: ketika platform bersama menetapkan batas otorisasi secara keliru, akibatnya bukan hanya satu kamera yang lemah, melainkan paparan pada seluruh armada perangkat.

Pola yang dilaporkan lebih dari sekadar kata sandi bawaan yang lemah. Sumber menyebut pesan MQTT tanpa kontrol langganan yang memadai per perangkat, URL gambar yang dapat dijangkau publik, penyamaran gambar yang lemah, serta kunci statis atau kunci yang dapat diekstrak dari aplikasi. Ini adalah kegagalan platform: infrastruktur dapat mengungkap data yang seharusnya tidak pernah tersedia bagi akun lain.

Risiko kamera cloudRancangan tandingan Timmy
Backend menyimpan atau mendistribusikan peristiwa gambar.Timmy tidak memiliki arsip cloud untuk gambar kamar bayi; medianya adalah WebRTC langsung.
Broker atau bucket harus mengotorisasi setiap perangkat dengan sempurna.Firestore hanya membawa data pairing dan signaling; SDP/ICE dienkripsi sebelum ditulis.
Kunci statis dapat memengaruhi seluruh armada perangkat.Setiap pairing membuat kunci tersendiri yang diturunkan dari P-256 ECDH pada perangkat.
Jalur relay bisa disalahartikan sebagai akses ke media.TURN meneruskan paket SRTP terenkripsi, tetapi tidak menerima kunci media.

Cara Timmy membuat rahasia

Kode Timmy yang terdiri dari empat karakter memang bukan rahasianya. Dalam kode, itu hanya titik temu: aplikasi menurunkan sebuah meetingKey kunci pertemuan darinya agar kedua perangkat dapat menemukan pertukaran kunci publik Firestore yang sama. Kunci ECDH privat tidak pernah meninggalkan perangkat.

Kedua perangkat kemudian menghitung rahasia bersama P-256 ECDH yang sama. Kunci pairing diturunkan secara lokal. SAS dua digit diturunkan dari rahasia bersama ditambah kedua kunci publik yang diurutkan. Jika pertukaran kunci itu dimanipulasi, perangkat akan menampilkan angka yang berbeda, sehingga pengguna tahu untuk tidak mengonfirmasi pairing.

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
        

Rantai keamanan Timmy yang disederhanakan: Firestore menjadi titik temu dan transport signaling; TURN hanya relay; media tetap terenkripsi dengan WebRTC.

Mengapa media WebRTC tidak bisa diam-diam ditonton

WebRTC bukan sekadar “mengirim video”. Sebelum media mengalir, perangkat menjalankan handshake DTLS. Kunci SRTP untuk audio dan video diturunkan dari transport aman tersebut. Paket media kemudian dienkripsi sebagai SRTP. Server TURN dapat meneruskan paket itu, tetapi tidak menerima kunci yang diperlukan untuk membuka audio atau video.

Timmy menambahkan satu lapisan sebelumnya: data signaling seperti penawaran SDP, jawaban SDP, dan kandidat ICE dienkripsi dengan AES-256-GCM sebelum mencapai Firestore. Firestore membantu perangkat bernegosiasi; Firestore bukan tempat video, audio, atau signaling teks biasa disimpan.

Hal yang tetap tidak diklaim Timmy

Tidak ada baby monitor yang serius seharusnya mengklaim mustahil diretas. Jika ponsel disusupi, aplikasi apa pun dapat diserang. Build aplikasi yang berbahaya mengubah model risiko. Konfigurasi server harus tetap benar. Klaim Timmy yang lebih terbatas adalah soal arsitektur: Timmy menghindari artefak media kamar bayi yang dapat dibaca backend dan membuat logika pairing yang penting bagi keamanan dapat diperiksa di proyek inti publik.

Pertanyaan untuk diajukan tentang kamera bayi apa pun

  • Apakah penyedia menyimpan gambar atau klip?
  • Apakah URL media bersifat privat, berumur singkat, dan diotorisasi untuk tiap perangkat?
  • Apakah kunci dibuat per perangkat atau pairing, bukan statis di dalam aplikasi?
  • Apakah broker hanya dapat mengirimkan pesan untuk perangkat yang benar-benar Anda miliki?
  • Apakah pairing memungkinkan seseorang menyadari upaya man-in-the-middle?

Baca kodenya

Sumber