Δύο ευπάθειες ανακαλύφθηκαν στον πυρήνα του Linux. Αυτές οι ευπάθειες είναι παρόμοιας φύσης με την ευπάθεια Copy Fail που αποκαλύφθηκε πριν από αρκετές ημέρες, αλλά επηρεάζουν διαφορετικά υποσυστήματα—xfrm-ESP και RxRPC. Αυτή η σειρά ευπαθειών έχει την κωδική ονομασία Dirty Frag (αναφέρεται επίσης ως Copy Fail 2). Αυτές οι ευπάθειες επιτρέπουν σε έναν χρήστη χωρίς δικαιώματα να αποκτήσει δικαιώματα root αντικαθιστώντας δεδομένα διεργασίας στην προσωρινή μνήμη σελίδας. Διατίθεται ένα exploit που λειτουργεί σε όλες τις τρέχουσες διανομές Linux. Η ευπάθεια αποκαλύφθηκε πριν από τη δημοσίευση των ενημερώσεων κώδικα, αλλά υπάρχει διαθέσιμη μια λύση.
Το Dirty Frag καλύπτει δύο διαφορετικά θέματα ευπάθειας: το πρώτο στη μονάδα xfrm-ESP, που χρησιμοποιείται για την επιτάχυνση των λειτουργιών κρυπτογράφησης IPsec χρησιμοποιώντας το πρωτόκολλο ESP (Encapsulating Security Payload), και το δεύτερο στο πρόγραμμα οδήγησης RxRPC, το οποίο υλοποιεί την οικογένεια υποδοχών AF_RXRPC και το πρωτόκολλο RPC με το ίδιο όνομα, που εκτελείται μέσω UDP. Κάθε θέμα ευπάθειας, λαμβανόμενο ξεχωριστά, επιτρέπει δικαιώματα root. Το θέμα ευπάθειας xfrm-ESP υπάρχει στον πυρήνα του Linux από τον Ιανουάριο του 2017 και το θέμα ευπάθειας RxRPC υπάρχει από τον Ιούνιο του 2023. Και τα δύο ζητήματα προκαλούνται από βελτιστοποιήσεις που επιτρέπουν άμεσες εγγραφές στην προσωρινή μνήμη σελίδας.
Για να εκμεταλλευτεί το θέμα ευπάθειας xfrm-ESP, ο χρήστης πρέπει να έχει άδεια δημιουργίας χώρων ονομάτων και για να εκμεταλλευτεί το θέμα ευπάθειας RxRPC, πρέπει να φορτωθεί η ενότητα πυρήνα rxrpc.ko. Για παράδειγμα, στο Ubuntu, οι κανόνες του AppArmor εμποδίζουν τους χρήστες χωρίς δικαιώματα να δημιουργούν χώρους ονομάτων, αλλά η ενότητα rxrpc.ko φορτώνεται από προεπιλογή. Ορισμένες διανομές δεν διαθέτουν τη μονάδα rxrpc.ko, αλλά δεν εμποδίζουν τη δημιουργία χώρου ονομάτων. Ο ερευνητής που ανακάλυψε το πρόβλημα ανέπτυξε ένα συνδυασμένο exploit ικανό να επιτεθεί στο σύστημα μέσω και των δύο ευπαθειών, καθιστώντας δυνατή την εκμετάλλευση του προβλήματος σε όλες τις κύριες διανομές. Το exploit έχει επιβεβαιωθεί ότι λειτουργεί σε Ubuntu 24.04.4 με πυρήνα 6.17.0-23, RHEL 10.1 με πυρήνα 6.12.0-124.49.1, openSUSE Tumbleweed με πυρήνα 7.0.2-1, CentOS Stream 10 με πυρήνα 6.12.0-224, AlmaLinux 10 με πυρήνα 6.12.0-124.52.3 και Fedora 44 με πυρήνα 6.19.14-300.
Όπως και με την ευπάθεια Copy Fail, τα προβλήματα στο xfrm-ESP και το RxRPC προκαλούνται από την αποκρυπτογράφηση δεδομένων επιτόπου χρησιμοποιώντας τη συνάρτηση splice(), η οποία μεταφέρει δεδομένα μεταξύ περιγραφέων αρχείων και σωλήνων χωρίς αντιγραφή, διαβιβάζοντας αναφορές σε στοιχεία στην προσωρινή μνήμη σελίδας. Οι μετατοπίσεις εγγραφής υπολογίστηκαν χωρίς κατάλληλους ελέγχους για να ληφθεί υπόψη η χρήση άμεσων αναφορών σε στοιχεία στην προσωρινή μνήμη σελίδας, επιτρέποντας σε ειδικά σχεδιασμένα αιτήματα να αντικαταστήσουν 4 byte σε μια δεδομένη μετατόπιση και να τροποποιήσουν τα περιεχόμενα οποιουδήποτε αρχείου στην προσωρινή μνήμη σελίδας.
Όλες οι λειτουργίες ανάγνωσης αρχείων ανακτούν πρώτα τα περιεχόμενα από την προσωρινή μνήμη σελίδας. Εάν τροποποιηθούν τα δεδομένα στην προσωρινή μνήμη σελίδας, οι λειτουργίες ανάγνωσης αρχείων θα επιστρέψουν υποκατεστημένα δεδομένα, όχι τις πραγματικές πληροφορίες που είναι αποθηκευμένες στη μονάδα δίσκου. Η εκμετάλλευση της ευπάθειας συνοψίζεται στην τροποποίηση της προσωρινής μνήμης σελίδας για ένα εκτελέσιμο αρχείο με τη σημαία root suid. Για παράδειγμα, για να αποκτήσετε δικαιώματα root, θα μπορούσατε να διαβάσετε το εκτελέσιμο αρχείο /usr/bin/su για να το τοποθετήσετε στην προσωρινή μνήμη σελίδας και, στη συνέχεια, να αντικαταστήσετε τον δικό σας κώδικα στα περιεχόμενα αυτού του αρχείου που φορτώνεται στην προσωρινή μνήμη σελίδας. Η επακόλουθη εκτέλεση του βοηθητικού προγράμματος "su" θα έχει ως αποτέλεσμα τη φόρτωση στη μνήμη του τροποποιημένου αντιγράφου από την προσωρινή μνήμη σελίδας και όχι του αρχικού εκτελέσιμου αρχείου από τη μονάδα δίσκου.
Η αποκάλυψη ευπάθειας και η συντονισμένη κυκλοφορία των ενημερώσεων κώδικα (patches) είχε προγραμματιστεί για τις 12 Μαΐου, αλλά λόγω διαρροής, οι πληροφορίες για την ευπάθεια έπρεπε να δημοσιευτούν πριν από την κυκλοφορία των ενημερώσεων κώδικα. Στα τέλη Απριλίου, οι ενημερώσεις κώδικα για τα rxrpc, ipsec και xfrm δημοσιεύτηκαν στη δημόσια λίστα αλληλογραφίας του netdev χωρίς να αναφέρεται ότι σχετίζονταν με την ευπάθεια. Στις 5 Μαΐου, ο συντηρητής του υποσυστήματος IPsec αποδέχτηκε μια αλλαγή στο αποθετήριο Git του netdev με μια προτεινόμενη διόρθωση στη μονάδα xfrm-esp. Η περιγραφή της αλλαγής ήταν σε μεγάλο βαθμό πανομοιότυπη με την περιγραφή του προβλήματος που οδήγησε στην ευπάθεια Copy Fail στη μονάδα algif_aead. Ένας ερευνητής ασφαλείας ενδιαφέρθηκε για αυτήν την επιδιόρθωση, κατάφερε να δημιουργήσει ένα λειτουργικό exploit και τη δημοσίευσε, αγνοώντας ότι είχε επιβληθεί εμπάργκο στην αποκάλυψη πληροφοριών σχετικά με το πρόβλημα μέχρι τις 12 Μαΐου.
Δεν έχουν ακόμη δημοσιευτεί ενημερώσεις με διορθώσεις για τον πυρήνα και τα πακέτα πυρήνα του Linux σε διανομές, αλλά υπάρχουν διαθέσιμες ενημερώσεις κώδικα που αντιμετωπίζουν τα προβλήματα—xfrm-esp και rxrpc. Δεν έχουν αντιστοιχιστεί αναγνωριστικά CVE, γεγονός που περιπλέκει την παρακολούθηση ενημερώσεων πακέτων σε διανομές. Ως λύση, μπορείτε να αποκλείσετε τη φόρτωση των μονάδων πυρήνα esp4, esp6 και rxrpc: sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Πηγή: opennet.ru
