Ευπάθειες στο OpenSMTPD που επιτρέπουν απομακρυσμένη και τοπική πρόσβαση root

Qualys Company αποκάλυψε άλλη μια απομακρυσμένη κρίσιμη ευπάθεια (CVE-2020-8794) στον διακομιστή αλληλογραφίας ΆνοιγμαSMTPD, που αναπτύχθηκε από το έργο OpenBSD. Όπως αυτή που εντοπίστηκε στα τέλη Ιανουαρίου τρωτό, ένα νέο ζήτημα καθιστά δυνατή την απομακρυσμένη εκτέλεση αυθαίρετων εντολών φλοιού σε έναν διακομιστή με δικαιώματα χρήστη root. Τρωτό εξαλειφθεί στο τεύχος OpenSMTPD 6.6.4p1.

Το πρόβλημα προκαλείται από ένα σφάλμα στον κώδικα που παραδίδει την αλληλογραφία στον απομακρυσμένο διακομιστή αλληλογραφίας (όχι στον κώδικα που χειρίζεται τις εισερχόμενες συνδέσεις). Η επίθεση είναι δυνατή τόσο από την πλευρά του πελάτη όσο και από την πλευρά του διακομιστή. Από την πλευρά του πελάτη, η επίθεση είναι δυνατή στην προεπιλεγμένη διαμόρφωση του OpenSMTPD, στην οποία το OpenSMTPD δέχεται αιτήματα μόνο στην εσωτερική διεπαφή δικτύου (localhost) και στέλνει μηνύματα αλληλογραφίας σε εξωτερικούς διακομιστές. Για να εκμεταλλευτεί την ευπάθεια, αρκεί, κατά την παράδοση μιας επιστολής, το OpenSMTPD να δημιουργήσει μια περίοδο λειτουργίας με έναν διακομιστή αλληλογραφίας που ελέγχεται από τον εισβολέα ή ο εισβολέας να μπορεί να σφηνώσει στη σύνδεση πελάτη (MITM ή ανακατεύθυνση κατά τη διάρκεια επιθέσεων μέσω DNS ή BGP ).

Για επίθεση από την πλευρά του διακομιστή, το OpenSMTPD πρέπει να ρυθμιστεί ώστε να λαμβάνει αιτήματα εξωτερικού δικτύου από άλλους διακομιστές αλληλογραφίας ή να εξυπηρετεί υπηρεσίες τρίτων που σας επιτρέπουν να στείλετε ένα αίτημα σε ένα αυθαίρετο email (για παράδειγμα, φόρμες επιβεβαίωσης διεύθυνσης σε ιστότοπους). Για παράδειγμα, ένας εισβολέας μπορεί να συνδεθεί στον διακομιστή OpenSMTPD και να στείλει ένα λανθασμένο γράμμα (σε έναν ανύπαρκτο χρήστη), το οποίο θα οδηγήσει σε μια απάντηση στέλνοντας μια επιστολή με κωδικό σφάλματος (αναπήδηση) στον διακομιστή του εισβολέα. Ένας εισβολέας μπορεί να εκμεταλλευτεί την ευπάθεια όταν το OpenSMTPD συνδέεται για να παραδώσει μια ειδοποίηση στον διακομιστή του εισβολέα. Οι εντολές φλοιού που εισάγονται κατά τη διάρκεια της επίθεσης τοποθετούνται σε ένα αρχείο που εκτελείται με δικαιώματα ρίζας κατά την επανεκκίνηση του OpenSMTPD, επομένως ο εισβολέας πρέπει να περιμένει να επανεκκινήσει το OpenSMTPD ή να ξεκινήσει ένα σφάλμα του OpenSMTPD για να ολοκληρώσει την επίθεση.

Το πρόβλημα υπάρχει στη συνάρτηση mta_io() στον κώδικα για την ανάλυση της απόκρισης πολλαπλών γραμμών που επιστρέφεται από τον απομακρυσμένο διακομιστή μετά τη δημιουργία μιας σύνδεσης (για παράδειγμα, "250-ENHANCEDSTATUSCODES" και "250 HELP"). Το OpenSMTPD υπολογίζει ότι η πρώτη γραμμή περιλαμβάνει έναν τριψήφιο αριθμό και κείμενο που χωρίζονται με χαρακτήρα "-" και η δεύτερη γραμμή περιέχει έναν τριψήφιο αριθμό και κείμενο που χωρίζονται με κενό. Εάν ένας τριψήφιος αριθμός δεν ακολουθείται από κενό και κείμενο στη δεύτερη γραμμή, ο δείκτης που χρησιμοποιείται για τον ορισμό του κειμένου ορίζεται στο byte που ακολουθεί τον χαρακτήρα '\0' και γίνεται προσπάθεια αντιγραφής των δεδομένων μετά το τέλος της γραμμής στο buffer.

Κατόπιν αιτήματος του έργου OpenBSD, η δημοσίευση λεπτομερειών σχετικά με την εκμετάλλευση της ευπάθειας έχει καθυστερήσει μέχρι τις 26 Φεβρουαρίου για να επιτραπεί στους χρήστες να ενημερώσουν τα συστήματά τους. Το πρόβλημα υπάρχει στη βάση κώδικα από τον Δεκέμβριο του 2015, αλλά η εκμετάλλευση πριν από την εκτέλεση κώδικα με δικαιώματα root ήταν δυνατή από τον Μάιο του 2018. Οι ερευνητές ετοίμασαν ένα λειτουργικό πρωτότυπο του exploit, το οποίο δοκιμάστηκε με επιτυχία σε εκδόσεις OpenSMTPD για OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (δοκιμή) και Fedora 31.

Στο OpenSMTPD επίσης αναγνωρισθείς Μια άλλη ευπάθεια (CVE-2020-8793) που επιτρέπει σε έναν τοπικό χρήστη να διαβάσει την πρώτη γραμμή οποιουδήποτε αρχείου στο σύστημα. Για παράδειγμα, μπορείτε να διαβάσετε την πρώτη γραμμή του /etc/master.passwd, η οποία περιέχει τον κατακερματισμό του κωδικού πρόσβασης του χρήστη root. Η ευπάθεια σάς επιτρέπει επίσης να διαβάσετε ολόκληρο το περιεχόμενο ενός αρχείου που ανήκει σε άλλο χρήστη, εάν αυτό το αρχείο βρίσκεται στο ίδιο σύστημα αρχείων με τον κατάλογο /var/spool/smtpd/. Το πρόβλημα δεν είναι εκμεταλλεύσιμο σε πολλές διανομές Linux όπου η τιμή του /proc/sys/fs/protected_hardlinks έχει οριστεί σε 1.

Το πρόβλημα είναι συνέπεια της ατελούς εξάλειψης πρόβλημα, εκφράστηκαν κατά τον έλεγχο που διενεργήθηκε από την Qualys το 2015. Ένας εισβολέας μπορεί να επιτύχει την εκτέλεση του κώδικά του με τα δικαιώματα της ομάδας «_smtpq» ορίζοντας τη μεταβλητή «PATH=». και τοποθετώντας ένα σενάριο που ονομάζεται makemap στον τρέχοντα κατάλογο (το βοηθητικό πρόγραμμα smtpctl εκτελεί το makemap χωρίς να προσδιορίζει ρητά τη διαδρομή). Αποκτώντας πρόσβαση στην ομάδα "_smtpq", ο εισβολέας μπορεί στη συνέχεια να προκαλέσει μια συνθήκη αγώνα (δημιουργία μεγάλου αρχείου στον κατάλογο εκτός σύνδεσης και αποστολή σήματος SIGSTOP) και, πριν ολοκληρωθεί η επεξεργασία, να αντικαταστήσει το αρχείο στον κατάλογο εκτός σύνδεσης με ένα σκληρό συμβολικός σύνδεσμος που δείχνει το αρχείο προορισμού του οποίου τα περιεχόμενα πρέπει να διαβαστούν.

Αξίζει να σημειωθεί ότι στο Fedora 31 η ευπάθεια σάς επιτρέπει να αποκτήσετε αμέσως τα προνόμια της ομάδας ρίζας, αφού η διαδικασία smtpctl είναι εξοπλισμένη με τη σημαία setgid root, αντί για τη σημαία setgid smtpq. Αποκτώντας πρόσβαση στην ομάδα ρίζας, μπορείτε να αντικαταστήσετε τα περιεχόμενα του /var/lib/sss/mc/passwd και να αποκτήσετε πλήρη πρόσβαση root στο σύστημα.

Πηγή: opennet.ru

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