Μια ευπάθεια στο Polkit που σας επιτρέπει να κλιμακώσετε τα προνόμιά σας στο σύστημα

Εντοπίστηκε μια ευπάθεια (CVE-2021-3560) στο στοιχείο Polkit, το οποίο χρησιμοποιείται σε διανομές για να επιτρέπει σε μη προνομιούχους χρήστες να εκτελούν ενέργειες που απαιτούν αυξημένα δικαιώματα πρόσβασης (για παράδειγμα, τοποθέτηση μονάδας USB), το οποίο επιτρέπει σε έναν τοπικό χρήστη να αποκτήσει δικαιώματα ρίζας στο σύστημα. Η ευπάθεια επιδιορθώθηκε στην έκδοση Polkit 0.119.

Το πρόβλημα υπάρχει από την έκδοση 0.113, αλλά πολλές διανομές, συμπεριλαμβανομένων των RHEL, Ubuntu, Debian και SUSE, έχουν υποστηρίξει την επηρεαζόμενη λειτουργικότητα σε πακέτα που βασίζονται σε παλαιότερες εκδόσεις του Polkit (επιδιορθώσεις πακέτων είναι ήδη διαθέσιμες στις διανομές).

Το πρόβλημα εκδηλώνεται στη συνάρτηση polkit_system_bus_name_get_creds_sync(), η οποία λαμβάνει τα αναγνωριστικά (uid και pid) της διαδικασίας που ζητά την αύξηση των δικαιωμάτων. Μια διεργασία αναγνωρίζεται από το Polkit εκχωρώντας ένα μοναδικό όνομα στο DBus, το οποίο στη συνέχεια χρησιμοποιείται για την επαλήθευση των προνομίων. Εάν μια διεργασία αποσυνδεθεί από το dbus-daemon λίγο πριν ξεκινήσει ο χειριστής polkit_system_bus_name_get_creds_sync, ο χειριστής λαμβάνει έναν κωδικό σφάλματος αντί για ένα μοναδικό όνομα.

Η ευπάθεια προκαλείται από το γεγονός ότι ο επιστρεφόμενος κωδικός σφάλματος δεν υποβάλλεται σε σωστή επεξεργασία και η συνάρτηση polkit_system_bus_name_get_creds_sync() επιστρέφει TRUE αντί για FALSE, παρόλο που δεν μπορεί να αντιστοιχίσει τη διαδικασία με το uid/pid και να επαληθεύσει τα δικαιώματα που ζητούνται για τη διαδικασία. Ο κώδικας από τον οποίο κλήθηκε η συνάρτηση polkit_system_bus_name_get_creds_sync() προϋποθέτει ότι ο έλεγχος ήταν επιτυχής και το αίτημα για κλιμάκωση των δικαιωμάτων προήλθε από τη ρίζα και όχι από έναν μη προνομιούχο χρήστη, γεγονός που καθιστά δυνατή την εκτέλεση προνομιακών ενεργειών χωρίς πρόσθετο έλεγχο ταυτότητας και επαλήθευση διαπιστευτηρίων.

Πηγή: opennet.ru

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