Ευπάθεια VFS του πυρήνα Linux που επιτρέπει την κλιμάκωση των προνομίων

Εντοπίστηκε ένα θέμα ευπάθειας (CVE-2022-0185) στο Filesystem Context API που παρέχεται από τον πυρήνα του Linux, το οποίο θα μπορούσε να επιτρέψει σε έναν τοπικό χρήστη να αποκτήσει δικαιώματα root στο σύστημα. Ο ερευνητής που εντόπισε το πρόβλημα δημοσίευσε μια επίδειξη ενός exploit που επιτρέπει την εκτέλεση κώδικα ως root στο Ubuntu 20.04 στην προεπιλεγμένη διαμόρφωση. Ο κώδικας εκμετάλλευσης σχεδιάζεται να δημοσιευτεί στο GitHub εντός μιας εβδομάδας, αφού οι διανομές κυκλοφορήσουν μια ενημέρωση που διορθώνει την ευπάθεια.

Η ευπάθεια υπάρχει στη συνάρτηση legacy_parse_param() στο VFS και προκαλείται από την έλλειψη σωστής επικύρωσης του μέγιστου μεγέθους των παραμέτρων που παρέχονται σε συστήματα αρχείων που δεν υποστηρίζουν το API περιβάλλοντος συστήματος αρχείων. Εάν μεταβιβάσετε πολύ μεγάλη παράμετρο, μπορείτε να προκαλέσετε υπερχείλιση της ακέραιας μεταβλητής που χρησιμοποιείται για τον υπολογισμό του μεγέθους των δεδομένων που γράφονται - ο κώδικας έχει έναν έλεγχο υπερχείλισης buffer "if (len > PAGE_SIZE - 2 - size)", που κάνει δεν λειτουργεί εάν η τιμή του μεγέθους είναι μεγαλύτερη από 4094 λόγω υπερχείλισης ακέραιου αριθμού μέσω του κάτω ορίου (ακέραιος υπορροή, όταν ρίχνετε 4096 - 2 - 4095 σε ανυπόγραφο int, λαμβάνετε 2147483648).

Αυτό το σφάλμα επιτρέπει, κατά την πρόσβαση σε μια ειδικά σχεδιασμένη εικόνα FS, να προκαλέσει υπερχείλιση buffer και να αντικαταστήσει τα δεδομένα του πυρήνα μετά την εκχωρημένη περιοχή μνήμης. Για την εκμετάλλευση της ευπάθειας, απαιτούνται δικαιώματα CAP_SYS_ADMIN, π.χ. διαχειριστική αρχή. Το πρόβλημα είναι ότι ένας μη προνομιούχος χρήστης μπορεί να λάβει τέτοια δικαιώματα σε ένα απομονωμένο κοντέινερ, εάν η υποστήριξη για χώρους ονομάτων χρήστη είναι ενεργοποιημένη στο σύστημα. Για παράδειγμα, οι χώροι ονομάτων χρήστη είναι ενεργοποιημένοι από προεπιλογή στο Ubuntu και στο Fedora, αλλά δεν είναι ενεργοποιημένοι στο Debian και στο RHEL (εκτός εάν χρησιμοποιούνται πλατφόρμες απομόνωσης κοντέινερ).

Το πρόβλημα εκδηλώνεται από τον πυρήνα του Linux 5.1 και επιδιορθώθηκε στις χθεσινές ενημερώσεις 5.16.2, 5.15.16, 5.10.93, 5.4.173. Οι ενημερώσεις πακέτων ευπάθειας έχουν ήδη κυκλοφορήσει για RHEL, Debian, Fedora, Ubuntu. Η ενημέρωση κώδικα δεν είναι ακόμη διαθέσιμη σε Arch Linux, Gentoo, SUSE και openSUSE. Ως λύση ασφαλείας για συστήματα που δεν χρησιμοποιούν απομόνωση κοντέινερ, μπορείτε να ορίσετε την τιμή του sysctl "user.max_user_namespaces" σε 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p / etc/ sysctl.d/usersns.conf

Πηγή: opennet.ru

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