Βρήκα ένα σημαντικό ελάττωμα στον τρόπο ιδιωτικής περιήγησης του Mozilla.

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

Σε αυτό το άρθρο, θα συζητήσω λεπτομέρειες για ένα σφάλμα που ανακάλυψα με τη λειτουργία ιδιωτικής περιήγησης Mozilla Firefox που επέτρεψε την παρακολούθηση ιδιωτικών περιόδων περιήγησης.

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

Οι προσφερόμενες δυνατότητες ενδέχεται να διαφέρουν από το ένα πρόγραμμα περιήγησης στο άλλο, αλλά τουλάχιστον ένας χρήστης που χρησιμοποιεί ιδιωτική περιήγηση έχει τις δύο πιο βασικές απαιτήσεις:

1. Οι ιστότοποι που επισκέπτονται ιδιωτικά δεν μπορούν να αποθηκεύσουν δεδομένα

2. Οι σελίδες που επισκέπτεστε δεν αποθηκεύονται

Λοιπόν, ανακάλυψα ότι η λειτουργία ιδιωτικής περιήγησης του προγράμματος περιήγησης Firefox δεν πληρούσε καμία από τις παραπάνω απαιτήσεις.

Τεχνικές λεπτομέρειες

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

Υπάρχουν πολλοί τρόποι αποθήκευσης δεδομένων σε ένα πρόγραμμα περιήγησης - LocalStorage, WebSQL και IndexedDB.

Πρόσφατα συνάντησα το χώρο αποθήκευσης IndexedDB.

Το IndexedDB είναι ένα API χαμηλού επιπέδου για αποθήκευση σημαντικών ποσοτήτων δομημένων δεδομένων από την πλευρά του πελάτη, συμπεριλαμβανομένων αρχείων / blobs - Mozilla Developer Network

Παρόλο που, σύμφωνα με την τεκμηρίωση, το IndexedDB δεν θα πρέπει να είναι διαθέσιμο σε λειτουργία ιδιωτικής περιήγησης.

Εάν χρησιμοποιείτε το IndexedDB απευθείας στην ιστοσελίδα, θα εμφανιστεί σφάλμα:

Αλλά τι θα συμβεί εάν συνδυάσετε το IndexedDB με το Web Workers;

Το Web Workers καθιστά δυνατή την εκτέλεση μιας λειτουργίας σεναρίου σε νήμα φόντου ξεχωριστά από το κύριο νήμα εκτέλεσης μιας εφαρμογής ιστού - Mozilla Developer Network

Λεπτομέρειες ζητήματος: The Fallout

Μπορείτε να έχετε πρόσβαση στο IndexedDB σε λειτουργία ιδιωτικής περιήγησης μέσω Web Workers Όχι μόνο αυτό, αλλά όταν το πρόγραμμα περιήγησης είναι κλειστό, τα δεδομένα IndexedDB δεν διαγράφονται. Αυτά τα αποθηκευμένα δεδομένα θα παραμείνουν σε πολλές συνεδρίες ιδιωτικής περιήγησης, επειδή δεν διαγράφονται κατά την έξοδο. ;

Ας δούμε λοιπόν μερικούς τρόπους κατάχρησης αυτού του ζητήματος.

Ιστοσελίδες

Ένας κακόβουλος ιστότοπος μπορεί να αξιοποιήσει το IndexedDB και να παρακολουθεί τους χρήστες σε περιόδους ιδιωτικής περιήγησης. Για παράδειγμα, ας πούμε ότι επισκεφθήκατε το badsite.com, το οποίο χρησιμοποιεί Web Workers και IndexedDB σε λειτουργία ιδιωτικής περιήγησης. Κλείστε το παράθυρο ιδιωτικής περιήγησης, κλείστε τον Firefox, ξεκινήστε ξανά τον Firefox, ξεκινήστε τη λειτουργία ιδιωτικής περιήγησης και επισκεφθείτε ξανά το badsite.com. Ο ιστότοπος θα μπορεί να έχει πρόσβαση στα δεδομένα από την προηγούμενη συνεδρία ιδιωτικής περιήγησής σας, καθώς τα δεδομένα εξακολουθούν να αποθηκεύονται στο IndexedDB.

Τρίτους

Ας υποθέσουμε ότι το siteA.com φορτώνει ένα σενάριο αναλυτικών στοιχείων από το BadAnalyticsSite.com. Στη συνέχεια, ένας άλλος ιστότοπος, το siteB.com , φορτώνει επίσης ένα σενάριο αναλυτικών στοιχείων από τον ίδιο ιστότοπο BadAnalyticsSite.com . Δεδομένου ότι ο κακόβουλος ιστότοπος BadAnalyticsSite.com χρησιμοποιεί Web Workers και IndexedDB, ο ιστότοπος BadAnalyticsSite.com μπορεί πλέον να παρακολουθεί τους χρήστες των ιστότοπων siteA.com και siteB.com σε όλες τις ιδιωτικές περιόδους περιήγησής τους.

Διαρροές δίσκου

Το IndexedDB συμμορφώνεται με μια πολιτική ίδιας προέλευσης, που σημαίνει ότι κάθε βάση δεδομένων έχει ένα όνομα που την αναγνωρίζει μέσα σε μια προέλευση. Επειδή το όνομα τομέα χρησιμοποιείται ως μέρος του ονόματος αρχείου, αυτό μπορεί να οδηγήσει σε σοβαρά προβλήματα όταν χρησιμοποιείται σε ιδιωτική λειτουργία.

Για παράδειγμα, εάν ένας χρήστης επισκεφθεί μια δοκιμαστική ιστοσελίδα (επίδειξη) που χρησιμοποιεί το Web Workers + IndexedDB που φιλοξενείται cdn.cliqz.comκαι φορτώνει έναν πόρο από konarkmodi.github.io, δημιουργούνται οι ακόλουθες δύο καταχωρίσεις στο δίσκο.

Λόγω του παραπάνω ελαττώματος, ένας ιστότοπος / ιχνηλάτης θα μπορούσε να δημιουργήσει αποτελεσματικά ένα δακτυλικό αποτύπωμα και να το αποθηκεύσει. Ακόμα κι αν ένας χρήστης διαγράψει το ιστορικό του ιστότοπου ή επιλέξει την επιλογή "ξεχάστε αυτόν τον ιστότοπο", ο χώρος αποθήκευσης IndexDB δεν καταργείται. Αυτό μπορεί να δημιουργήσει έναν μόνιμο χώρο αποθήκευσης για έναν ιστότοπο ή έναν ιχνηλάτη που μπορεί να αξιοποιηθεί για πάντα.

Αναφορά και επιδιορθώσεις

Η Mozilla ενθαρρύνει την έρευνα ασφάλειας για τα προϊόντα τους. Με τα δικά τους λόγια:

Το πρόγραμμα Mozilla Client Security Bug Bounty έχει σχεδιαστεί για να ενθαρρύνει την έρευνα ασφάλειας στο λογισμικό Mozilla και να ανταμείβει όσους μας βοηθούν να δημιουργήσουμε το ασφαλέστερο λογισμικό Διαδικτύου που υπάρχει.

Ανέφερα αυτό το ζήτημα τον Οκτώβριο του 2017 μέσω του Προγράμματος Bug Bounty και το ζήτημα επιλύθηκε τον Νοέμβριο του 2017. Ήταν πρόθυμοι να εντοπίσουν και να διορθώσουν τα προβλήματα.

Για περισσότερες λεπτομέρειες, μπορείτε να διαβάσετε την πλήρη αναφορά σφαλμάτων στο Mozilla's Bugzilla.

Εκτιμώ πραγματικά τις προσπάθειες και τις ενέργειες της Mozilla για την επίλυση προβλημάτων με ύψιστη προτεραιότητα όσον αφορά το απόρρητο των χρηστών του.

Καλές εισβολές!

Μπορείτε να με ακολουθήσετε στο Twitter στο Konark Modi

Ευχαριστούμε που διαβάσατε και μοιραστήκατε! :)

Αν σας άρεσε αυτή η ιστορία, μη διστάσετε να ??? μερικές φορές (Έως 50 φορές. Σοβαρά).

Συντελεστές: Ιδιαίτερες ευχαριστίες στους Remi και Pallavi για την κριτική αυτής της ανάρτησης :)