Πρόσφατα κυκλοφόρησε η είδηση στο δίκτυο της ανακάλυψης του μια νέα ευπάθεια στο Linux που αναγράφεται ως "Υψηλής σοβαρότητας" που επηρεάζει όλους τους πυρήνες από την έκδοση 5.8, καθώς και παράγωγα, συμπεριλαμβανομένου του Android.
Γνωστός ως Το Dirty Pipe επιτρέπει την αντικατάσταση δεδομένων σε αρχεία μόνο για ανάγνωση και μπορεί να οδηγήσει σε κλιμάκωση των προνομίων με την εισαγωγή κώδικα στις διαδικασίες "root".
Αν και έχει ήδη διορθωθεί στον κύριο πυρήνα του Linux, το σφάλμα θα μπορούσε να οπλιστεί με τη μορφή εκμετάλλευσης κλιμάκωσης προνομίων σε όλες τις συσκευές που εκτελούν τον πυρήνα Linux έκδοση 5.8 ή νεότερη.
Σημαίνει επίσης ότι μια δέσμη νέων smartphone Android, όπως το Samsung Galaxy S22 και το Google Pixel 6, είναι επίσης ευάλωτα, έως ότου κάθε συσκευή λάβει την κατάλληλη ενημερωμένη έκδοση κώδικα πυρήνα από τον αντίστοιχο OEM.
Σχετικά με το Dirty Pipe
Η ευπάθεια ήταν αποκάλυψε ο ερευνητής ασφαλείας Max Kellerman και καταλογογραφήθηκε ως (CVE-2022-0847), χρειάστηκαν μερικοί μήνες για να βρεθεί ένα proof-of-concept exploit.
Η ευπάθεια επιτρέπει σε έναν μη προνομιούχο χρήστη να εισάγει και να αντικαθιστά δεδομένα σε αρχεία μόνο για ανάγνωση, συμπεριλαμβανομένων των διεργασιών SUID που εκτελούνται ως root. Το ψευδώνυμο της καθομιλουμένης φαίνεται να είναι ένα παιχνίδι με το διαβόητο ζωύφιο Βρώμικη αγελάδα και έναν μηχανισμό Linux που ονομάζεται pipelining για τη διεργασία μετάδοσης μηνυμάτων, καθώς το τελευταίο χρησιμοποιείται κατά τη ρουτίνα εκμετάλλευσης.
Όλα ξεκίνησαν πριν από ένα χρόνο με ένα δελτίο υποστήριξης που σχετίζεται με κατεστραμμένα αρχεία. Ένας πελάτης παραπονέθηκε ότι δεν ήταν δυνατή η αποσυσκευασία των ληφθέντων αρχείων καταγραφής πρόσβασης. Και πράγματι, υπήρχε ένα κατεστραμμένο αρχείο καταγραφής σε έναν από τους διακομιστές καταγραφής. Θα μπορούσε να είναι αποσυμπιεσμένο, αλλά το gzip ανέφερε ένα σφάλμα CRC. Δεν μπορούσα να εξηγήσω γιατί ήταν κατεστραμμένο, αλλά υπέθεσα ότι η διαδικασία του νυχτερινού διαχωρισμού είχε καταρρεύσει και είχε δημιουργήσει ένα κατεστραμμένο αρχείο. Διόρθωσα χειροκίνητα το CRC του αρχείου, έκλεισα το εισιτήριο και σύντομα ξέχασα το πρόβλημα.
Μετά από μήνες ανάλυσης, ο ερευνητής ανακάλυψε τελικά ότι τα κατεστραμμένα αρχεία πελάτη ήταν το αποτέλεσμα ενός σφάλματος στον πυρήνα του Linux. Βρήκε έναν τρόπο να εκμεταλλευτεί το Dirty Pipe για να επιτρέψει σε οποιονδήποτε έχει λογαριασμό, συμπεριλαμβανομένων των λιγότερο προνομιούχων λογαριασμών "κανείς", να προσθέσει ένα κλειδί SSH στον λογαριασμό χρήστη root.
Για να ενεργοποιήσει την ευπάθεια, ο Kellerman μοιράστηκε την απόδειξη της ιδέας του, ο εισβολέας πρέπει να έχει δικαιώματα ανάγνωσης. Επίσης, η κύλιση δεν πρέπει να είναι σε όριο σελίδας, η γραφή δεν μπορεί να υπερβεί το όριο σελίδας και το μέγεθος του αρχείου δεν μπορεί να αλλάξει.
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, πρέπει: να δημιουργήσετε έναν σωλήνα, να γεμίσετε τον σωλήνα με αυθαίρετα δεδομένα (θέτοντας τη σημαία PIPE_BUF_FLAG_CAN_MERGE σε όλες τις καταχωρήσεις στο δαχτυλίδι), να αδειάσετε το σωλήνα (αφήνοντας το σύνολο σημαιών σε όλες τις περιπτώσεις της δομής pipe_buffer στη δομή του δακτυλίου pipe_inode_info), συγχωνεύστε τα δεδομένα από το αρχείο προορισμού (άνοιξε με O_RDONLY) στο σωλήνα ακριβώς πριν από τη μετατόπιση στόχου και γράψτε αυθαίρετα δεδομένα στο σωλήνα.
Το Dirty Pipe επηρεάζει επίσης οποιαδήποτε έκδοση του Android που βασίζεται σε μία από τις ευάλωτες εκδόσεις του πυρήνα Linux. Επειδή το Android είναι τόσο κατακερματισμένο, τα επηρεαζόμενα μοντέλα συσκευών δεν μπορούν να παρακολουθηθούν ομοιόμορφα.
Σύμφωνα με τον Kellerman, Η Google συγχώνευσε τη διόρθωση σφαλμάτων της με τον πυρήνα Android τον περασμένο μήνα, αμέσως μετά τη διόρθωση με την κυκλοφορία των εκδόσεων 5.16.11, 5.15.25 και 5.10.102 του πυρήνα Linux.
Τούτου λεχθέντος, πιθανότατα θα πρέπει να περιμένουμε λίγο πριν οι OEM αρχίσουν να κυκλοφορούν ενημερώσεις Android που περιέχουν την επιδιόρθωση. Το Pixel 6 της Google, για παράδειγμα, εξακολουθεί να είναι ευάλωτο, αλλά οι προχωρημένοι χρήστες μπορούν να μετριάσουν το ελάττωμα εγκαθιστώντας έναν προσαρμοσμένο ενημερωμένο πυρήνα aftermarket ως εναλλακτική επιλογή.
Οι προγραμματιστές του πυρήνα του Linux κυκλοφόρησαν διορθώσεις (5.16.11, 5.15.25, 5.10.102) στις 23 Φεβρουαρίου, ενώ η Google διόρθωση του πυρήνα του Android στις 24 Φεβρουαρίου. Ο Kellermann και άλλοι ειδικοί συνέκριναν την ευπάθεια με CVE-2016-5195 "Dirty Cow" και είπαν ότι είναι ακόμα πιο εύκολο να το εκμεταλλευτείς.
Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, μπορείτε να συμβουλευτείτε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.