Το Retbleed είναι μια νέα επίθεση στον κερδοσκοπικό μηχανισμό εκτέλεσης των επεξεργαστών Intel και AMD

Μια ομάδα ερευνητών από το ETH Zurich εντόπισε μια νέα επίθεση στον μηχανισμό κερδοσκοπικής εκτέλεσης έμμεσων μεταβάσεων στην CPU, που καθιστά δυνατή την εξαγωγή πληροφοριών από τη μνήμη του πυρήνα ή την οργάνωση επίθεσης στο κεντρικό σύστημα από εικονικές μηχανές. Τα τρωτά σημεία έχουν την κωδική ονομασία Retbleed (CVE-2022-29900, CVE-2022-29901) και είναι κοντά στη φύση των επιθέσεων Specter-v2. Η διαφορά οφείλεται στην οργάνωση της κερδοσκοπικής εκτέλεσης αυθαίρετου κώδικα κατά την επεξεργασία της εντολής "ret" (return), η οποία ανακτά τη διεύθυνση για μεταπήδηση από τη στοίβα, αντί για ένα έμμεσο άλμα χρησιμοποιώντας την εντολή "jmp", φορτώνοντας τη διεύθυνση από μνήμη ή καταχωρητή CPU.

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

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

Για την προστασία από κλασικές επιθέσεις κλάσης Spectre που χρησιμοποιούν εντολές άλματος υπό όρους και έμμεσους, τα περισσότερα λειτουργικά συστήματα χρησιμοποιούν την τεχνική "retpoline", η οποία βασίζεται στην αντικατάσταση των πράξεων έμμεσου άλματος με την εντολή "ret", για την οποία οι επεξεργαστές χρησιμοποιούν μια ξεχωριστή μονάδα πρόβλεψης κατάστασης στοίβας Δεν χρησιμοποιεί μπλοκ πρόβλεψης κλάδου. Όταν το retpoline εισήχθη το 2018, πιστεύονταν ότι οι χειρισμοί διευθύνσεων που μοιάζουν με Specter δεν ήταν πρακτικοί για κερδοσκοπική διακλάδωση χρησιμοποιώντας την εντολή "ret".

Οι ερευνητές που ανέπτυξαν τη μέθοδο επίθεσης Retbleed έδειξαν τη δυνατότητα δημιουργίας μικροαρχιτεκτονικών συνθηκών για την έναρξη μιας κερδοσκοπικής μετάβασης χρησιμοποιώντας την εντολή «ret» και δημοσίευσαν έτοιμα εργαλεία για τον εντοπισμό ακολουθιών εντολών (gadgets) κατάλληλων για την εκμετάλλευση της ευπάθειας στον πυρήνα του Linux. στις οποίες εκδηλώνονται τέτοιες συνθήκες.

Κατά τη διάρκεια της έρευνας, ετοιμάστηκε ένα λειτουργικό exploit που επιτρέπει, σε συστήματα με επεξεργαστές Intel, να εξάγουν αυθαίρετα δεδομένα από τη μνήμη του πυρήνα από μια μη προνομιακή διαδικασία στο χώρο του χρήστη με ταχύτητα 219 byte ανά δευτερόλεπτο και ακρίβεια 98%. Στους επεξεργαστές AMD, η απόδοση του exploit είναι πολύ υψηλότερη—ο ρυθμός διαρροής είναι 3.9 KB ανά δευτερόλεπτο. Ως πρακτικό παράδειγμα, δείχνουμε πώς να χρησιμοποιήσετε το προτεινόμενο exploit για να καθορίσετε τα περιεχόμενα του αρχείου /etc/shadow. Σε συστήματα με επεξεργαστές Intel, η επίθεση για τον προσδιορισμό του κατακερματισμού του κωδικού πρόσβασης root χρήστη πραγματοποιήθηκε σε 28 λεπτά και σε συστήματα με επεξεργαστές AMD - σε 6 λεπτά.

Η επίθεση έχει επιβεβαιωθεί για τις γενιές 6-8 των επεξεργαστών Intel που κυκλοφόρησαν πριν από το τρίτο τρίμηνο του 3 (συμπεριλαμβανομένου του Skylake) και των επεξεργαστών AMD που βασίζονται στις μικροαρχιτεκτονικές Zen 2019, Zen 1+ και Zen 1 που κυκλοφόρησαν πριν από το δεύτερο τρίμηνο του 2. Σε νεότερα μοντέλα επεξεργαστών όπως οι AMD Zen2021 και Intel Alder Lake, καθώς και σε επεξεργαστές ARM, το πρόβλημα μπλοκάρεται από τους υπάρχοντες μηχανισμούς προστασίας. Για παράδειγμα, η χρήση οδηγιών IBRS (Indirect Branch Restricted Speculation) συμβάλλει στην προστασία από επιθέσεις.

Έχει προετοιμαστεί ένα σύνολο αλλαγών για τον πυρήνα του Linux και τον υπερεπόπτη Xen, που θα μπλοκάρουν το πρόβλημα στο λογισμικό σε παλαιότερες CPU. Η προτεινόμενη ενημέρωση κώδικα για τον πυρήνα του Linux αλλάζει 68 αρχεία, προσθέτει 1783 γραμμές και διαγράφει 387 γραμμές. Δυστυχώς, η προστασία οδηγεί σε σημαντικά γενικά κόστη - στα κείμενα που έγιναν σε επεξεργαστές AMD και Intel, η μείωση της απόδοσης εκτιμάται από 14% σε 39%. Είναι προτιμότερο να χρησιμοποιείτε προστασία που βασίζεται σε οδηγίες IBRS, που διατίθενται σε νέες γενιές επεξεργαστών Intel και υποστηρίζονται ξεκινώντας από τον πυρήνα Linux 4.19.

Στους επεξεργαστές Intel, η αντικατάσταση διεύθυνσης για ένα κερδοσκοπικό έμμεσο άλμα πραγματοποιείται χάρη σε μια δυνατότητα που εμφανίζεται όταν συμβαίνει υπερχείλιση μέσω του κάτω ορίου (υποροή) στο Return Stack Buffer. Όταν προκύψουν τέτοιες συνθήκες, η εντολή "ret" αρχίζει να εφαρμόζει λογική επιλογής διεύθυνσης παρόμοια με αυτή που χρησιμοποιείται για κανονικά έμμεσα άλματα. Έχουν βρεθεί περισσότερες από χίλιες θέσεις στον πυρήνα του Linux που δημιουργούν συνθήκες για την έναρξη μιας τέτοιας αντίστροφης ροής και είναι προσβάσιμες μέσω κλήσεων συστήματος.

Στους επεξεργαστές AMD, η κερδοσκοπική εκτέλεση της εντολής "ret" πραγματοποιείται χωρίς αναφορά σε ένα buffer συγκεκριμένης στοίβας (Return Address Stack) και η μονάδα πρόβλεψης διακλάδωσης θεωρεί την εντολή "ret" όχι ως επιστροφή ελέγχου, αλλά ως έμμεσο κλάδο , και, κατά συνέπεια, χρησιμοποιεί τα δεδομένα για πρόβλεψη έμμεσων μεταβάσεων. Υπό αυτές τις συνθήκες, σχεδόν οποιαδήποτε λειτουργία "επαναφοράς" που είναι προσβάσιμη μέσω μιας κλήσης συστήματος μπορεί να αξιοποιηθεί.

Επιπλέον, ένα άλλο ζήτημα έχει επίσης εντοπιστεί σε επεξεργαστές AMD (CVE-2022-23825, Branch Type Confusion) που σχετίζεται με την υλοποίηση εικονικών διακλαδώσεων - οι συνθήκες για την πρόβλεψη διακλαδώσεων μπορούν να προκύψουν ακόμη και χωρίς τις απαραίτητες οδηγίες διακλάδωσης, που επιτρέπουν τον επηρεασμό του buffer πρόβλεψης κλάδου χωρίς την οδηγία "ret". Αυτό το χαρακτηριστικό περιπλέκει σημαντικά την εφαρμογή της προστασίας και απαιτεί πιο ενεργό καθαρισμό του buffer πρόβλεψης διακλάδωσης. Η προσθήκη πλήρους προστασίας στον πυρήνα αναμένεται να αυξήσει τα γενικά έξοδα κατά 209%.

Πηγή: opennet.ru

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