Nimbuspwn, μια ευπάθεια στον δικτυακό αποστολέα που επιτρέπει την εκτέλεση εντολών ως root

Ο Έδωσαν στη δημοσιότητα ερευνητές ασφαλείας της Microsoft τα νέα που έχουν εντοπίσει δύο τρωτά σημεία (CVE-2022-29799, CVE-2022-29800) στην υπηρεσία δικτυακού αποστολέα με την κωδική ονομασία Nimbuspwn που επιτρέπουν σε έναν μη προνομιούχο χρήστη να εκτελεί αυθαίρετες εντολές ως root.

networkd-dispatcher en χρησιμοποιείται από πολλές διανομές Linux, συμπεριλαμβανομένου του Ubuntu, το οποίο χρησιμοποιεί τη διαδικασία παρασκηνίου του systemd-networkd για τη διαμόρφωση των ρυθμίσεων δικτύου και εκτελεί λειτουργίες παρόμοιες με το NetworkManager-dispatcher, δηλαδή χειρίζεται την εκτέλεση σεναρίου όταν αλλάζει η κατάσταση σύνδεσης δικτύου, για παράδειγμα, χρησιμοποιείται για την εκκίνηση ενός VPN μετά την εγκατάσταση του κύρια σύνδεση δικτύου.

Η Microsoft ανακάλυψε πολλά τρωτά σημεία, τα οποία ονομάζονται συλλογικά Nimbuspwn, που θα μπορούσαν να επιτρέψουν σε έναν εισβολέα να αυξήσει τα δικαιώματα για root σε πολλά τερματικά σημεία επιφάνειας εργασίας Linux. Τα τρωτά σημεία μπορούν να συνδεθούν με αλυσίδα για να αποκτήσουν δικαιώματα root σε συστήματα Linux, επιτρέποντας στους εισβολείς να αναπτύξουν ωφέλιμα φορτία, όπως ένα root backdoor και να εκτελέσουν άλλες κακόβουλες ενέργειες μέσω αυθαίρετης εκτέλεσης ριζικού κώδικα. Επιπλέον, τα τρωτά σημεία Nimbuspwn θα μπορούσαν ενδεχομένως να αξιοποιηθούν ως φορέας πρόσβασης root από πιο εξελιγμένες απειλές, όπως κακόβουλο λογισμικό ή ransomware, για να επηρεάσουν περαιτέρω ευάλωτες συσκευές.

Ανακαλύψαμε τα τρωτά σημεία ακούγοντας μηνύματα στο System Bus ενώ πραγματοποιούσαμε ελέγχους κώδικα και δυναμική ανάλυση σε υπηρεσίες που εκτελούνται ως root και παρατηρήσαμε ένα περίεργο μοτίβο σε μια μονάδα συστήματος που ονομάζεται networkd-dispatcher.

Η διαδικασία παρασκηνίου που σχετίζεται με το networkd-dispatcher εκτελείται ως root και ακούει γεγονότα μέσω του D-Bus. Η υπηρεσία systemd-networkd στέλνει πληροφορίες σχετικά με συμβάντα που σχετίζονται με την αλλαγή της κατάστασης των συνδέσεων δικτύου. Το πρόβλημα είναι ότι οι μη προνομιούχοι χρήστες μπορούν να ανεβάσουν ένα ανύπαρκτο συμβάν κατάστασης και να ξεκινήσουν την εκτέλεση του σεναρίου σας, το οποίο θα εκτελείται ως root.

Το systemd-networkd έχει σχεδιαστεί για να εκτελεί μόνο σενάρια ελεγκτής συστήματος που βρίσκεται στον κατάλογο /etc/networkd-dispatcher και δεν μπορεί να αντικατασταθεί από το χρήστη, αλλά λόγω ευπάθειας (CVE-2022-29799) ήταν πιθανό ότι ο κώδικας χειρισμού διαδρομής αρχείου είχε απενεργοποιηθεί από τον βασικό κατάλογο των ορίων και να εκτελέσει αυθαίρετα σενάρια.

Συγκεκριμένα, κατά τη διαμόρφωση της διαδρομής του αρχείου προς το σενάριο, χρησιμοποιήθηκαν οι τιμές OperationalState και AdministrationState που μεταδόθηκαν μέσω D-Bus, στις οποίες δεν διαγράφηκαν οι ειδικοί χαρακτήρες. Ένας εισβολέας θα μπορούσε να δημιουργήσει τη δική του κατάσταση με τους χαρακτήρες "../" στο όνομα και να ανακατευθύνει την κλήση δικτυακού αποστολέα σε άλλο κατάλογο.

Η δεύτερη ευπάθεια (CVE-2022-29800) σχετίζεται με μια κατάσταση αγώνα: Μεταξύ του ελέγχου των παραμέτρων του σεναρίου (που ανήκει στη ρίζα) και της εκτέλεσής του, μεσολάβησε ένα σύντομο χρονικό διάστημα, αρκετό για να αντικατασταθεί το αρχείο και να παραβλεφθεί ο έλεγχος του σεναρίου που ανήκει στη ρίζα. Επίσης, ο δικτυακός αποστολέας δεν έλεγξε συμβολικούς συνδέσμους, ακόμη και κατά την εκτέλεση σεναρίων μέσω της υποδιεργασίας. Η κλήση Popen, η οποία απλοποίησε σημαντικά την ενορχήστρωση επίθεσης.

Δημιουργείται ο κατάλογος "/tmp/nimbuspwn" και δημιουργείται ένας συμβολικός σύνδεσμος "/tmp/nimbuspwn/poc.d" που δείχνει προς τον κατάλογο "/sbin", ο οποίος χρησιμοποιείται για να περάσει ένας έλεγχος για εκτελέσιμα αρχεία που ανήκουν στον root.

Για εκτελέσιμα αρχεία "/sbin", δημιουργούνται αρχεία με το ίδιο όνομα στον κατάλογο "/tmp/nimbuspwn", για παράδειγμα, για το αρχείο "/sbin/vgs", δημιουργείται ένα εκτελέσιμο αρχείο "/tmp/nimbuspwn/ vgs" , που ανήκει σε χρήστη χωρίς δικαιώματα, στον οποίο τοποθετείται ο κώδικας που θέλει να εκτελέσει ο εισβολέας.

Ένα σήμα D-Bus αποστέλλεται στη διεργασία αποστολέα δικτύου με το OperationalState να έχει οριστεί σε "../../../tmp/nimbuspwn/poc". Για να στείλετε ένα σήμα στον χώρο ονομάτων "org.freedesktop.network1", χρησιμοποιήσατε τη δυνατότητα σύνδεσης των ελεγκτών σας στο systemd-networkd, για παράδειγμα, με χειρισμούς gpgv ή epmd ή μπορείτε να χρησιμοποιήσετε το γεγονός ότι το systemd-networkd δεν είναι εκτελείται από προεπιλογή (για παράδειγμα, σε Linux mint).

Μόλις λάβει το σήμα, το Networkd-dispatcher δημιουργεί μια λίστα με εκτελέσιμα αρχεία που ανήκουν στον χρήστη root και είναι διαθέσιμα στον κατάλογο "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", που στην πραγματικότητα αναφέρεται στο "/sbin".

Μόλις ληφθεί η λίστα των αρχείων, αλλά το σενάριο δεν έχει ακόμη εκτελεστεί, ο συμβολικός σύνδεσμος ανακατευθύνεται από το "/tmp/nimbuspwn/poc.d" στο "/tmp/nimbuspwn" και το networkd-dispatcher θα εκτελεστεί ως ρίζα. σενάριο που τοποθετήθηκε από τον εισβολέα.

το πρόβλημα διορθώθηκε στην έκδοση δικτυακού αποστολέα 2.2, αν και δεν υπάρχουν πληροφορίες σχετικά με την έκδοση ενημερώσεων ανά διανομές.

Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.