Ευπάθεια στο υποσύστημα πυρήνα Linux Netfilter

Εντοπίστηκε μια ευπάθεια (CVE-2021-22555) στο Netfilter, ένα υποσύστημα του πυρήνα Linux που χρησιμοποιείται για το φιλτράρισμα και την τροποποίηση πακέτων δικτύου, το οποίο επιτρέπει σε έναν τοπικό χρήστη να αποκτήσει δικαιώματα root στο σύστημα, ακόμη και όταν βρίσκεται σε απομονωμένο κοντέινερ. Ένα λειτουργικό πρωτότυπο ενός exploit που παρακάμπτει τους μηχανισμούς προστασίας KASLR, SMAP και SMEP έχει ετοιμαστεί για δοκιμή. Ο ερευνητής που ανακάλυψε την ευπάθεια έλαβε μια ανταμοιβή 20 $ από την Google για τον εντοπισμό μιας μεθόδου παράκαμψης της απομόνωσης των δοχείων Kubernetes σε ένα σύμπλεγμα kCTF.

Το πρόβλημα υπάρχει από τον πυρήνα 2.6.19, που κυκλοφόρησε πριν από 15 χρόνια, και προκαλείται από ένα σφάλμα στους χειριστές IPT_SO_SET_REPLACE και IP6T_SO_SET_REPLACE που προκαλεί υπερχείλιση buffer κατά την αποστολή ειδικά διαμορφωμένων παραμέτρων μέσω κλήσης setsockopt σε λειτουργία compat. Υπό κανονικές συνθήκες, η κλήση στο compat_setsockopt() μπορεί να γίνει μόνο από τον χρήστη root, αλλά τα δικαιώματα που απαιτούνται για την εκτέλεση της επίθεσης μπορούν επίσης να αποκτηθούν από έναν μη προνομιούχο χρήστη σε συστήματα με ενεργοποιημένη υποστήριξη για χώρους ονομάτων χρήστη.

Ένας χρήστης μπορεί να δημιουργήσει ένα κοντέινερ με έναν ξεχωριστό χρήστη root και να εκμεταλλευτεί την ευπάθεια από εκεί. Για παράδειγμα, το "user namespaces" είναι ενεργοποιημένο από προεπιλογή στο Ubuntu και το Fedora, αλλά δεν είναι ενεργοποιημένο στο Debian και στο RHEL. Η ενημέρωση κώδικα που διορθώνει την ευπάθεια υιοθετήθηκε στον πυρήνα του Linux στις 13 Απριλίου. Οι ενημερώσεις πακέτων έχουν ήδη δημιουργηθεί από τα έργα Debian, Arch Linux και Fedora. Σε Ubuntu, RHEL και SUSE, οι ενημερώσεις ετοιμάζονται.

Το πρόβλημα παρουσιάζεται στη συνάρτηση xt_compat_target_from_user() λόγω εσφαλμένου υπολογισμού του μεγέθους της μνήμης κατά την αποθήκευση δομών πυρήνα μετά τη μετατροπή από αναπαράσταση 32 bit σε 64 bit. Το σφάλμα επιτρέπει την εγγραφή τεσσάρων μηδενικών byte σε οποιαδήποτε θέση πέρα ​​από το εκχωρημένο buffer που οριοθετείται από μετατόπιση 0x4C. Αυτή η δυνατότητα αποδείχθηκε αρκετή για τη δημιουργία ενός exploit που επέτρεπε σε κάποιον να αποκτήσει δικαιώματα root - εκκαθαρίζοντας τον δείκτη m_list->next στη δομή msg_msg, δημιουργήθηκαν συνθήκες πρόσβασης στα δεδομένα μετά την απελευθέρωση της μνήμης (χρήση-μετά-χωρίς) Στη συνέχεια χρησιμοποιήθηκε για τη λήψη πληροφοριών σχετικά με διευθύνσεις και αλλαγές σε άλλες δομές μέσω χειρισμού της κλήσης συστήματος msgsnd().

Πηγή: opennet.ru

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