Επίθεση στο Intel SGX για εξαγωγή ευαίσθητων δεδομένων ή εκτέλεση κώδικα σε έναν θύλακα

Ερευνητές από το Πανεπιστήμιο Επιστήμης και Τεχνολογίας Άμυνας του Λαϊκού Απελευθερωτικού Στρατού της Κίνας, το Εθνικό Πανεπιστήμιο της Σιγκαπούρης και το ETH Ζυρίχης ανέπτυξαν μια νέα μέθοδο επίθεσης ενάντια σε απομονωμένους θύλακες Intel SGX (Software Guard eXtensions). Η επίθεση ονομαζόταν SmashEx και προκλήθηκε από προβλήματα επανεισόδου στον χειρισμό εξαιρέσεων κατά τη λειτουργία των στοιχείων χρόνου εκτέλεσης για το Intel SGX. Η προτεινόμενη μέθοδος επίθεσης καθιστά δυνατό, εάν υπάρχει έλεγχος στο λειτουργικό σύστημα, τον προσδιορισμό των εμπιστευτικών δεδομένων που βρίσκονται στον θύλακα ή την οργάνωση της αντιγραφής του κώδικα κάποιου στη μνήμη του θύλακα και την εκτέλεσή του.

Έχουν ετοιμαστεί πρωτότυπα Exploit για θύλακες χρόνου εκτέλεσης με βάση το Intel SGX SDK (CVE-2021-0186) και το Microsoft Open Enclave (CVE-2021-33767). Στην πρώτη περίπτωση, αποδείχθηκε η δυνατότητα εξαγωγής του κλειδιού RSA που χρησιμοποιείται στον διακομιστή ιστού για HTTPS και στη δεύτερη, ήταν δυνατό να προσδιοριστεί το περιεχόμενο που ελήφθη από το βοηθητικό πρόγραμμα cURL που εκτελείται εντός του θύλακα. Η ευπάθεια έχει ήδη διορθωθεί μέσω προγραμματισμού στις εκδόσεις Intel SGX SDK 2.13 και Open Enclave 0.17.1. Εκτός από το Intel SGX SDK και το Microsoft Open Enclave, η ευπάθεια εμφανίζεται επίσης στο Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX και Veracruz.

Θυμηθείτε ότι η τεχνολογία SGX (Software Guard Extensions) εμφανίστηκε στους επεξεργαστές Intel Core έκτης γενιάς (Skylake) και προσφέρει μια σειρά οδηγιών που επιτρέπουν σε εφαρμογές σε επίπεδο χρήστη να εκχωρούν περιοχές κλειστής μνήμης - θύλακες των οποίων το περιεχόμενο δεν μπορεί να διαβαστεί και να αλλάξει ακόμη και από το πυρήνας και κώδικας που εκτελούνται σε λειτουργίες ring0, SMM και VMM. Είναι αδύνατο να μεταφερθεί ο έλεγχος στον κώδικα στον θύλακα χρησιμοποιώντας παραδοσιακές λειτουργίες άλματος και χειρισμούς με καταχωρητές και τη στοίβα - οι ειδικά δημιουργημένες νέες οδηγίες EENTER, EEXIT και ERESUME χρησιμοποιούνται για τη μεταφορά ελέγχου στον θύλακα, οι οποίοι εκτελούν ελέγχους εξουσιοδότησης. Σε αυτήν την περίπτωση, ο κώδικας που τοποθετείται στον θύλακα μπορεί να χρησιμοποιήσει τις κλασικές μεθόδους κλήσης για να καλέσει συναρτήσεις εντός του θύλακα και μια ειδική οδηγία για την κλήση εξωτερικών συναρτήσεων. Η κρυπτογράφηση μνήμης θύλακα χρησιμοποιείται για την προστασία από επιθέσεις υλικού, όπως η σύνδεση DRAM.

Επίθεση στο Intel SGX για εξαγωγή ευαίσθητων δεδομένων ή εκτέλεση κώδικα σε έναν θύλακα

Το πρόβλημα είναι ότι η τεχνολογία SGX επιτρέπει στο λειτουργικό σύστημα να διακόπτει την εκτέλεση του θύλακα ρίχνοντας μια εξαίρεση υλικού και οι θύλακες δεν εφαρμόζουν σωστά τα πρωτόγονα για τον ατομικό χειρισμό τέτοιων εξαιρέσεων. Σε αντίθεση με τον πυρήνα του λειτουργικού συστήματος και τις κανονικές εφαρμογές, ο κώδικας μέσα σε θύλακες δεν έχει πρόσβαση σε πρωτόγονα για την οργάνωση ατομικών ενεργειών κατά τη διαχείριση ασύγχρονων εξαιρέσεων. Χωρίς τα καθορισμένα ατομικά πρωτόγονα, ο θύλακας μπορεί να διακοπεί και να επιστραφεί σε εκτέλεση ανά πάσα στιγμή, ακόμη και σε στιγμές που εκτελούνται κρίσιμα τμήματα στον θύλακα και βρίσκεται σε μη ασφαλή κατάσταση (για παράδειγμα, όταν οι καταχωρητές CPU δεν αποθηκεύονται/αποκαθίστανται) .

Επίθεση στο Intel SGX για εξαγωγή ευαίσθητων δεδομένων ή εκτέλεση κώδικα σε έναν θύλακα

Για κανονική λειτουργία, η τεχνολογία SGX σάς επιτρέπει να διακόψετε την εκτέλεση του θύλακα με διαμορφώσιμες εξαιρέσεις υλικού. Αυτή η δυνατότητα επιτρέπει στους χρόνους εκτέλεσης του θύλακα να εφαρμόζουν χειρισμό εξαίρεσης εντός θύλακα ή χειρισμό σημάτων, αλλά μπορεί επίσης να εισάγει σφάλματα επανεισαγωγής. Η επίθεση SmashEx βασίζεται στην εκμετάλλευση ελαττωμάτων στο SDK, λόγω των οποίων η κατάσταση της επανάκλησης του χειριστή εξαιρέσεων δεν αντιμετωπίζεται σωστά. Είναι σημαντικό ότι για να εκμεταλλευτεί την ευπάθεια, ο εισβολέας πρέπει να μπορεί να διακόψει την εκτέλεση του θύλακα, δηλ. πρέπει να ελέγχει τη λειτουργία του περιβάλλοντος συστήματος.

Αφού κάνει μια εξαίρεση, ο εισβολέας λαμβάνει ένα μικρό χρονικό παράθυρο κατά τη διάρκεια του οποίου είναι δυνατό να παρεμποδιστεί η ροή της εκτέλεσης μέσω του χειρισμού των παραμέτρων εισόδου. Συγκεκριμένα, εάν έχετε πρόσβαση στο σύστημα (περιβάλλον εκτός του θύλακα), μπορείτε να δημιουργήσετε μια νέα εξαίρεση αμέσως μετά την εκτέλεση της εντολής για να εισέλθετε στον θύλακα (EENTER), η οποία θα επιστρέψει τον έλεγχο στο σύστημα στο στάδιο κατά τη διαμόρφωση της στοίβας για τον θύλακα δεν έχει ακόμη ολοκληρωθεί, στον οποίο Αυτός ο αριθμός αποθηκεύει την κατάσταση των καταχωρητών CPU.

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

Επίθεση στο Intel SGX για εξαγωγή ευαίσθητων δεδομένων ή εκτέλεση κώδικα σε έναν θύλακα
Επίθεση στο Intel SGX για εξαγωγή ευαίσθητων δεδομένων ή εκτέλεση κώδικα σε έναν θύλακα


Πηγή: opennet.ru

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