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

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

Η ευπάθεια προκαλείται από εσφαλμένη επαλήθευση προγραμμάτων eBPF που μεταδίδονται για εκτέλεση. Το υποσύστημα eBPF παρέχει βοηθητικές λειτουργίες, η σωστή χρήση των οποίων επαληθεύεται από ειδικό επαληθευτή. Ορισμένες συναρτήσεις απαιτούν τη μετάδοση μιας τιμής PTR_TO_MEM ως όρισμα και για να αποφευχθούν πιθανές υπερχειλίσεις buffer, ο επαληθευτής πρέπει να γνωρίζει το μέγεθος της μνήμης που σχετίζεται με το όρισμα. Για τις συναρτήσεις bpf_ringbuf_submit και bpf_ringbuf_discard, δεδομένα σχετικά με το μέγεθος της μεταφερόμενης μνήμης δεν αναφέρθηκαν στον επαληθευτή, τα οποία θα μπορούσαν να χρησιμοποιηθούν για την αντικατάσταση περιοχών μνήμης πέρα ​​από το όριο της προσωρινής μνήμης κατά την εκτέλεση ειδικά σχεδιασμένου κώδικα eBPF.

Για να πραγματοποιήσει μια επίθεση, ο χρήστης πρέπει να μπορεί να φορτώσει το δικό του πρόγραμμα BPF και πολλές πρόσφατες διανομές Linux αποκλείουν αυτή τη δυνατότητα από προεπιλογή (συμπεριλαμβανομένης της μη προνομιακής πρόσβασης στο eBPF απαγορεύεται πλέον από προεπιλογή στον ίδιο τον πυρήνα, ξεκινώντας από την έκδοση 5.16). Για παράδειγμα, η ευπάθεια μπορεί να αξιοποιηθεί στην προεπιλεγμένη διαμόρφωση στο Ubuntu 20.04 LTS, αλλά στα περιβάλλοντα Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 και Fedora 33 εμφανίζεται μόνο εάν ο διαχειριστής η παράμετρος kernel.unprivileged_bpf_disabled σε 0. Ως λύση για τον αποκλεισμό της ευπάθειας, μπορείτε να αποτρέψετε την εκτέλεση προγραμμάτων BPF από μη προνομιούχους χρήστες με την εντολή "sysctl -w kernel.unprivileged_bpf_disabled=1".

Πηγή: opennet.ru

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