Αποκαλύφθηκε μια τεχνική για την εκμετάλλευση μιας ευπάθειας στο υποσύστημα tty του πυρήνα Linux

Ερευνητές από την ομάδα του Google Project Zero δημοσίευσαν μια μέθοδο για την εκμετάλλευση μιας ευπάθειας (CVE-2020-29661) στην υλοποίηση του προγράμματος χειρισμού TIOCSPGRP ioctl από το tty υποσύστημα του πυρήνα Linux και εξέτασαν επίσης λεπτομερώς τους μηχανισμούς προστασίας που θα μπορούσαν να αποκλείσουν τέτοια τρωτά σημεία.

Το σφάλμα που προκάλεσε το πρόβλημα διορθώθηκε στον πυρήνα του Linux στις 3 Δεκεμβρίου πέρυσι. Το πρόβλημα εμφανίζεται σε πυρήνες έως την έκδοση 5.9.13, αλλά οι περισσότερες διανομές έχουν διορθώσει το πρόβλημα στις ενημερώσεις σε πακέτα πυρήνα που προσφέρθηκαν πέρυσι (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Μια παρόμοια ευπάθεια (CVE-2020-29660) εντοπίστηκε ταυτόχρονα στην υλοποίηση της κλήσης TIOCGSID ioctl, αλλά επίσης έχει ήδη επιδιορθωθεί παντού.

Το πρόβλημα προκαλείται από ένα σφάλμα κατά τη ρύθμιση των κλειδαριών, το οποίο οδηγεί σε μια συνθήκη αγώνα στον κώδικα drivers/tty/tty_jobctrl.c, ο οποίος χρησιμοποιήθηκε για τη δημιουργία συνθηκών χρήσης μετά την ελεύθερη χρήση από το χώρο χρήστη μέσω χειρισμών ioct. καλώντας το TIOCSPGRP. Έχει αποδειχθεί ένα λειτουργικό exploit για κλιμάκωση προνομίων στο Debian 10 με τον πυρήνα 4.19.0-13-amd64.

Ταυτόχρονα, το δημοσιευμένο άρθρο δεν εστιάζει τόσο στην τεχνική δημιουργίας ενός λειτουργικού exploit, αλλά μάλλον στα εργαλεία που υπάρχουν στον πυρήνα για την προστασία από τέτοια τρωτά σημεία. Το συμπέρασμα δεν είναι παρήγορο· μέθοδοι όπως η τμηματοποίηση μνήμης στο σωρό και ο έλεγχος της πρόσβασης στη μνήμη μετά την απελευθέρωσή της δεν χρησιμοποιούνται στην πράξη, καθώς οδηγούν σε μείωση της απόδοσης και προστασία βάσει CFI (Control Flow Integrity), η οποία μπλοκάρει τα exploits στα τελευταία στάδια μιας επίθεσης, χρειάζεται βελτίωση.

Όταν εξετάζουμε τι θα έκανε τη διαφορά μακροπρόθεσμα, αυτό που ξεχωρίζει είναι η χρήση προηγμένων στατικών αναλυτών ή η χρήση γλωσσών που είναι ασφαλείς για τη μνήμη, όπως οι διαλέκτοι Rust και C με πλούσιους σχολιασμούς (όπως το Checked C) για έλεγχο κατάσταση κατά τη φάση κατασκευής κλειδαριές, αντικείμενα και δείκτες. Οι μέθοδοι προστασίας περιλαμβάνουν επίσης την ενεργοποίηση της λειτουργίας panic_on_oops, την εναλλαγή των δομών του πυρήνα σε λειτουργία μόνο για ανάγνωση και τον περιορισμό της πρόσβασης σε κλήσεις συστήματος χρησιμοποιώντας μηχανισμούς όπως το seccomp.

Πηγή: opennet.ru

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