Επεξήγηση ασφάλειας

Ευπάθεια ασφαλείας στις κάμερες παρακολούθησης μωρού Meari: τι κάνει διαφορετικά το Timmy

Η υπόθεση Meari δείχνει ότι ακόμη και μια προσεγμένη διαδικασία σύνδεσης δεν αρκεί. Η ασφάλεια μιας βρεφικής ενδοεπικοινωνίας εξαρτάται από την αρχιτεκτονική, την εξουσιοδότηση και τη διαχείριση κλειδιών.

Το Galaxus ανέφερε ότι εγγραφές από κάμερες παρακολούθησης μωρού ήταν ελεύθερα προσβάσιμες, ενώ το The Verge έκανε λόγο για περίπου 1,1 εκατομμύρια επηρεαζόμενες συσκευές Meari. Για μένα, το συμπέρασμα είναι απλό: μια διαδικασία σύνδεσης δεν προστατεύει το παιδικό δωμάτιο, αν η πλατφόρμα που βρίσκεται πίσω της δεν διαχωρίζει σωστά τα μηνύματα, τις εικόνες και τα κλειδιά ανά συσκευή. Το Timmy δεν λύνει κάθε πρόβλημα ασφαλείας. Ωστόσο, τα κρίσιμα μυστικά πολυμέσων και σύζευξης του Timmy δεν αποθηκεύονται σε μια πλατφόρμα καμερών cloud.

Τι φαίνεται να απέτυχε στην υπόθεση Meari

Οι δημόσιες αναφορές περιγράφουν μια πλατφόρμα που διατίθεται με την επωνυμία διαφορετικών εταιρειών. Πολλές εμπορικές μάρκες πωλούσαν κάμερες που βασίζονταν στην ίδια υποδομή Meari/CloudEdge. Γι’ αυτό το περιστατικό έχει σημασία: όταν μια κοινή πλατφόρμα ορίζει λανθασμένα τα όρια εξουσιοδότησης, το αποτέλεσμα δεν είναι μία ευάλωτη κάμερα, αλλά η έκθεση ενός ολόκληρου στόλου συσκευών.

Το μοτίβο που αναφέρθηκε ξεπερνά τους αδύναμους προεπιλεγμένους κωδικούς. Οι πηγές περιγράφουν μηνύματα MQTT χωρίς επαρκείς ελέγχους συνδρομής ανά συσκευή, δημόσια προσβάσιμα URL εικόνων, αδύναμη απόκρυψη εικόνων και στατικά ή εξαγώγιμα από την εφαρμογή κλειδιά. Πρόκειται για αποτυχία της πλατφόρμας: η υποδομή μπορούσε να αποκαλύψει δεδομένα που δεν έπρεπε ποτέ να είναι διαθέσιμα σε διαφορετικό λογαριασμό.

Κίνδυνοι των καμερών cloudΗ διαφορετική σχεδιαστική προσέγγιση του Timmy
Το backend αποθηκεύει ή διανέμει συμβάντα που περιέχουν εικόνες.Το Timmy δεν διαθέτει αρχείο cloud για εικόνες από το παιδικό δωμάτιο· τα πολυμέσα μεταδίδονται ζωντανά μέσω WebRTC.
Ένας διαμεσολαβητής μηνυμάτων ή ένας χώρος αποθήκευσης πρέπει να εξουσιοδοτεί άψογα κάθε συσκευή.Το Firestore μεταφέρει μόνο δεδομένα ζευγοποίησης και σηματοδότησης· τα SDP/ICE κρυπτογραφούνται πριν εγγραφούν.
Τα στατικά κλειδιά μπορούν να επηρεάσουν ολόκληρο στόλο συσκευών.Κάθε ζευγοποίηση δημιουργεί στις συσκευές το δικό της κλειδί που παράγεται με P-256 ECDH.
Μια διαδρομή relay μπορεί να εκληφθεί λανθασμένα ως πρόσβαση στα πολυμέσα.Το 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 είναι μόνο relay· τα πολυμέσα παραμένουν κρυπτογραφημένα με WebRTC.

Γιατί κανείς δεν μπορεί να παρακολουθεί κρυφά τα πολυμέσα WebRTC

Το WebRTC δεν σημαίνει απλώς «στείλε βίντεο». Πριν αρχίσει η ροή πολυμέσων, οι συσκευές εκτελούν μια χειραψία DTLS. Τα κλειδιά SRTP για τον ήχο και το βίντεο παράγονται μέσω αυτής της ασφαλούς σύνδεσης. Στη συνέχεια, τα πακέτα πολυμέσων κρυπτογραφούνται με SRTP. Ένας διακομιστής TURN μπορεί να προωθεί αυτά τα πακέτα, αλλά δεν λαμβάνει τα κλειδιά που απαιτούνται για την αποκρυπτογράφηση του ήχου ή του βίντεο.

Το Timmy προσθέτει ένα προηγούμενο επίπεδο προστασίας: δεδομένα σηματοδότησης, όπως προσφορές SDP, απαντήσεις SDP και υποψήφιοι ICE, κρυπτογραφούνται με AES-256-GCM προτού φτάσουν στο Firestore. Το Firestore βοηθά τις συσκευές να διαπραγματευτούν τη σύνδεση· δεν προορίζεται για την αποθήκευση μη κρυπτογραφημένου βίντεο, ήχου ή δεδομένων σηματοδότησης.

Τι δεν ισχυρίζεται το Timmy

Καμία σοβαρή βρεφική ενδοεπικοινωνία δεν πρέπει να ισχυρίζεται ότι είναι απαραβίαστη. Αν ένα τηλέφωνο παραβιαστεί, μπορεί να γίνει επίθεση σε οποιαδήποτε εφαρμογή. Μια κακόβουλη έκδοση της εφαρμογής αλλάζει το μοντέλο κινδύνου. Η διαμόρφωση των διακομιστών πρέπει επίσης να παραμένει σωστή. Ο πιο περιορισμένος ισχυρισμός του Timmy αφορά την αρχιτεκτονική του: αποφεύγει τη δημιουργία αρχείων πολυμέσων από το παιδικό δωμάτιο τα οποία θα μπορούσε να διαβάσει το backend και επιτρέπει τον έλεγχο της κρίσιμης για την ασφάλεια λογικής σύζευξης στο δημόσια διαθέσιμο βασικό έργο.

Ερωτήσεις που αξίζει να κάνετε για κάθε κάμερα παρακολούθησης μωρού

  • Αποθηκεύει ο πάροχος εικόνες ή κλιπ;
  • Είναι τα URL πολυμέσων ιδιωτικά, βραχύβια και εξουσιοδοτημένα ανά συσκευή;
  • Τα κλειδιά παράγονται ανά συσκευή ή ζευγοποίηση, αντί να είναι στατικά μέσα σε μια εφαρμογή;
  • Μπορεί ο διαμεσολαβητής μηνυμάτων να παραδίδει μόνο τα μηνύματα της συσκευής που πραγματικά σας ανήκει;
  • Επιτρέπει η διαδικασία σύζευξης στον χρήστη να αντιληφθεί μια επίθεση ενδιάμεσου μέρους;

Διαβάστε τον κώδικα

Πηγές