Ευπάθειες στο υποσύστημα eBPF που επιτρέπουν την εκτέλεση κώδικα σε επίπεδο πυρήνα Linux

Δύο νέα τρωτά σημεία εντοπίστηκαν στο υποσύστημα eBPF, το οποίο σας επιτρέπει να εκτελείτε χειριστές μέσα στον πυρήνα του Linux σε μια ειδική εικονική μηχανή με JIT. Και τα δύο τρωτά σημεία καθιστούν δυνατή την εκτέλεση του κώδικά σας με δικαιώματα πυρήνα, έξω από μια απομονωμένη εικονική μηχανή eBPF. Πληροφορίες σχετικά με τα προβλήματα δημοσιεύθηκαν από την ομάδα Zero Day Initiative, η οποία τρέχει τον διαγωνισμό Pwn2Own, κατά τον οποίο φέτος επιδείχθηκαν τρεις επιθέσεις στο Ubuntu Linux που χρησιμοποιούσαν προηγουμένως άγνωστα τρωτά σημεία (αν τα τρωτά σημεία στο eBPF σχετίζονται με αυτές τις επιθέσεις δεν αναφέρονται) .

  • CVE-2021-3490 - Η ευπάθεια προκαλείται από την έλλειψη ελέγχου εκτός ορίων 32 bit κατά την εκτέλεση λειτουργιών AND, OR και XOR στο eBPF ALU32. Ένας εισβολέας μπορεί να εκμεταλλευτεί αυτό το σφάλμα για να διαβάσει και να γράψει δεδομένα εκτός των ορίων του εκχωρημένου buffer. Το πρόβλημα με τις λειτουργίες XOR εμφανίζεται ξεκινώντας από την έκδοση πυρήνα 5.7-rc1 και AND και OR - ξεκινώντας από την έκδοση 5.10-rc1.
  • CVE-2021-3489 - Η ευπάθεια προκαλείται από ένα σφάλμα στην υλοποίηση της προσωρινής μνήμης δακτυλίου και οφείλεται στο γεγονός ότι η συνάρτηση bpf_ringbuf_reserve δεν έλεγξε την πιθανότητα το μέγεθος της εκχωρημένης περιοχής μνήμης να είναι μικρότερο από το πραγματικό μέγεθος του ringbuf. Το πρόβλημα εμφανίζεται από την έκδοση 5.8-rc1.

Η κατάσταση της επιδιόρθωσης ευπάθειας στις διανομές μπορεί να παρακολουθηθεί σε αυτές τις σελίδες: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Οι διορθώσεις είναι επίσης διαθέσιμες ως ενημερώσεις κώδικα (CVE-2021-3489, CVE-2021-3490). Το εάν το ζήτημα μπορεί να εκμεταλλευτεί εξαρτάται από το εάν η κλήση συστήματος eBPF είναι προσβάσιμη στον χρήστη. Για παράδειγμα, στην προεπιλεγμένη διαμόρφωση στο RHEL, η εκμετάλλευση της ευπάθειας απαιτεί από τον χρήστη να έχει δικαιώματα CAP_SYS_ADMIN.

Ξεχωριστά, μπορούμε να σημειώσουμε μια άλλη ευπάθεια στον πυρήνα του Linux - το CVE-2021-32606, το οποίο επιτρέπει σε έναν τοπικό χρήστη να αυξήσει τα προνόμιά του στο ριζικό επίπεδο. Το πρόβλημα είναι εμφανές από τον πυρήνα του Linux 5.11 και προκαλείται από μια συνθήκη κούρσας στην υλοποίηση του πρωτοκόλλου CAN ISOTP, το οποίο καθιστά δυνατή την αλλαγή των παραμέτρων σύνδεσης υποδοχής λόγω της έλλειψης ρύθμισης των κατάλληλων κλειδαριών στη συνάρτηση isotp_setsockopt() κατά την επεξεργασία της σημαίας CAN_ISOTP_SF_BROADCAST.

Αφού κλείσει η υποδοχή ISOTP, η σύνδεση με την υποδοχή παραλήπτη παραμένει σε ισχύ, η οποία μπορεί να συνεχίσει να χρησιμοποιεί τις δομές που σχετίζονται με την υποδοχή μετά την απελευθέρωση της μνήμης που σχετίζεται με αυτές (χρήση-μετά-χωρίς λόγω της κλήσης σε μια δομή isotp_sock που έχει ήδη απελευθερωθεί όταν καλείται η isotp_rcv()). Μέσω του χειρισμού δεδομένων, μπορείτε να παρακάμψετε τον δείκτη στη συνάρτηση sk_error_report() και να εκτελέσετε τον κώδικά σας σε επίπεδο πυρήνα.

Πηγή: opennet.ru

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