Ευπάθεια στο XFS που επιτρέπει την ανάγνωση ακατέργαστων δεδομένων συσκευής μπλοκ

Ανακαλύφθηκε μια ευπάθεια (CVE-2021-4155) στον κώδικα του συστήματος αρχείων XFS που επιτρέπει σε έναν τοπικό μη προνομιούχο χρήστη να διαβάζει αχρησιμοποίητα δεδομένα μπλοκ απευθείας από μια συσκευή μπλοκ. Όλες οι κύριες εκδόσεις του πυρήνα Linux παλαιότερες από 5.16 που περιέχουν το πρόγραμμα οδήγησης XFS επηρεάζονται από αυτό το ζήτημα. Η ενημέρωση κώδικα συμπεριλήφθηκε στην έκδοση 5.16, καθώς και στις ενημερώσεις του πυρήνα 5.15.14, 5.10.91, 5.4.171, 4.19.225, κ.λπ. Η κατάσταση της δημιουργίας ενημερώσεων με την εξάλειψη του προβλήματος στις διανομές μπορεί να παρακολουθηθεί σε αυτές τις σελίδες: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Η ευπάθεια προκαλείται από τη λανθασμένη συμπεριφορά δύο ioctl(XFS_IOC_ALLOCSP) και ioctl(XFS_IOC_FREESP) ειδικά για το XFS, που είναι το λειτουργικό ανάλογο της κλήσης συστήματος σε όλο τον πυρήνα fallocate(). Όταν αυξάνετε ένα μέγεθος αρχείου που δεν είναι στοιχισμένο με μπλοκ, τα ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP δεν επαναφέρουν τα byte ουράς μέχρι το επόμενο όριο μπλοκ. Έτσι, σε ένα XFS με τυπικό μέγεθος μπλοκ 4096 byte, ένας εισβολέας μπορεί να διαβάσει έως και 4095 byte προηγούμενων γραπτών δεδομένων από κάθε μπλοκ. Αυτές οι περιοχές μπορεί να περιέχουν δεδομένα από διαγραμμένα αρχεία, ανασυγκροτημένα αρχεία και αρχεία με αποκλεισμένα μπλοκ.

Μπορείτε να ελέγξετε το σύστημά σας για πρόβλημα με ένα απλό πρωτότυπο exploit. Εάν, μετά την εκτέλεση της προτεινόμενης ακολουθίας εντολών, είναι δυνατή η ανάγνωση του κειμένου του Σαίξπηρ, τότε το πρόγραμμα οδήγησης FS είναι ευάλωτο. Η αρχική τοποθέτηση του διαμερίσματος XFS για την επίδειξη απαιτεί δικαιώματα υπερχρήστη.

Εφόσον τα ioctl(XFS_IOC_ALLOCSP) και ioctl(XFS_IOC_FREESP) είναι σχεδόν πανομοιότυπα σε λειτουργικότητα με την τυπική fallocate(), και η μόνη διαφορά τους είναι η διαρροή δεδομένων, η παρουσία τους μοιάζει με κερκόπορτα. Παρά τη γενική πολιτική της μη αλλαγής των υπαρχουσών διεπαφών στον πυρήνα, μετά από πρόταση του Linus, πάρθηκε η απόφαση να αφαιρεθούν εντελώς αυτά τα ioctls στην επόμενη έκδοση.

Πηγή: opennet.ru

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