ସୁରକ୍ଷା ବ୍ୟାଖ୍ୟା

Meari ବେବି କ୍ୟାମେରାର ସୁରକ୍ଷା ତ୍ରୁଟି: Timmy କଣ ଭିନ୍ନ ଭାବେ କରେ

Meari ଘଟଣା ଦେଖାଏ ଯେ ସୁନ୍ଦର login ଥିଲେ ମଧ୍ୟ ତାହା ପର୍ଯ୍ୟାପ୍ତ ନୁହେଁ। Baby monitorର ସୁରକ୍ଷା ତାହାର architecture, authorization ଏବଂ key management ଉପରେ ନିର୍ଭର କରେ।

Galaxus ମୁକ୍ତ ଭାବେ ଦେଖିହେଉଥିବା ବେବି-କ୍ୟାମେରା recording ବିଷୟରେ ଜଣାଇଥିଲା; The Verge କହିଥିଲା ଯେ ପ୍ରାୟ 1.1 ମିଲିୟନ୍ Meari device ପ୍ରଭାବିତ ହୋଇଥିଲା। ମୋ ପାଇଁ ଶିକ୍ଷାଟି ସରଳ: ପଛରେ ଥିବା ପ୍ଲାଟଫର୍ମ ପ୍ରତି device ପାଇଁ message, image କିମ୍ବା keyକୁ ସ୍ପଷ୍ଟ ଭାବେ ଅଲଗା ନ କଲେ, login ନର୍ସରୀକୁ ସୁରକ୍ଷା ଦେଇପାରେ ନାହିଁ। Timmy ଦୁନିଆର ପ୍ରତ୍ୟେକ ସୁରକ୍ଷା ସମସ୍ୟାର ସମାଧାନ କରେ ନାହିଁ। କିନ୍ତୁ Timmyର ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ media ଏବଂ pairing secret କୌଣସି cloud-camera platform ଭିତରେ ରହେ ନାହିଁ।

Meari ଘଟଣାରେ କଣ ବିଫଳ ହୋଇଥିବା ପ୍ରତୀତ ହୁଏ

ସାର୍ବଜନିକ ରିପୋର୍ଟଗୁଡ଼ିକ ଏକ white-label platform ବିଷୟରେ କହେ। ଅନେକ ଦୃଶ୍ୟମାନ brand ଏପରି camera ବିକ୍ରି କରିଥିଲେ ଯାହା ଏକେ Meari/CloudEdge infrastructure ଉପରେ ନିର୍ଭର କରୁଥିଲା। ତେଣୁ ଏହି ଘଟଣାଟି ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ: ଏକ ସାଧାରଣ platform authorization boundary ଭୁଲ ଭାବେ ଧାର୍ଯ୍ୟ କଲେ, କେବଳ ଗୋଟିଏ ଦୁର୍ବଳ camera ନୁହେଁ, ସମଗ୍ର fleetର data ଖୋଲା ହୋଇପାରେ।

ରିପୋର୍ଟ ହୋଇଥିବା ଢାଞ୍ଚାଟି ଦୁର୍ବଳ default passwordଠାରୁ ଆହୁରି ଗମ୍ଭୀର। ସୂତ୍ରଗୁଡ଼ିକ ପ୍ରତି-device subscription control ଯଥେଷ୍ଟ ନଥିବା MQTT message, ସାର୍ବଜନିକ ଭାବେ ପହଞ୍ଚିହେଉଥିବା image URL, ଦୁର୍ବଳ image obfuscation, ଏବଂ static କିମ୍ବା appରୁ ବାହାର କରିହେଉଥିବା key ବିଷୟରେ କହେ। ଏହା platformର ବିଫଳତା: infrastructure ଏପରି data ଦେଖାଇପାରୁଥିଲା ଯାହା କେବେ ବି ଅନ୍ୟ account ପାଇଁ ଉପଲବ୍ଧ ହେବା କଥା ନୁହେଁ।

Cloud-cameraର ଝୁମ୍ପTimmyର ପ୍ରତିରକ୍ଷାମୂଳକ ଡିଜାଇନ୍
Backend image event ସଞ୍ଚୟ କିମ୍ବା ବଣ୍ଟନ କରେ।Timmyରେ ନର୍ସରୀ image ପାଇଁ କୌଣସି cloud archive ନାହିଁ; media live WebRTC ଅଟେ।
ଏକ broker କିମ୍ବା bucketକୁ ପ୍ରତ୍ୟେକ deviceକୁ ସଠିକ୍ ଭାବେ authorize କରିବାକୁ ପଡ଼େ।Firestore କେବଳ pairing ଏବଂ signaling data ବହନ କରେ; SDP/ICE ଲେଖାଯିବା ପୂର୍ବରୁ encrypt ହୁଏ।
Static key ସମଗ୍ର fleetକୁ ପ୍ରଭାବିତ କରିପାରେ।ପ୍ରତ୍ୟେକ pairing deviceଗୁଡ଼ିକରେ ନିଜସ୍ୱ P-256 ECDH-ଉତ୍ପନ୍ନ key ତିଆରି କରେ।
Relay pathକୁ media access ବୋଲି ଭୁଲ ବୁଝାଯାଇପାରେ।TURN ଏନ୍‌କ୍ରିପ୍ଟ ହୋଇଥିବା SRTP ପ୍ୟାକେଟ୍ ଆଗକୁ ପଠାଏ, କିନ୍ତୁ ମିଡିଆ କୀ ପାଏ ନାହିଁ।

Timmy କିପରି secret ତିଆରି କରେ

ଚାରି-ଅକ୍ଷରର Timmy code ଇଚ୍ଛାକୃତ ଭାବେ secret ନୁହେଁ। କୋଡ୍‌ରେ ଏହା କେବଳ ଏକ rendezvous point: app ଏଥିରୁ ଏକ meetingKey ଉତ୍ପନ୍ନ କରେ, ଯାହାଦ୍ୱାରା ଦୁଇଟି device ଏକେ Firestore public-key exchange ଖୋଜିପାରନ୍ତି। Private ECDH key କେବେ ବି device ଛାଡ଼େ ନାହିଁ।

ତାପରେ ଦୁଇଟି device ଏକେ P-256 ECDH shared secret ଗଣନା କରେ। Pairing key ସ୍ଥାନୀୟ ଭାବେ ଉତ୍ପନ୍ନ ହୁଏ। ଦୁଇ-ଅଙ୍କର SAS shared secret ସହିତ ଦୁଇଟି sorted public keyରୁ ଉତ୍ପନ୍ନ ହୁଏ। ସେହି key exchangeରେ ଛେଡ଼ଛାଡ଼ ହେଲେ device ଦୁଇଟି ଭିନ୍ନ ନମ୍ବର ଦେଖାଏ, ଯାହା userଙ୍କୁ pairing confirm ନ କରିବାକୁ କହେ।

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
        

ସରଳୀକୃତ Timmy ସୁରକ୍ଷା ଶୃଙ୍ଖଳା: Firestore rendezvous ଏବଂ signaling transport; TURN କେବଳ relay; media WebRTC-encrypted ହିଁ ରହେ।

WebRTC mediaକୁ ଚୁପଚାପ୍ କାହିଁକି ଦେଖିହେବ ନାହିଁ

WebRTC କେବଳ “video ପଠାନ୍ତୁ” ନୁହେଁ। Media ବହିବା ପୂର୍ବରୁ deviceଗୁଡ଼ିକ DTLS handshake କରନ୍ତି। Audio ଏବଂ video ପାଇଁ SRTP key ସେହି secure transportରୁ ଉତ୍ପନ୍ନ ହୁଏ। ପରେ media packetଗୁଡ଼ିକ SRTP ଭାବେ encrypt ହୁଏ। TURN server ସେହି packetଗୁଡ଼ିକୁ forward କରିପାରେ, କିନ୍ତୁ audio କିମ୍ବା video ଖୋଲିବା ପାଇଁ ଦରକାରୀ key ତାହା ପାଏ ନାହିଁ।

Timmy ତାହା ପୂର୍ବରୁ ଆଉ ଏକ layer ଯୋଡ଼େ: SDP offer, SDP answer ଏବଂ ICE candidate ପରି signaling data Firestoreକୁ ପହଞ୍ଚିବା ପୂର୍ବରୁ AES-256-GCM ସହ encrypt ହୁଏ। Firestore deviceଗୁଡ଼ିକୁ negotiationରେ ସାହାଯ୍ୟ କରେ; ଏଠାରେ cleartext video, audio କିମ୍ବା cleartext signaling ରହିବା ପାଇଁ ନୁହେଁ।

Timmy ତଥାପି କଣ ଦାବି କରେ ନାହିଁ

କୌଣସି ଗମ୍ଭୀର baby monitor ନିଜକୁ hack କରିହେବ ନାହିଁ ବୋଲି ଦାବି କରିବା ଉଚିତ ନୁହେଁ। ଫୋନ୍ compromise ହେଲେ, ଯେକୌଣସି app ଉପରେ ଆକ୍ରମଣ ହୋଇପାରେ। ଦୁଷ୍ଟ ଉଦ୍ଦେଶ୍ୟର app build ଝୁମ୍ପର ଧାରଣାକୁ ବଦଳାଇଦିଏ। Server configuration ସଠିକ୍ ରହିବା ଦରକାର। Timmyର ସୀମିତ ଦାବିଟି architectural: ଏହା backend ପଢ଼ିପାରୁଥିବା ନର୍ସରୀ media artifactକୁ ଏଡ଼ାଏ ଏବଂ ସୁରକ୍ଷା-ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ pairing logicକୁ public core projectରେ ଯାଞ୍ଚଯୋଗ୍ୟ କରେ।

ଯେକୌଣସି ବେବି କ୍ୟାମେରା ବିଷୟରେ ପଚାରିବା ପ୍ରଶ୍ନ

  • ନିର୍ମାତା image କିମ୍ବା clip ସଞ୍ଚୟ କରନ୍ତି କି?
  • Media URLଗୁଡ଼ିକ କି private, ଅଳ୍ପ ସମୟ ପାଇଁ ବୈଧ ଏବଂ ପ୍ରତି device ପାଇଁ authorized?
  • Keyଗୁଡ଼ିକ app ଭିତରେ static ରଖିବା ପରିବର୍ତ୍ତେ ପ୍ରତି device କିମ୍ବା pairing ପାଇଁ ତିଆରି ହୁଏ କି?
  • Broker କି କେବଳ ଆପଣଙ୍କର ନିଜ device ପାଇଁ message ପଠାଇପାରେ?
  • Pairing ଜଣେ ଲୋକଙ୍କୁ man-in-the-middle ଚେଷ୍ଟା ଧରିବାର ସୁଯୋଗ ଦିଏ କି?

କୋଡ୍ ପଢ଼ନ୍ତୁ

ସୂତ୍ର