Μια νέα επίθεση που ονομάζεται Inception μπορεί να χρησιμοποιηθεί για τη διαρροή ευαίσθητων δεδομένων από οποιαδήποτε CPU της AMD.
Βασικά Takeaways
- Ερευνητές από το ETH Ζυρίχης ανέπτυξαν μια νέα επίθεση προσωρινής εκτέλεσης που ονομάζεται Training in Transient Execution (TTE), το οποίο εκμεταλλεύεται την κερδοσκοπική εκτέλεση για να διαρρεύσει μνήμη του πυρήνα και να αποκτήσει πρόσβαση σε ευαίσθητα αρχεία όπως το /etc/shadow στο Linux μηχανές.
- Στην αρχή, το end-to-end exploit που δημιουργήθηκε με χρήση TTE, μπορεί να διαρρεύσει έως και 39 byte ανά δευτερόλεπτο στο AMD Zen 4 επεξεργαστές και να ανακτήσουν με επιτυχία κατακερματισμένους κωδικούς πρόσβασης λογαριασμού χρήστη που είναι αποθηκευμένοι στο /etc/shadow εντός 40 λεπτά.
- Η έναρξη διαφέρει από άλλες επιθέσεις μεταβατικής εκτέλεσης με την εισαγωγή νέων προβλέψεων στον προγνωστικό κλάδου κατά τη διάρκεια του παροδικό παράθυρο, δημιουργώντας πιο ισχυρά μεταβατικά παράθυρα που μπορούν να χρησιμοποιηθούν για την υπερχείλιση του Return Stack Buffer και για να αποκτήσετε τον έλεγχο του την CPU. Ο μετριασμός των επιπτώσεων αυτής της επίθεσης είναι προφανώς πρόκληση.
Στον απόηχο της Zenbleed, ερευνητές από το ETH Ζυρίχης σχεδίασαν μια νέα κατηγορία επιθέσεων μεταβατικής εκτέλεσης, που ονομάστηκε Training in Transient Execution (TTE). Χρησιμοποιώντας TTE, οι ερευνητές δημιούργησαν ένα end-to-end exploit που ονομάζεται Inception. Μπορεί να διαρρεύσει μνήμη πυρήνα με ρυθμό έως και 39 byte ανά δευτερόλεπτο στο AMD Zen 4 και οι ερευνητές κατάφεραν να διαρρεύσουν το /etc/shadow σε ένα Linux μηχανή σε 40 λεπτά. Αυτό το αρχείο περιέχει κατακερματισμένους κωδικούς πρόσβασης λογαριασμού χρήστη και προστατεύεται από το σύστημα, προσβάσιμο μόνο από τον χρήστη root. Με άλλα λόγια, αυτό το κατόρθωμα είναι πολύ κακό.
Πώς λειτουργεί το Inception;
Όπως και με το Zenbleed, Εναρξη (CVE-2023-20569, μέσω Υπολογιστής Bleeping) καταχράται την κερδοσκοπική εκτέλεση στον τρόπο λειτουργίας της. Η πρόβλεψη κλάδου και η κερδοσκοπική εκτέλεση αναφέρονται σε γενικές γραμμές όταν ο υπολογιστής σας εκτελεί λειτουργίες που δεν χρειάζονται ακόμη, αλλά πιθανότατα θα χρειαστούν σε επόμενους κύκλους. Γίνεται συχνά σε περιόδους που το σύστημά σας έχει δωρεάν πόρους, καθώς επιταχύνει τη συνολική επεξεργασία όταν διαφορετικά οι οδηγίες ή τα δεδομένα δεν θα ήταν ακόμη έτοιμα για την CPU. Εάν η εργασία που έχει γίνει δεν είναι απαραίτητη, συνήθως απορρίπτεται και ο επεξεργαστής μπορεί να μεταπηδήσει πίσω στο σημείο που χρειάζεται για να εκτελέσει την επόμενη, σωστή, εντολή. Όταν το κάνει αυτό, αυτό ονομάζεται εσφαλμένη πρόβλεψη κλάδου.
Ωστόσο, υπάρχουν πολλά προβλήματα όσον αφορά την κερδοσκοπική εκτέλεση, και ευπάθειες όπως το Spectre και το Zenbleed είναι αποτέλεσμα αυτού. Αυτοί οι ερευνητές συνδύασαν ένα παλαιότερο exploit που ονομάζεται "Phantom" (το οποίο επηρέασε τις αρχιτεκτονικές Zen 1 και Zen 2) με την επίθεσή τους TTE για να δημιουργήσουν το Inception.
Το "Inception" είναι μια αναφορά στην ομώνυμη ταινία, όπου η υπόθεση της ταινίας βασίζεται στο να φυτέψει μια ιδέα στο κεφάλι κάποιου όταν ονειρεύεται. Σε αυτή την περίπτωση, οι ερευνητές δηλώνουν ότι φυτεύουν μια «ιδέα» στη CPU ενώ είναι, κατά μία έννοια, «ονειρεύομαι». Αυτό προκαλεί την εκτέλεση εσφαλμένων εντολών, γεγονός που επιτρέπει στο Inception να παραβιάσει τη ροή ελέγχου της CPU.
Το BTB είναι το Branch Target Buffer και το RSB είναι το Return Stack Buffer. Λήψη από τη λευκή βίβλο του Inception:
"Στο πρώτο βήμα εκπαίδευσης T1, ο εισβολέας εκτελεί έναν κλάδο εκπαίδευσης στο TJ, ο οποίος συγκρούεται με την καταχώρηση BTB της πηγής PHANTOMJMP PJ. Βρίσκεται στο χώρο διευθύνσεων του πυρήνα, η PJ είναι η διεύθυνση που εκκινεί το αναδρομικό PHANTOMCALL. Το VR επιστροφής θύματος εκχωρείται μετά το PJ στη ροή ελέγχου. Ο στόχος του PHANTOMJMP έχει οριστεί σε PC, στον οποίο θα ενεργοποιηθεί το αναδρομικό PHANTOMCALL. Στο στάδιο εκπαίδευσης T2, ο εισβολέας εκτελεί μια κλήση εκπαίδευσης στο TC που συγκρούεται με τον υπολογιστή στο BTB, το οποίο θα δημιουργήσει την πρόβλεψη για το PHANTOMCALL. Ο στόχος αυτής της κλήσης εκπαίδευσης έχει οριστεί στο PC, καθιερώνοντας μια αναδρομική πρόβλεψη PHANTOMCALL. Κατά την εκτέλεση του υπολογιστή, η CPU θα εισάγει έτσι αναδρομικά προβλέψεις RSB στην αποκάλυψη του gadget G, του οποίου η τοποθεσία ακολουθεί αμέσως το PHANTOMCALL στον υπολογιστή. Καθώς ο υπολογιστής βρίσκεται στο χώρο του πυρήνα, οι κλάδοι εκπαίδευσης TJ και TC θα ενεργοποιήσουν σφάλματα σελίδας, από τα οποία ανακτούμε."
Εκεί που το Inception διαφέρει από τις περισσότερες επιθέσεις μεταβατικής εκτέλεσης είναι ότι κατά τη διάρκεια του μεταβατικού παραθύρου, εισάγει νέες προβλέψεις στον προγνωστικό κλάδου. Κάθε εισαγωγή δημιουργεί περαιτέρω παροδικά παράθυρα που μπορεί να είναι πιο ισχυρά από τα προηγούμενα. Στην περίπτωση του Phantom (CVE-2022-23825), ένα μεταβατικό παράθυρο μπορεί να δημιουργηθεί χρησιμοποιώντας αυθαίρετες οδηγίες. Αυτό σημαίνει ότι οι οδηγίες (όπως αποκλειστική-ή ή XOR) μπορούν να χρησιμοποιηθούν ως εντολή κλήσης και να δημιουργήσουν περαιτέρω μεταβατικά παράθυρα. Αυτό στη συνέχεια χρησιμοποιείται για την υπερχείλιση του Return Stack Buffer.
Τι μπορείς να κάνεις?
Δεν υπάρχουν πολλά που μπορείτε να κάνετε αυτή τη στιγμή, και ακόμη και στην περίπτωση της AMD, είναι δύσκολο να πούμε τι μπορούν πραγματικά να κάνουν για αυτό. Για να μετριάσει πλήρως τον αντίκτυπό της, η AMD θα πρέπει να ξεπλύνει το εργαλείο πρόβλεψης επωνυμίας ενώ αλλάζει μεταξύ των πλαισίων, κάτι που μπορεί να είναι απίστευτα δαπανηρό για την απόδοση.
Η AMD έχει προτείνει έναν διαφορετικό μετριασμό, και αυτός που το κάνει έτσι ώστε η AMD να έχει επιλέξει όλους τους έμμεσους κλάδους που προβλέπουν αναγκαστικά λάθος σε μια καλοήθη τοποθεσία. Ωστόσο, μέχρι να κυκλοφορήσουν οι ενημερώσεις κώδικα, το υλικό σας θα είναι ευαίσθητο.
ΕΝΑ χαρτί σχετικά με το Inception πρόκειται να παρουσιαστεί στο USENIX Security 2023 και ένα χαρτί σχετικά με τις εικασίες Phantom πρόκειται να παρουσιαστεί στο MICRO 2023. Μπορείτε να διαβάσετε αυτά τα έγγραφα για να μάθετε περισσότερα σχετικά με το exploit.