Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

APIC/EPIC! Μυστικά διαρροής τσιπ της Intel που δεν πρέπει να δει ακόμη και ο πυρήνας…

Ημερομηνία:

Εδώ είναι το BWAIN αυτής της εβδομάδας, ο αστείος όρος μας για το α Σφάλμα με εντυπωσιακό όνομα.

BWAIN is an accolade that we hand out when a new cybersecurity flaw not only turns out to be interesting and important, but also turns up with its own logo, domain name and website.

Αυτό είναι μεταγλωττισμένο Διαρροή ÆPIC, ένα λογοπαίγνιο στις λέξεις APIC και ΈΠΟΣ.

Το πρώτο είναι σύντομο για Προηγμένος προγραμματιζόμενος ελεγκτής διακοπής, και το τελευταίο είναι απλώς η λέξη «έπος», όπως στο γίγαντας, μαζική, άκρο, Mega, τεράστιος.

Το γράμμα Æ δεν έχει χρησιμοποιηθεί στα γραπτά αγγλικά από την εποχή της Σαξονίας. Το όνομά του είναι æsc, προφέρεται τέφρα (όπως στο δέντρο), και αντιπροσωπεύει λίγο πολύ τον ήχο του A in στη σύγχρονη λέξη ASH. Αλλά υποθέτουμε ότι πρέπει να προφέρετε τη λέξη ÆPIC εδώ είτε ως “APIC-slash-EPIC”, είτε ως “ah!-eh?-PIC”.

Περί τίνος πρόκειται?

Όλα αυτά εγείρουν πέντε συναρπαστικά ερωτήματα:

  • Τι είναι το APIC, και γιατί το χρειάζομαι;
  • Πώς μπορείτε να έχετε δεδομένα αυτό ακόμα και τον πυρήνα δεν μπορείς να κοιτάξεις;
  • Τι προκαλεί αυτή την επική αποτυχία στο APIC;
  • Μήπως η Διαρροή ÆPIC με επηρεάζει?
  • Τι πρέπει να κάνετε σχετικά με αυτό?

Τι είναι το APIC;

Ας επιστρέψουμε στο 1981, όταν πρωτοεμφανίστηκε το IBM PC.

Ο υπολογιστής περιλάμβανε ένα τσιπ που ονομάζεται το Προγραμματιζόμενος ελεγκτής διακοπής Intel 8259A, ή PIC. (Τα μεταγενέστερα μοντέλα, από το PC AT και μετά, είχαν δύο PIC, δεμένα μεταξύ τους, για να υποστηρίζουν περισσότερα συμβάντα διακοπής.)

Ο σκοπός του PIC ήταν κυριολεκτικά να διακόπτει το πρόγραμμα που εκτελείται στον κεντρικό επεξεργαστή (CPU) του υπολογιστή κάθε φορά που συνέβαινε κάτι κρίσιμο για τον χρόνο που χρειαζόταν άμεση προσοχή.

Αυτές οι διακοπές υλικού περιελάμβαναν συμβάντα όπως: το πάτημα του πληκτρολογίου. η σειριακή θύρα που λαμβάνει χαρακτήρα. και ένα επαναλαμβανόμενο χρονόμετρο υλικού που χτυπά πάνω.

Χωρίς ένα σύστημα διακοπής υλικού αυτού του είδους, το λειτουργικό σύστημα θα πρέπει να είναι γεμάτο με κλήσεις λειτουργιών για να ελέγχει τα εισερχόμενα πλήκτρα σε τακτική βάση, κάτι που θα ήταν σπατάλη ισχύος της CPU όταν κανείς δεν πληκτρολογούσε, αλλά δεν θα ανταποκρινόταν αρκετά όταν το έκαναν.

Όπως μπορείτε να φανταστείτε, το PIC σύντομα ακολουθήθηκε από ένα αναβαθμισμένο τσιπ που ονομάζεται the APIC, μια προηγμένες είδος PIC ενσωματωμένο στην ίδια την CPU.

Αυτές τις μέρες, τα APIC παρέχουν πολλά περισσότερα από απλά σχόλια από το πληκτρολόγιο, τη σειριακή θύρα και το χρονόμετρο συστήματος.

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

Και τα σημερινά τσιπ της Intel, αν μπορούμε να το απλοποιήσουμε πολύ, μπορούν γενικά να ρυθμιστούν ώστε να λειτουργούν με δύο διαφορετικούς τρόπους, γνωστούς ως λειτουργία xAPIC και λειτουργία x2APIC.

Εδώ, xAPIC είναι ο «κληρονομικός» τρόπος εξαγωγής δεδομένων από τον ελεγκτή διακοπής και x2APIC είναι ο πιο σύγχρονος τρόπος.

Απλοποιώντας ακόμη περισσότερο, το xAPIC βασίζεται σε αυτό που λέγεται MMIO, σύντομη για Είσοδος/Έξοδος με χαρτογράφηση μνήμης, για την ανάγνωση δεδομένων εκτός του APIC όταν καταχωρεί ένα συμβάν ενδιαφέροντος.

Στη λειτουργία MMIO, μπορείτε να μάθετε τι πυροδότησε ένα συμβάν APIC διαβάζοντας από μια συγκεκριμένη περιοχή της μνήμης (RAM), η οποία αντικατοπτρίζει τους καταχωρητές εισόδου/εξόδου του ίδιου του τσιπ APIC.

Αυτά τα δεδομένα xAPIC αντιστοιχίζονται σε ένα μπλοκ μνήμης 4096 byte κάπου στη φυσική μνήμη RAM του υπολογιστή.

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

Αντίθετα, το x2APIC το απαιτεί διαβάστε απευθείας τα δεδομένα APIC από το ίδιο το τσιπ, χρησιμοποιώντας αυτό που είναι γνωστό ως Μητρώα Ειδικών Μοντέλων (MSRs).

Σύμφωνα με την Intel, αποφεύγοντας το μέρος της διαδικασίας MMIO "Παρέχει σημαντικά αυξημένη δυνατότητα διεύθυνσης του επεξεργαστή και ορισμένες βελτιώσεις στην παράδοση διακοπών."

Συγκεκριμένα, η εξαγωγή των δεδομένων APIC απευθείας από καταχωρητές στο τσιπ σημαίνει ότι η συνολική ποσότητα δεδομένων που υποστηρίζονται και ο μέγιστος αριθμός πυρήνων CPU που μπορούν να διαχειρίζονται ταυτόχρονα, δεν περιορίζονται στα 4096 byte που είναι διαθέσιμα στη λειτουργία MMIO.

Πώς μπορείτε να έχετε δεδομένα που ακόμη και ο πυρήνας δεν μπορεί να κρυφοκοιτάξει;

Πιθανότατα έχετε ήδη μαντέψει ότι η διαχείριση των δεδομένων που καταλήγουν στην περιοχή μνήμης MMIO όταν χρησιμοποιείτε τη λειτουργία xAPIC δεν γίνεται πάντα τόσο προσεκτικά όσο θα έπρεπε…

…και επομένως ότι κάποιο είδος «διαρροής δεδομένων» σε αυτήν την περιοχή MMIO είναι η καρδιά αυτού του προβλήματος.

Με δεδομένο όμως ότι εσύ χρειάζονται ήδη εξουσίες σε επίπεδο sysadmin για να διαβάσετε τα δεδομένα MMIO εξαρχής, και επομένως θα μπορούσατε σχεδόν σίγουρα να λάβετε όλα τα δεδομένα στη μνήμη ούτως ή άλλως…

…γιατί η εμφάνιση των δεδομένων άλλων ατόμων κατά λάθος στην περιοχή δεδομένων APIC MMIO αντιπροσωπεύει ένα έπος διαρροή?

Μπορεί να κάνει κάποιους τύπους επίθεσης κλοπής δεδομένων ή απόρριψης μνήμης RAM ελαφρώς ευκολότερους στην πράξη, αλλά σίγουρα δεν θα σας έδινε περισσότερη ικανότητα καταγραφής μνήμης που είχατε ήδη στη θεωρία;

Δυστυχώς, αυτή η υπόθεση δεν είναι αλήθεια εάν οποιοδήποτε λογισμικό στο σύστημα χρησιμοποιεί το SGX της Intel, συντομογραφία για Επεκτάσεις λογισμικού φύλαξης.


ΜΑΘΕΤΕ ΠΕΡΙΣΣΟΤΕΡΑ ΓΙΑ ΤΟ SGX


Το SGX υποστηρίζεται από πολλούς πρόσφατους επεξεργαστές Intel και παρέχει έναν τρόπο στον πυρήνα του λειτουργικού συστήματος να «σφραγίσει» ένα κομμάτι κώδικα και δεδομένων σε ένα φυσικό μπλοκ μνήμης RAM, ώστε να σχηματίσει αυτό που είναι γνωστό ως θύλακας.

Αυτό το κάνει να συμπεριφέρεται, προσωρινά τουλάχιστον, όπως τα ειδικά τσιπ ασφαλείας στα κινητά τηλέφωνα που χρησιμοποιούνται για την αποθήκευση μυστικών, όπως τα κλειδιά αποκρυπτογράφησης.

Μόλις ρυθμιστεί το "κλείδωμα" SGX του θύλακα, μόνο ο κώδικας προγράμματος που εκτελείται εντός της κλειστής περιοχής μνήμης μπορεί να διαβάσει και να γράψει τα περιεχόμενα αυτής της μνήμης RAM.

Ως αποτέλεσμα, οι εσωτερικές λεπτομέρειες οποιωνδήποτε υπολογισμών που πραγματοποιούνται μετά την ενεργοποίηση του θύλακα δεν είναι ορατές σε οποιονδήποτε άλλο κωδικό, νήμα, διεργασία ή χρήστη του συστήματος.

Συμπεριλαμβανομένου του ίδιου του πυρήνα.

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

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

Όπως μπορείτε να φανταστείτε, εάν τα δεδομένα που υποτίθεται ότι είναι σφραγισμένα μέσα σε έναν θύλακα SGX αντιγραφούν κατά λάθος στη μνήμη RAM MMIO που χρησιμοποιείται για να "κατοπτρίζει" τα δεδομένα APIC όταν χρησιμοποιείτε τη λειτουργία xAPIC "mapped-memory"…

…αυτό θα παραβίαζε την ασφάλεια του SGX, το οποίο λέει ότι δεν θα πρέπει ποτέ να προκύψουν δεδομένα από έναν θύλακα SGX μετά τη δημιουργία του, εκτός εάν εξάγονται σκόπιμα από κώδικα που εκτελείται ήδη μέσα στον ίδιο τον θύλακα.

Τι προκαλεί αυτή την επική αποτυχία στο APIC;

Οι ερευνητές πίσω από το ÆPIC Διαρροή χαρτιού ανακάλυψε ότι κανονίζοντας να διαβάσει τα δεδομένα APIC μέσω μιας πονηρής και ασυνήθιστης ακολουθίας προσβάσεων στη μνήμη…

…θα μπορούσαν να ξεγελάσουν τον επεξεργαστή ώστε να γεμίσει τον χώρο APIC MMIO όχι μόνο με δεδομένα που ελήφθησαν πρόσφατα από το ίδιο το APIC, αλλά και με δεδομένα που μόλις έτυχε να έχουν χρησιμοποιηθεί από την CPU πρόσφατα για κάποιο άλλο σκοπό.

Αυτή η συμπεριφορά είναι μια παρενέργεια του γεγονότος ότι παρόλο που η σελίδα μνήμης APIC MMIO έχει μέγεθος 4096 byte, το τσιπ APIC σε λειτουργία xAPIC δεν παράγει πραγματικά δεδομένα αξίας 4096 byte και η CPU δεν εξουδετερώνει πάντα σωστά τα αχρησιμοποίητα μέρη της περιοχής MMIO συμπληρώνοντάς την πρώτα με μηδενικά.

Αντίθετα, τα παλιά δεδομένα που είχαν απομείνει στην κρυφή μνήμη της CPU καταγράφηκαν μαζί με τα νέα δεδομένα που ελήφθησαν από το ίδιο το τσιπ APIC.

Όπως το έθεσαν οι ερευνητές, το σφάλμα συνοψίζεται σε αυτό που είναι γνωστό ως an ανάγνωση μη αρχικοποιημένης μνήμης, όπου κατά λάθος επαναχρησιμοποιείτε τα εναπομείναντα δεδομένα κάποιου άλλου στη μνήμη RAM επειδή ούτε αυτός ούτε εσείς τα ξεπλύσατε πρώτα από τα προηγούμενα μυστικά του.

Η διαρροή ÆPIC με επηρεάζει;

Για μια πλήρη λίστα των μαρκών που επηρεάζονται, βλ Συμβουλευτική της ίδιας της Intel.

Από όσο μπορούμε να πούμε, εάν έχετε επεξεργαστή Intel 10ης ή 11ης γενιάς, πιθανότατα επηρεάζεστε.

Αλλά αν διαθέτετε μια ολοκαίνουργια CPU 12ης γενιάς (το πιο πρόσφατο κατά τη στιγμή της γραφής), τότε φαίνεται ότι επηρεάζονται μόνο τα τσιπ της κατηγορίας διακομιστή.

Κατά ειρωνικό τρόπο, στα τσιπ φορητών υπολογιστών 12ης γενιάς, η Intel έχει εγκαταλείψει το SGX, επομένως αυτό το σφάλμα δεν ισχύει επειδή είναι αδύνατο να υπάρχουν "σφραγισμένοι" θύλακες SGX που θα μπορούσαν να διαρρεύσουν.

Φυσικά, ακόμη και σε ένα δυνητικά ευάλωτο τσιπ, αν δεν βασίζεστε σε κανένα λογισμικό που χρησιμοποιεί SGX, τότε ούτε το σφάλμα ισχύει.

Και το bug, μεταγλωττισμένο CVE-2022-21233, μπορεί να γίνει εκμετάλλευση μόνο από εισβολέα που έχει ήδη τοπική πρόσβαση σε επίπεδο διαχειριστή (root) στον υπολογιστή σας.

Τακτικοί χρήστες δεν μπορεί να έχει πρόσβαση στο μπλοκ δεδομένων APIC MMIO και επομένως δεν έχει κανέναν τρόπο να κρυφοκοιτάξει τίποτα εκεί μέσα, πόσο μάλλον μυστικά δεδομένα που μπορεί να έχουν διαρρεύσει από έναν θύλακα SGX.

Έτσι, φιλοξενούμενες εικονικές μηχανές (VMs) που λειτουργούν υπό τον έλεγχο ενός κεντρικού λειτουργικού συστήματος σε έναν hypervisor όπως το HyperV, το VMWare ή το VirtualBox σχεδόν σίγουρα δεν μπορούν να χρησιμοποιήσουν αυτό το τέχνασμα για να ληστέψουν μυστικά από άλλους επισκέπτες ή τον ίδιο τον οικοδεσπότη.

Αυτό συμβαίνει επειδή τα Guest VM γενικά δεν έχουν πρόσβαση στο πραγματικό κύκλωμα APIC στον κεντρικό επεξεργαστή. Αντίθετα, κάθε επισκέπτης λαμβάνει το δικό του προσομοιωμένο APIC που είναι μοναδικό για αυτό το VM.

Τι να κάνω;

Μην πανικοβληθείτε.

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

Και ακόμα κι αν διατρέχετε κίνδυνο, όποιος μπαίνει στο φορητό υπολογιστή σας ως διαχειριστής/root έχει πιθανώς αρκετή ισχύ για να σας προκαλέσει ήδη έναν κόσμο προβληματισμού.

Εάν έχετε ευάλωτους διακομιστές και βασίζεστε στο SGX ως μέρος της λειτουργικής σας ασφάλειας, ελέγξτε τις συμβουλές ασφαλείας της Intel INTEL-SA-00657 για πληροφορίες προστασίας και μετριασμού.

Σύμφωνα με τους ερευνητές που το έγραψαν, "Η Intel [έχει] κυκλοφορήσει ενημερώσεις μικροκώδικα και κιτ ανάπτυξης λογισμικού SGX για να διορθώσει το πρόβλημα."

Η ομάδα του πυρήνα του Linux φαίνεται επίσης να εργάζεται αυτήν τη στιγμή σε μια ενημερωμένη έκδοση κώδικα που θα σας επιτρέπει να ρυθμίσετε το σύστημά σας έτσι ώστε να χρησιμοποιεί πάντα το x2APIC (το οποίο, όπως θα θυμάστε από νωρίτερα, δεν μεταδίδει δεδομένα APIC μέσω κοινόχρηστης μνήμης). και θα αποτρέψει με χάρη την αναγκαστική επιστροφή του συστήματος σε λειτουργία xAPIC μετά την εκκίνηση.


spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?