Τρωτά σημεία στο υποσύστημα eBPF του πυρήνα Linux

Εντοπίστηκε μια ευπάθεια (CVE-2021-29154) στο υποσύστημα eBPF, η οποία σας επιτρέπει να εκτελείτε χειριστές για ανίχνευση, ανάλυση της λειτουργίας των υποσυστημάτων και διαχείριση της κυκλοφορίας, που εκτελούνται εντός του πυρήνα Linux σε μια ειδική εικονική μηχανή με JIT, η οποία επιτρέπει τοπικός χρήστης για να επιτύχει την εκτέλεση του κώδικά του σε επίπεδο πυρήνα. Το πρόβλημα εμφανίζεται μέχρι την κυκλοφορία της 5.11.12 (συμπεριλαμβανομένης) και δεν έχει επιδιορθωθεί ακόμη σε διανομές (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Η επιδιόρθωση είναι διαθέσιμη ως patch.

Σύμφωνα με τους ερευνητές που εντόπισαν την ευπάθεια, κατάφεραν να αναπτύξουν ένα λειτουργικό πρωτότυπο του exploit για συστήματα x32 64 και 86 bit, το οποίο μπορεί να χρησιμοποιηθεί από μη προνομιούχους χρήστη. Ωστόσο, η Red Hat σημειώνει ότι η σοβαρότητα του προβλήματος εξαρτάται από το εάν η κλήση συστήματος eBPF είναι προσβάσιμη στον χρήστη. Για παράδειγμα, στο RHEL και στις περισσότερες άλλες διανομές Linux στην προεπιλεγμένη διαμόρφωση, η ευπάθεια μπορεί να εκμεταλλευτεί εάν το BPF JIT είναι ενεργοποιημένο και ο χρήστης έχει δικαιώματα CAP_SYS_ADMIN. Ως λύση, συνιστάται να απενεργοποιήσετε το BPF JIT χρησιμοποιώντας την εντολή: echo 0 > /proc/sys/net/core/bpf_jit_enable

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

Αξίζει να σημειωθεί ότι αυτή δεν είναι η μόνη ευπάθεια στο υποσύστημα eBPF πρόσφατα. Στα τέλη Μαρτίου, εντοπίστηκαν δύο ακόμη τρωτά σημεία στον πυρήνα (CVE-2020-27170, CVE-2020-27171), καθιστώντας δυνατή τη χρήση του eBPF για την παράκαμψη της προστασίας από ευπάθειες κλάσης Spectre, που επιτρέπουν τον προσδιορισμό των περιεχομένων της μνήμης του πυρήνα ως αποτέλεσμα της δημιουργίας συνθηκών για την κερδοσκοπική εκτέλεση ορισμένων πράξεων . Η επίθεση Spectre απαιτεί την παρουσία μιας συγκεκριμένης ακολουθίας εντολών σε προνομιούχο κώδικα που οδηγεί σε υποθετική εκτέλεση εντολών. Στο eBPF, έχουν βρεθεί διάφοροι τρόποι δημιουργίας τέτοιων εντολών μέσω χειρισμών με προγράμματα BPF που μεταδίδονται για εκτέλεση.

Η ευπάθεια CVE-2020-27170 προκαλείται από χειρισμό δείκτη στον επαληθευτή BPF που προκαλεί κερδοσκοπικές λειτουργίες πρόσβασης σε μια περιοχή εκτός των ορίων της προσωρινής μνήμης. Η ευπάθεια CVE-2020-27171 οφείλεται σε σφάλμα υπορροής ακεραίων κατά την εργασία με δείκτες, που οδηγεί σε εικαστική πρόσβαση σε δεδομένα εκτός του buffer. Αυτά τα προβλήματα έχουν ήδη επιδιορθωθεί στις εκδόσεις του πυρήνα 5.11.8, 5.10.25, 5.4.107, 4.19.182 και 4.14.227, και έχουν επίσης συμπεριληφθεί στις ενημερώσεις του πυρήνα για τις περισσότερες διανομές Linux. Οι ερευνητές έχουν ετοιμάσει ένα πρωτότυπο exploit που επιτρέπει σε έναν μη προνομιούχο χρήστη να εξάγει δεδομένα από τη μνήμη του πυρήνα.

Πηγή: opennet.ru

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