Εντόπισαν μια ευπάθεια στο oath-toolkit που επέτρεπε την απόκτηση προνομίων root

ευπάθεια

πριν ΛΙΓΕΣ μερες η είδηση ​​κυκλοφόρησε ότι α κρίσιμη ευπάθεια, εγγεγραμμένος ως CVE-2024-47191, στη μονάδα pam_oath PAM του πακέτου oath-toolkit, χρησιμοποιείται για έλεγχο ταυτότητας δύο παραγόντων με χρήση κωδικών πρόσβασης μίας χρήσης (OTP).

Σχετικά με την ευπάθεια, αναφέρεται ότι προκύπτει λόγω του τρόπου με τον οποίο η μονάδα pam_oath χειρίζεται τα βασικά αρχεία OATH. Αρχικά, αυτά τα αρχεία ήταν αποθηκευμένα στο /etc/users.oath, προσβάσιμα μόνο από τον χρήστη root. Ωστόσο, με την έκδοση 2.6.7, προστέθηκε η επιλογή για τους χρήστες να αποθηκεύουν αυτά τα αρχεία στους δικούς τους οικιακούς καταλόγους.

αυτό Η "μικρή αλλαγή" επέτρεψε σε μη προνομιούχους χρήστες να τροποποιήσουν τα δικά τους αρχεία των κλειδιών, αλλά το pam_oath δεν προσάρμοσε τα προνόμιά του κατά την πρόσβαση σε αυτά τα αρχεία, συνεχίζοντας ανασφαλείς πρακτικές που υποθέτουν ότι τα αρχεία βρίσκονται σε προστατευμένο κατάλογο. Αξίζει να αναφέρουμε ότι αυτή η ευπάθεια επηρεάζει μόνο διαμορφώσεις που επιτρέπουν την αποθήκευση αρχείων κλειδιών σε οικιακούς καταλόγους, όπως όταν ρυθμίζεται το PAM.

Το θέμα ευπάθειας είναι ότι το pam_oath αντικαθιστά το αρχείο κλειδιού μετά από κάθε επιτυχή έλεγχο ταυτότητας για να αποτρέψετε την επαναλαμβανόμενη χρήση του ίδιου κωδικού πρόσβασης μίας χρήσης. Αυτή η διαδικασία περιλαμβάνει τη δημιουργία ενός αρχείου κλειδώματος, την εγγραφή του ενημερωμένου περιεχομένου σε ένα προσωρινό αρχείο με την επέκταση .new και, στη συνέχεια, αυτό αντικαθιστά το αρχικό αρχείο με το νέο. Ωστόσο, αυτό το αρχείο .new δημιουργείται και γράφεται από μια διαδικασία με δικαιώματα root, αλλά η προηγούμενη ύπαρξη και η ασφάλειά του δεν έχουν επαληθευτεί σωστά.

Η επίθεση απαιτεί η διαμόρφωση "usersfile" να έχει ένα αρχείο ή ένα στοιχείο διαδρομής που βρίσκεται σε μια ευάλωτη τοποθεσία. Η κοινή διαμόρφωση με μια προστατευμένη με ανάγνωση ρύθμιση παραμέτρων usersfile=/etc/users.oath δεν είναι ευάλωτη.

Αναφέρεται ότι εάν το τα βασικά αρχεία βρίσκονται στον κατάλογο του συστήματος, ως τέτοια αυτή η διαδικασία δεν παρουσιάζει προβλήματα. Αλλά με την υποστήριξη για τους οικιακούς καταλόγους χρηστών, εισάγεται μια εκμεταλλεύσιμη ευπάθεια, από τότε Ένας εισβολέας μπορεί να δημιουργήσει έναν συμβολικό σύνδεσμο που ονομάζεται oath.secrets.new και να τον υποδείξει σε οποιοδήποτε αρχείο του συστήματος. Ως αποτέλεσμα, μετά τον επιτυχή έλεγχο ταυτότητας, αυτό το αρχείο συστήματος μπορεί να αντικατασταθεί, δίνοντας δυνητικά πρόσβαση root στον εισβολέα.

Αποφασίσαμε να αναπτύξουμε μια ενημερωμένη έκδοση κώδικα που λαμβάνει υπόψη όσο το δυνατόν περισσότερες περιπτώσεις χρήσης, διασφαλίζοντας όλες τις λειτουργίες διατηρώντας παράλληλα τη συμβατότητα προς τα πίσω. Με την ενημερωμένη έκδοση κώδικα, η διαδρομή του αρχείου των χρηστών διασχίζεται με ασφάλεια χρησιμοποιώντας την οικογένεια κλήσεων συστήματος *at. Τα προνόμια θα αφαιρεθούν για τον κάτοχο του αρχείου χρήστη ως πρόσθετο μέτρο ασφαλείας. Ο μηχανισμός κλειδώματος έχει διορθωθεί ώστε να καλύπτει όλη την πρόσβαση στα αρχεία χρήστη.

Στην δημοσίευση που περιγράφει λεπτομερώς την ευπάθεια Αναφέρεται επίσης ότι Για να εκμεταλλευτεί την ευπάθεια, ένας εισβολέας μπορεί να δημιουργήσει έναν συμβολικό σύνδεσμο που οδηγεί στο αρχείο /etc/shadow, το οποίο αποθηκεύει κρίσιμες πληροφορίες σχετικά με τους κωδικούς πρόσβασης του συστήματος. Μετά από επιτυχή έλεγχο ταυτότητας μέσω pam_oath, το αρχείο Το /etc/shadow θα αντικατασταθεί με τη λίστα κλειδιών OATH του εισβολέα. Επιπλέον, το pam_oath θα συγχρονίσει τα δικαιώματα και την ιδιοκτησία του /etc/shadow με αυτά του αρχείου users.oath, πράγμα που σημαίνει ότι το αρχείο /etc/shadow θα γίνει ιδιοκτησία του χρήστη που επιτίθεται. Με αυτήν την πρόσβαση, ο εισβολέας μπορεί να τροποποιήσει το /etc/shadow για να δημιουργήσει διαπιστευτήρια πρόσβασης root, επιτυγχάνοντας έτσι τον πλήρη έλεγχο του συστήματος.

Η ενημερωμένη έκδοση κώδικα χρησιμοποιεί λειτουργίες ειδικά για το Linux (για παράδειγμα, σύνδεση αρχείων από το /proc/self/fd), επομένως δεν λειτουργεί πλέον για συστήματα που δεν είναι Linux. Η περιγραφή της ενημερωμένης έκδοσης κώδικα και τα σχόλια κώδικα περιέχουν περισσότερες ενδείξεις σχετικά με τις μεμονωμένες αποφάσεις που λαμβάνονται σε αυτήν την ενημέρωση κώδικα.

Τέλος, εάν ενδιαφέρεστε να μάθετε περισσότερα για αυτό, θα πρέπει να γνωρίζετε ότι το θέμα ευπάθειας εμφανίστηκε στην έκδοση 2.6.7 και επιδιορθώθηκε στην έκδοση 2.6.12. Όσον αφορά τις λεπτομέρειες της ενημέρωσης κώδικα και των ενημερώσεων ασφαλείας, μπορείτε να ακολουθήσετε τη διαδικασία στις διάφορες διανομές όπως DebianUbuntuRHELSUSE/openSUSE αψίδα.