SWAPGS - μια νέα ευπάθεια στον κερδοσκοπικό μηχανισμό εκτέλεσης της CPU

Ερευνητές από το Bitdefender αποκάλυψε νέα ευπάθεια (CVE-2019-1125) στον κερδοσκοπικό μηχανισμό εκτέλεσης εντολών των σύγχρονων CPU, ο οποίος ονομάζεται SWAPGS, που αντιστοιχεί στο όνομα της εντολής του επεξεργαστή που προκαλεί το πρόβλημα. Τρωτό позволяет επιτρέπουν σε έναν μη προνομιούχο εισβολέα να προσδιορίζει τα περιεχόμενα των περιοχών μνήμης του πυρήνα ή των εικονικών μηχανών που εκτελούν. Πρόβλημα επιβεβαιωμένος σε επεξεργαστές Intel (x86_64) και μερικώς επηρεάζει Επεξεργαστές AMD για τους οποίους δεν εμφανίζεται το κύριο διάνυσμα επίθεσης. Οι μέθοδοι που εφαρμόστηκαν προηγουμένως για την αντιμετώπιση των ευπαθειών Spectre και Meltdown δεν προστατεύουν από την επίθεση SWAPGS κατά τη χρήση επεξεργαστών Intel, αλλά έχουν ήδη προταθεί διορθώσεις για Linux, ChromeOS, Android και Windows.

Η ευπάθεια ανήκει στην κλάση Spectre v1 και βασίζεται στην ιδέα της επαναφοράς δεδομένων από τη μνήμη cache του επεξεργαστή που απομένουν μετά την εικαστική εκτέλεση των εντολών. Για τη βελτίωση της απόδοσης, οι μονάδες πρόβλεψης κλάδου των σύγχρονων CPU χρησιμοποιούν προληπτική εκτέλεση ορισμένων εντολών που είναι πιο πιθανό να εκτελεστούν, αλλά χωρίς να περιμένουν τον υπολογισμό όλων των παραγόντων που καθορίζουν την εκτέλεσή τους (για παράδειγμα, όταν οι συνθήκες διακλάδωσης ή οι παράμετροι πρόσβασης δεν έχουν έχει ακόμη υπολογιστεί). Εάν η πρόβλεψη δεν επιβεβαιωθεί, ο επεξεργαστής απορρίπτει το αποτέλεσμα της κερδοσκοπικής εκτέλεσης, αλλά τα δεδομένα που επεξεργάζονται κατά τη διάρκεια αυτής παραμένουν στην κρυφή μνήμη του επεξεργαστή και μπορούν να αποκατασταθούν χρησιμοποιώντας μεθόδους για τον προσδιορισμό των περιεχομένων της κρυφής μνήμης μέσω πλευρικών καναλιών, αναλύοντας την αλλαγή στην πρόσβαση χρόνος για αποθηκευμένα και μη προσωρινά δεδομένα.

Η ιδιαιτερότητα της νέας επίθεσης είναι η χρήση μιας διαρροής που εμφανίζεται κατά την κερδοσκοπική εκτέλεση της εντολής SWAPGS, η οποία χρησιμοποιείται σε λειτουργικά συστήματα για να αντικαταστήσει την τιμή του καταχωρητή GS όταν ο έλεγχος περνά από το χώρο χρήστη στον πυρήνα του λειτουργικού συστήματος (το GS Η τιμή που χρησιμοποιείται στο χώρο χρήστη αντικαθίσταται με την τιμή που χρησιμοποιείται κατά τη διάρκεια των λειτουργιών στον πυρήνα ). Στον πυρήνα Linux, το GS αποθηκεύει έναν δείκτη per_cpu που χρησιμοποιείται για την πρόσβαση στα δεδομένα του πυρήνα και ο χώρος χρήστη αποθηκεύει δείκτες στο TLS (Thread Local Storage).

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

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

Υπάρχει ένα πρόβλημα στον πυρήνα του Linux εξαλειφθεί αλλάζοντας τη λογική της κλήσης της εντολής SWAPGS (μπλοκάρισμα κερδοσκοπικής εκτέλεσης), παρόμοια με τη διόρθωση άλλων τρωτών σημείων της κλάσης Specter v1. Η πρόσθετη προστασία αναμένεται να έχει ελάχιστη επίδραση στην απόδοση των τυπικών φόρτων εργασίας. Η καθυστέρηση εμφανίζεται κατά τη φάση εναλλαγής μεταξύ χρήστη και χώρου πυρήνα, η οποία μπορεί να οδηγήσει σε κακή απόδοση όταν, για παράδειγμα, υπάρχει έντονη κλήση συστήματος από την εφαρμογή ή συχνή δημιουργία NMI και διακοπές.

Η επιδιόρθωση απαιτεί την εγκατάσταση μιας ενημέρωσης πυρήνα τόσο στο κεντρικό σύστημα όσο και στο περιβάλλον επισκέπτη, ακολουθούμενη από επανεκκίνηση του συστήματος. Για να απενεργοποιήσετε την προστασία στο Linux, μπορεί να χρησιμοποιηθεί η επιλογή "nospectre_v1", η οποία επίσης απενεργοποιεί μέτρα για τον αποκλεισμό της ευπάθειας SWAPGS. Η επιδιόρθωση είναι διαθέσιμη ως κηλίδα για τον πυρήνα του Linux, ο οποίος περιλαμβάνεται ήδη στις εκδόσεις 4.19.65, 5.2.7, 4.14.137, 4.9.188 και 4.4.188. Ενημερώσεις για διανομές Linux δεν έχουν ακόμη κυκλοφορήσει (Debian, RHEL, Μαλακό καπέλλο, Arch Linux, SUSE/openSUSE, Ubuntu). Στα Windows, το πρόβλημα επιλύθηκε αθόρυβα Ενημέρωση Ιουλίου. Εταιρεία Google έτοιμος επιδιόρθωση για τον πυρήνα 4.19 που αποστέλλεται με το ChromeOS και Android.

Σύμφωνα με ερευνητές από το Bitdefender, η Intel ενημερώθηκε για το πρόβλημα τον Αύγουστο του περασμένου έτους. Αποφασίστηκε να διορθωθεί το πρόβλημα μέσω προγραμματισμού, για το οποίο προγραμματιστές από τη Microsoft, την Google και τον πυρήνα Linux συμμετείχαν στη συντονισμένη ανάπτυξη μιας επιδιόρθωσης. Οι παλαιότεροι επεξεργαστές Intel, πριν από το Ivy Bridge, είναι πολύ πιο δύσκολο να επιτεθούν λόγω της έλλειψης υποστήριξης για την εντολή WRGSBASE που χρησιμοποιείται στο exploit. Τα συστήματα ARM, POWER, SPARC, MIPS και RISC-V δεν επηρεάζονται από το πρόβλημα επειδή δεν υποστηρίζουν την εντολή SWAPGS.

Το πρόβλημα επηρεάζει κυρίως τους κατόχους επεξεργαστών Intel -
Στα συστήματα AMD, μόνο το δεύτερο σενάριο επίθεσης μπόρεσε να αναπαραχθεί, το οποίο περιορίζεται στην κερδοσκοπική επεξεργασία της βασικής τιμής του καταχωρητή GS, η οποία μπορεί να χρησιμοποιηθεί για την αναζήτηση συγκεκριμένων τιμών σε τυχαίες περιοχές μνήμης. Για να αποκλείσετε αυτήν την επιλογή επίθεσης αρκετά υπάρχουσες μέθοδοι προστασίας από το Spectre v1.

Πηγή: opennet.ru

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