Ευπάθειες στο υποσύστημα eBPF που επιτρέπουν την παράκαμψη της προστασίας από επιθέσεις Spectre

Εντοπίστηκε μια ευπάθεια στον πυρήνα του Linux (CVE-2021-33624) που επιτρέπει στο υποσύστημα eBPF να χρησιμοποιείται για να παρακάμψει την προστασία από τρωτά σημεία της κλάσης Spectre, τα οποία καθιστούν δυνατό τον προσδιορισμό των περιεχομένων της μνήμης ως αποτέλεσμα της δημιουργίας συνθηκών για κερδοσκοπική εκτέλεση ορισμένων πράξεων. Η επίθεση Spectre απαιτεί την παρουσία μιας συγκεκριμένης ακολουθίας εντολών σε προνομιούχο κώδικα που οδηγεί σε υποθετική εκτέλεση εντολών. Με το χειρισμό προγραμμάτων BPF που μεταδίδονται για εκτέλεση, είναι δυνατό να δημιουργηθούν παρόμοιες εντολές στο eBPF και να διαρρεύσουν τα περιεχόμενα της μνήμης του πυρήνα και αυθαίρετων περιοχών της φυσικής μνήμης μέσω πλευρικών καναλιών.

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

Το πρόβλημα εμφανίζεται από την κυκλοφορία του πυρήνα 4.15 και έχει διορθωθεί με τη μορφή ενημερώσεων κώδικα (1, 2, 3, 4). Η ευπάθεια παραμένει αδιόρθωση στις διανομές (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Επιπλέον, μπορείτε να σημειώσετε τη σημείωση σχετικά με τον αντίκτυπο στην απόδοση των εργαλείων για την προστασία από ευπάθειες του Spectre. Η σημείωση συνοψίζει τα αποτελέσματα της βελτιστοποίησης του προγράμματος εντοπισμού σφαλμάτων rr (Record and Replay), που κάποτε δημιουργήθηκε στο Mozilla για τον εντοπισμό σφαλμάτων που είναι δύσκολο να επαναληφθούν στον Firefox. Η προσωρινή αποθήκευση των κλήσεων συστήματος που χρησιμοποιούνται για τον έλεγχο της ύπαρξης καταλόγων μείωσε τη λειτουργία "rr sources" για το δοκιμαστικό έργο από 3 λεπτά 19 δευτερόλεπτα σε 36 δευτερόλεπτα.

Ο συγγραφέας της βελτιστοποίησης αποφάσισε να ελέγξει πώς θα άλλαζε η απόδοση μετά την απενεργοποίηση της προστασίας Spectre. Μετά την εκκίνηση του συστήματος με την παράμετρο «mitigations=off», ο χρόνος εκτέλεσης των «rr sources» χωρίς βελτιστοποίηση ήταν 2 λεπτά 5 δευτερόλεπτα (1.6 φορές ταχύτερη) και με βελτιστοποίηση ήταν 33 δευτερόλεπτα (9% ταχύτερη). Είναι ενδιαφέρον ότι η απενεργοποίηση της προστασίας Spectre όχι μόνο μείωσε τον χρόνο εκτέλεσης κώδικα σε επίπεδο πυρήνα κατά 1.4 φορές (από 2m9s σε 1m32s), αλλά επίσης μείωσε κατά το ήμισυ τον χρόνο εκτέλεσης στο χώρο χρήστη (από 1m9s σε 0m33s), πιθανώς λόγω μειωμένης απόδοσης της λειτουργίας της κρυφής μνήμης CPU και του TTB επαναφέρει όταν είναι ενεργοποιημένη η προστασία Spectre.

Πηγή: opennet.ru

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