Ευπάθεια που σας επιτρέπει να αντικαταστήσετε τις ακολουθίες διαφυγής σε τερματικά άλλων ατόμων

Εντοπίστηκε ένα θέμα ευπάθειας (CVE-2024-28085) στο βοηθητικό πρόγραμμα τοίχου, το οποίο παρέχεται στο πακέτο util-linux και προορίζεται για την αποστολή μηνυμάτων σε τερματικά, το οποίο επιτρέπει την επίθεση στα τερματικά άλλων χρηστών μέσω του χειρισμού των ακολουθιών διαφυγής. Το πρόβλημα προκαλείται από το βοηθητικό πρόγραμμα τοίχου που μπλοκάρει τις ακολουθίες διαφυγής στη ροή εισόδου, αλλά δεν το κάνει σε ορίσματα γραμμής εντολών, επιτρέποντας σε έναν εισβολέα να διαφύγει από τις ακολουθίες διαφυγής στα τερματικά άλλων χρηστών.

Για παράδειγμα, εκτελώντας το "wall $(printf "\033[33mHI")" μπορείτε να εκτυπώσετε το "HI" σε κίτρινο. Χρησιμοποιώντας ακολουθίες διαφυγής που σας επιτρέπουν να μετακινήσετε το δείκτη, να διαγράψετε και να αντικαταστήσετε το περιεχόμενο στην οθόνη, μπορείτε να προσομοιώσετε την εμφάνιση της προτροπής κωδικού πρόσβασης sudo στο τερματικό άλλου χρήστη. Εάν ο χρήστης δεν προσέξει το κόλπο και πληκτρολογήσει τον κωδικό πρόσβασής του, ο κωδικός πρόσβασης θα εμφανιστεί στο ιστορικό εισόδου ως μια ανύπαρκτη εντολή (στην πραγματικότητα, ο χρήστης θα εισάγει τον κωδικό πρόσβασής του στη γραμμή εντολών αντί για εντολή). "\033[3A" // μετακινήστε τον κέρσορα προς τα πάνω 3 γραμμές "\033[K" // διαγράψτε την προηγούμενη έξοδο "Κωδικός πρόσβασης [sudo] για a_user:" // εμφάνιση εικονικού αιτήματος sudo "\033[?25l" / / ορίστε το χρώμα φόντου για απόκρυψη της εισόδου "\033[38;2;48;10;36m"

Όταν εκδίδεται μια προειδοποίηση ότι η εντολή που εισήχθη δεν βρέθηκε, πολλές διανομές εκτελούν τον χειριστή /usr/lib/command-not-found, ο οποίος προσπαθεί να αναγνωρίσει το πακέτο που περιέχει την εντολή που λείπει και να παρέχει μια υπόδειξη σχετικά με το αν μπορεί να εγκατασταθεί . Το πρόβλημα είναι ότι όταν εκκινείται ο χειριστής command-not-found, μεταβιβάζεται σε αυτόν μια ανύπαρκτη εντολή ως παράμετρος γραμμής εντολών, η οποία είναι ορατή κατά την προβολή διεργασιών στο σύστημα (για παράδειγμα, όταν προσπαθείτε να εκτελέσετε το απεγκατεστημένο βοηθητικό πρόγραμμα Τα "xsnow", "/usr" θα είναι ορατά στη λίστα των διεργασιών /lib/command-not-found - xsnow"). Αντίστοιχα, ο εισβολέας μπορεί να παρακολουθεί τις διεργασίες που εκτελούνται (για παράδειγμα, αναλύοντας την εμφάνιση του "/proc/$pid/cmdline" για τον προβλεπόμενο αριθμό PID) και να προσδιορίσει τον κωδικό πρόσβασης που έχει εισαχθεί από το θύμα στη γραμμή εντολών.

Προκειμένου ο χρήστης να εισαγάγει έναν κωδικό πρόσβασης ως απάντηση σε μια εικονική προτροπή sudo, έχει προταθεί ένα τέχνασμα, η ουσία του οποίου είναι να παρακολουθείτε την πραγματική εκκίνηση του βοηθητικού προγράμματος sudo στη λίστα διαδικασιών, να περιμένετε να ολοκληρωθεί και εκτελέστε μια επίθεση μέσω του "τείχους" αμέσως μετά από αυτό. Με το χειρισμό των ακολουθιών διαφυγής, ένας εισβολέας μπορεί να αντικαταστήσει το μήνυμα μετά την πραγματική εκτέλεση του sudo με μια ψεύτικη προτροπή επανεισαγωγής κωδικού πρόσβασης. Το θύμα μπορεί να σκεφτεί ότι έκανε λάθος κατά την εισαγωγή του κωδικού πρόσβασης και να εισαγάγει τον κωδικό πρόσβασης για δεύτερη φορά, αποκαλύπτοντας τον κωδικό πρόσβασης στα επιχειρήματα του χειριστή "command-not-found".

Μια επιτυχημένη επίθεση απαιτεί να ρυθμίσετε τη λειτουργία "mesg" σε "y", η οποία έχει οριστεί από προεπιλογή στα Ubuntu, Debian και CentOS/RHEL. Η επίθεση έχει αποδειχθεί στο Ubuntu 22.04 στην προεπιλεγμένη διαμόρφωση χρησιμοποιώντας το gnome-terminal. Στο Debian, η επίθεση είναι δύσκολη, καθώς ο χειριστής "command-not-found" δεν είναι ενεργοποιημένος από προεπιλογή στη διανομή και στο CentOS/RHEL η επίθεση δεν θα λειτουργήσει, καθώς το βοηθητικό πρόγραμμα wall εγκαθίσταται χωρίς τη σημαία setgid και κάνει δεν έχουν πρόσβαση σε τερματικά άλλων ατόμων. Όταν χρησιμοποιείτε το windows-terminal, η επίθεση μπορεί να τροποποιηθεί για να αλλάξει τα περιεχόμενα του προχείρου.

Η ευπάθεια είναι παρούσα στο πακέτο util-linux από το 2013, αφού η έκδοση 2.24 πρόσθεσε τη δυνατότητα καθορισμού ενός μηνύματος στη γραμμή εντολών του τοίχου, αλλά ξέχασε να καθαρίσει τις ακολουθίες διαφυγής. Μια επιδιόρθωση για την ευπάθεια περιλαμβάνεται στη χθεσινή έκδοση του util-linux 2.40. Αξίζει να σημειωθεί ότι κατά την προσπάθεια επιδιόρθωσης της ευπάθειας στην κυκλοφορία του util-linux 2.39, εντοπίστηκε μια άλλη παρόμοια ευπάθεια, η οποία επιτρέπει την αντικατάσταση χαρακτήρων ελέγχου μέσω χειρισμού τοπικών ρυθμίσεων.

Πηγή: opennet.ru

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