Galaxus รายงานว่าสามารถเข้าถึงภาพบันทึกจากกล้องเด็กได้โดยไม่มีข้อจำกัด ส่วน The Verge รายงานว่าอุปกรณ์ Meari ได้รับผลกระทบราว 1.1 ล้านเครื่อง สำหรับผม บทเรียนจากเรื่องนี้ชัดเจนว่า การเข้าสู่ระบบไม่อาจปกป้องห้องของลูกได้ หากแพลตฟอร์มเบื้องหลังไม่ได้แยกข้อความ รูปภาพ หรือคีย์ของอุปกรณ์แต่ละเครื่องออกจากกันอย่างรัดกุม Timmy ไม่ได้แก้ปัญหาความปลอดภัยได้ทุกอย่าง แต่ข้อมูลสื่อที่สำคัญและข้อมูลลับสำหรับการจับคู่ของ Timmy ไม่ได้อยู่ในแพลตฟอร์มกล้องบนคลาวด์
สิ่งที่ดูเหมือนจะผิดพลาดในกรณี Meari
รายงานที่เผยแพร่ต่อสาธารณะระบุว่าแพลตฟอร์มนี้เป็นแบบไวต์เลเบล โดยมีแบรนด์จำนวนมากจำหน่ายกล้องที่ใช้โครงสร้างพื้นฐาน Meari/CloudEdge ร่วมกัน นี่คือเหตุผลที่เหตุการณ์ดังกล่าวมีความสำคัญ เพราะเมื่อแพลตฟอร์มที่ใช้ร่วมกันกำหนดขอบเขตการอนุญาตผิดพลาด ผลกระทบไม่ได้จำกัดอยู่ที่กล้องที่ไม่ปลอดภัยเพียงตัวเดียว แต่อาจทำให้อุปกรณ์ทั้งกลุ่มเสี่ยงต่อการเปิดเผยข้อมูล
รูปแบบที่รายงานไม่ได้มีแค่รหัสผ่านเริ่มต้นที่อ่อนแอ แหล่งข้อมูลระบุถึงข้อความ MQTT ที่ไม่มีการควบคุมการสมัครรับข้อมูลรายอุปกรณ์อย่างเพียงพอ URL รูปภาพที่เข้าถึงได้สาธารณะ การพรางรูปภาพที่อ่อนแอ และคีย์แบบคงที่หรือคีย์ที่ดึงออกจากแอปได้ นี่คือความล้มเหลวของแพลตฟอร์ม: โครงสร้างพื้นฐานอาจเปิดเผยข้อมูลที่ไม่ควรมีให้บัญชีอื่นเข้าถึงได้
| ความเสี่ยงของกล้องบนคลาวด์ | แนวทางออกแบบที่ต่างของ Timmy |
|---|---|
| แบ็กเอนด์จัดเก็บหรือเผยแพร่อีเวนต์รูปภาพ | Timmy ไม่มีคลังภาพจากห้องของลูกบนคลาวด์ โดยส่งสื่อแบบสดผ่าน WebRTC |
| โบรกเกอร์หรือพื้นที่จัดเก็บข้อมูลต้องกำหนดสิทธิ์ของอุปกรณ์ทุกเครื่องได้อย่างถูกต้องสมบูรณ์ | Firestore รับส่งเฉพาะข้อมูลการจับคู่และการส่งสัญญาณ; SDP/ICE ถูกเข้ารหัสก่อนเขียนลงไป |
| คีย์แบบคงที่อาจส่งผลต่ออุปกรณ์ทั้งกลุ่ม | การจับคู่แต่ละครั้งสร้างคีย์ของตัวเองที่ได้มาจาก P-256 ECDH บนอุปกรณ์ |
| เส้นทางผ่านรีเลย์อาจถูกเข้าใจผิดว่าเข้าถึงสื่อได้ | TURN ส่งต่อแพ็กเก็ต SRTP ที่เข้ารหัส แต่ไม่ได้รับคีย์สื่อ |
Timmy สร้างความลับอย่างไร
รหัส Timmy ที่มีสี่อักขระไม่ได้ถูกออกแบบมาให้เป็นข้อมูลลับ ในทางเทคนิค รหัสนี้เป็นเพียงจุดนัดพบ โดยแอปจะนำรหัสนี้ไปใช้สร้าง meetingKey เพื่อให้อุปกรณ์ทั้งสองค้นหาการแลกเปลี่ยนกุญแจสาธารณะชุดเดียวกันใน Firestore ได้ กุญแจ ECDH ส่วนตัวจะไม่ออกจากอุปกรณ์เลย
จากนั้นอุปกรณ์ทั้งสองจะคำนวณค่าลับร่วม P-256 ECDH ชุดเดียวกัน โดยสร้างคีย์สำหรับการจับคู่ภายในอุปกรณ์ ค่า SAS สองหลักคำนวณจากค่าลับร่วมและกุญแจสาธารณะของทั้งสองฝ่ายที่นำมาเรียงลำดับแล้ว หากมีผู้แทรกแซงการแลกเปลี่ยนกุญแจ อุปกรณ์จะแสดงตัวเลขต่างกัน เพื่อเตือนผู้ใช้ไม่ให้ยืนยันการจับคู่
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 เป็นจุดนัดพบและช่องทางส่งสัญญาณ; TURN เป็นเพียงรีเลย์; สื่อยังคงเข้ารหัสด้วย WebRTC
เหตุใดจึงแอบดูสื่อ WebRTC ไม่ได้
WebRTC ไม่ได้หมายถึงเพียงการ “ส่งวิดีโอ” ก่อนเริ่มส่งสื่อ อุปกรณ์จะทำการจับมือแบบ DTLS และสร้างคีย์ SRTP สำหรับเสียงและวิดีโอจากการเชื่อมต่อที่ปลอดภัยนี้ จากนั้นจึงเข้ารหัสแพ็กเก็ตสื่อเป็น SRTP เซิร์ฟเวอร์ TURN ส่งต่อแพ็กเก็ตเหล่านั้นได้ แต่ไม่ได้รับคีย์ที่จำเป็นสำหรับถอดรหัสเสียงหรือวิดีโอ
Timmy เพิ่มการป้องกันอีกชั้นก่อนถึงขั้นตอนนั้น โดยเข้ารหัสข้อมูลการส่งสัญญาณ เช่น SDP offer, SDP answer และ ICE candidate ด้วย AES-256-GCM ก่อนส่งไปยัง Firestore Firestore ช่วยให้อุปกรณ์เจรจาการเชื่อมต่อกัน แต่ไม่ได้มีไว้เก็บวิดีโอ เสียง หรือข้อมูลการส่งสัญญาณในรูปแบบที่ไม่ได้เข้ารหัส
สิ่งที่ Timmy ไม่ได้กล่าวอ้าง
ผู้ให้บริการเบบี้มอนิเตอร์ที่จริงจังไม่ควรอ้างว่าผลิตภัณฑ์ของตนไม่มีทางถูกแฮ็ก หากโทรศัพท์ถูกเจาะระบบ แอปใด ๆ ก็อาจถูกโจมตีได้ บิลด์ของแอปที่เป็นอันตรายย่อมทำให้รูปแบบความเสี่ยงเปลี่ยนไป และการตั้งค่าเซิร์ฟเวอร์ต้องถูกต้องอยู่เสมอ สิ่งที่ Timmy ยืนยันในขอบเขตที่แคบกว่าคือเรื่องสถาปัตยกรรม โดยหลีกเลี่ยงการสร้างข้อมูลสื่อจากห้องของลูกที่แบ็กเอนด์สามารถอ่านได้ และเปิดให้ตรวจสอบตรรกะการจับคู่ที่สำคัญต่อความปลอดภัยได้ในโปรเจกต์แกนหลักสาธารณะ
คำถามที่ควรถามเกี่ยวกับกล้องเด็กทุกยี่ห้อ
- ผู้ขายจัดเก็บรูปภาพหรือคลิปหรือไม่?
- URL สื่อเป็นส่วนตัว มีอายุสั้น และกำหนดสิทธิ์รายอุปกรณ์หรือไม่?
- คีย์ถูกสร้างสำหรับแต่ละอุปกรณ์หรือการจับคู่ แทนที่จะเป็นคีย์คงที่ในแอปหรือไม่?
- โบรกเกอร์ส่งข้อความได้เฉพาะสำหรับอุปกรณ์ที่คุณเป็นเจ้าของจริงหรือไม่?
- ขั้นตอนการจับคู่ช่วยให้ผู้ใช้สังเกตเห็นความพยายามโจมตีแบบคนกลาง (man-in-the-middle) ได้หรือไม่?
อ่านโค้ด
- ECDH และ SAS ใน Timmy Core
- Meeting key, document key และ AES-GCM
- กฎ Firestore สำหรับเซสชันและการจับคู่
- เอกสารด้านความปลอดภัยในโปรเจกต์แกนหลัก
แหล่งข้อมูล
- บันทึกภาพจากกล้องเด็กที่เข้าถึงได้อย่างอิสระ · Galaxus
- เบบี้มอนิเตอร์และกล้องรักษาความปลอดภัยหนึ่งล้านเครื่องถูกแฮ็กเกอร์ดูได้อย่างง่ายดาย · The Verge
- ไม่มีใครเอาเด็กไปไว้ตรงมุมห้อง · Sammy Azdoufal
- คู่มือสำหรับผู้ปกครองเกี่ยวกับเหตุการณ์เดียวกัน · Baby Monitor Timmy