Επίθεση εξαγωγής κρυφής μνήμης CPU που υλοποιείται σε πρόγραμμα περιήγησης ιστού χωρίς JavaScript

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

Για την ανάλυση των περιεχομένων της κρυφής μνήμης, όλες οι επιθέσεις χρησιμοποιούν τη μέθοδο Prime+Probe, η οποία περιλαμβάνει την πλήρωση της κρυφής μνήμης με ένα τυπικό σύνολο τιμών και την ανίχνευση αλλαγών μετρώντας τον χρόνο πρόσβασης σε αυτές κατά την επαναπλήρωσή τους. Για να παρακαμφθούν οι μηχανισμοί ασφαλείας που υπάρχουν στα προγράμματα περιήγησης που παρεμβαίνουν στην ακριβή μέτρηση του χρόνου, σε δύο επιλογές, γίνεται ένσταση σε έναν διακομιστή DNS ή WebSocket που ελέγχεται από τον εισβολέα, ο οποίος διατηρεί ένα αρχείο καταγραφής του χρόνου των αιτημάτων που λαμβάνονται. Σε μια υλοποίηση, ένας σταθερός χρόνος απόκρισης DNS χρησιμοποιείται ως χρονική αναφορά.

Οι μετρήσεις που έγιναν χρησιμοποιώντας εξωτερικούς διακομιστές DNS ή WebSocket, χρησιμοποιώντας ένα σύστημα ταξινόμησης βασισμένο στη μηχανική εκμάθηση, ήταν επαρκείς για την πρόβλεψη τιμών με ακρίβεια έως και 98% στο βέλτιστο σενάριο (μέσος όρος 80-90%). Οι μέθοδοι επίθεσης έχουν δοκιμαστεί σε διάφορες πλατφόρμες υλικού (Intel, AMD Ryzen, Apple M1, Samsung Exynos) και έχουν αποδειχθεί καθολικές.

Επίθεση εξαγωγής κρυφής μνήμης CPU που υλοποιείται σε πρόγραμμα περιήγησης ιστού χωρίς JavaScript

Η πρώτη παραλλαγή της επίθεσης DNS Racing χρησιμοποιεί μια κλασική υλοποίηση της μεθόδου Prime+Probe χρησιμοποιώντας πίνακες JavaScript. Οι διαφορές συνοψίζονται στη χρήση ενός εξωτερικού χρονοδιακόπτη που βασίζεται σε DNS και ενός χειριστή ενός σφάλματος, ο οποίος ενεργοποιείται όταν γίνεται προσπάθεια φόρτωσης μιας εικόνας από έναν ανύπαρκτο τομέα. Ένα εξωτερικό χρονόμετρο επιτρέπει μια επίθεση Prime+Probe σε προγράμματα περιήγησης που περιορίζουν ή απενεργοποιούν πλήρως την πρόσβαση σε χρονόμετρα JavaScript.

Για έναν διακομιστή DNS που βρίσκεται στο ίδιο δίκτυο Ethernet, η ακρίβεια του χρονοδιακόπτη υπολογίζεται ότι είναι περίπου 2 ms, που είναι αρκετό για να πραγματοποιηθεί μια επίθεση πλευρικού καναλιού (για σύγκριση, η ακρίβεια του τυπικού χρονοδιακόπτη JavaScript στο Tor Browser είναι μειωθεί στα 100 ms). Για την επίθεση, δεν απαιτείται έλεγχος του διακομιστή DNS, καθώς ο χρόνος εκτέλεσης της λειτουργίας επιλέγεται έτσι ώστε ο χρόνος απόκρισης από το DNS να χρησιμεύει ως ένδειξη προηγούμενης ολοκλήρωσης του ελέγχου (ανάλογα με το αν ενεργοποιήθηκε ο χειριστής ενός σφάλματος νωρίτερα ή αργότερα, συνάγεται ένα συμπέρασμα σχετικά με την ταχύτητα της λειτουργίας ελέγχου με τη μνήμη cache) .

Η δεύτερη μέθοδος επίθεσης, "String and Sock", στοχεύει στην παράκαμψη τεχνικών ασφαλείας που περιορίζουν τη χρήση χαμηλού επιπέδου συστοιχιών στο JavaScript. Αντί για πίνακες, το String and Sock χρησιμοποιεί λειτουργίες σε πολύ μεγάλες συμβολοσειρές, το μέγεθος των οποίων επιλέγεται έτσι ώστε η μεταβλητή να καλύπτει ολόκληρη την κρυφή μνήμη LLC (Cache τελευταίου επιπέδου). Στη συνέχεια, χρησιμοποιώντας τη συνάρτηση indexOf(), αναζητείται μια μικρή υποσυμβολοσειρά στη συμβολοσειρά, η οποία αρχικά απουσιάζει στη συμβολοσειρά πηγής, δηλ. η λειτουργία αναζήτησης οδηγεί σε επανάληψη σε ολόκληρη τη συμβολοσειρά. Δεδομένου ότι το μέγεθος της γραμμής αντιστοιχεί στο μέγεθος της κρυφής μνήμης LLC, η σάρωση σάς επιτρέπει να εκτελέσετε μια λειτουργία ελέγχου προσωρινής μνήμης χωρίς να χειριστείτε τους πίνακες. Για τη μέτρηση των καθυστερήσεων, αντί για DNS, γίνεται κλήση σε διακομιστή WebSocket που ελέγχεται από τον εισβολέα - πριν και μετά την ολοκλήρωση της λειτουργίας αναζήτησης, αποστέλλονται ερωτήματα στη γραμμή, βάσει των οποίων ο διακομιστής υπολογίζει την καθυστέρηση που χρησιμοποιείται για την ανάλυση της κρυφής μνήμης περιεχόμενα.

Η τρίτη παραλλαγή της επίθεσης "CSS PP0" υλοποιείται μέσω HTML και CSS και μπορεί να λειτουργήσει σε προγράμματα περιήγησης με απενεργοποιημένη JavaScript. Η μέθοδος είναι παρόμοια με το "String and Sock", αλλά δεν συνδέεται με JavaScript. Κατά τη διάρκεια της επίθεσης, δημιουργείται ένα σύνολο επιλογέων CSS που αναζητούν με μάσκα. Η αρχική μεγάλη συμβολοσειρά που γεμίζει την κρυφή μνήμη ορίζεται δημιουργώντας μια ετικέτα div με ένα πολύ μεγάλο όνομα κλάσης. Μέσα υπάρχει ένα σύνολο άλλων div με τα δικά τους αναγνωριστικά. Κάθε ένα από αυτά τα ένθετα div έχει το δικό του στυλ με έναν επιλογέα που αναζητά μια υποσυμβολοσειρά. Κατά την απόδοση μιας σελίδας, το πρόγραμμα περιήγησης προσπαθεί πρώτα να επεξεργαστεί τα εσωτερικά div, τα οποία καταλήγουν σε μια λειτουργία αναζήτησης σε μια μεγάλη σειρά. Η αναζήτηση εκτελείται χρησιμοποιώντας μια μάσκα που λείπει εσκεμμένα και οδηγεί σε επανάληψη σε ολόκληρη τη γραμμή, μετά την οποία ενεργοποιείται η συνθήκη «μη» και γίνεται προσπάθεια φόρτωσης μιας εικόνας φόντου που αναφέρεται σε τυχαίους τομείς: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … Χ Χ ...

Οι υποτομείς εξυπηρετούνται από τον διακομιστή DNS του εισβολέα, ο οποίος μπορεί να μετρήσει τις καθυστερήσεις στη λήψη αιτημάτων. Ο διακομιστής DNS εκδίδει NXDOMAIN για όλα τα αιτήματα και διατηρεί ένα αρχείο καταγραφής του ακριβούς χρόνου των αιτημάτων. Ως αποτέλεσμα της επεξεργασίας ενός συνόλου div, ο διακομιστής DNS του εισβολέα λαμβάνει μια σειρά από αιτήματα, οι καθυστερήσεις μεταξύ των οποίων συσχετίζονται με το αποτέλεσμα του ελέγχου των περιεχομένων της κρυφής μνήμης.

Επίθεση εξαγωγής κρυφής μνήμης CPU που υλοποιείται σε πρόγραμμα περιήγησης ιστού χωρίς JavaScript


Πηγή: opennet.ru

Προσθέστε ένα σχόλιο