Μια νέα ευπάθεια ανακαλύφθηκε στο Systemd

systemd

Βρέθηκε μια ευπάθεια στο systemd η οποία περιγράφεται ήδη στο (CVE-2019-6454), τι επιτρέπει τον αποκλεισμό της διαδικασίας προετοιμασίας ελέγχου (PID1) στέλνοντας ένα ειδικά διαμορφωμένο μήνυμα σε έναν μη προνομιούχο χρήστη μέσω του D-Bus.

Ο Οι προγραμματιστές της Red Hat επίσης δεν αποκλείουν τη δυνατότητα χρήσης της ευπάθειας για την οργάνωση της εκτέλεσης κώδικα με δικαιώματα root., αλλά η τελική πιθανότητα μιας τέτοιας επίθεσης δεν έχει ακόμη καθοριστεί.

Σχετικά με το systemd

Για όσους δεν γνωρίζουν το Systemd Μπορώ να σας πω ότι Αυτό είναι ένα σύστημα προετοιμασίας και διαχείρισης υπηρεσιών Linux που περιλαμβάνει λειτουργίες όπως εκκίνηση δαίμονα κατ' απαίτηση, συντήρηση αυτόματης προσάρτησης και σημείου προσάρτησης, υποστήριξη στιγμιότυπων και παρακολούθηση διεργασιών με χρήση ομάδων ελέγχου Linux.

Σύστημα παρέχει έναν δαίμονα μητρώου και άλλα εργαλεία και βοηθητικά προγράμματα για να σας βοηθήσει με κοινές εργασίες διαχείρισης συστήματος. Ο Lennart Poettering και ο Kay Sievers έγραψαν το SystemD, εμπνευσμένοι από το macOS που κυκλοφόρησε και το Upstart, με στόχο τη δημιουργία ενός σύγχρονου και δυναμικού συστήματος.

Συγκεκριμένα, το systemd παρέχει επιθετικές δυνατότητες παραλληλοποίησης και λογική ελέγχου υπηρεσιών που βασίζεται στην εξάρτηση, επιτρέποντας στις υπηρεσίες να ξεκινούν παράλληλα, οδηγώντας σε ταχύτερο χρόνο εκκίνησης. Αυτές οι δύο πτυχές ήταν παρούσες στο Upstart, αλλά βελτιώθηκαν από το systemd.

Το Systemd είναι το προεπιλεγμένο σύστημα εκκίνησης για μεγάλες διανομές Linux, αλλά είναι συμβατό με τα σενάρια εκκίνησης του SysV.

Το SysVinit είναι ένα σύστημα αρχικοποίησης που προηγείται του systemd και χρησιμοποιεί μια απλοποιημένη προσέγγιση για την εκκίνηση της υπηρεσίας. Το Systemd όχι μόνο διαχειρίζεται την προετοιμασία του συστήματος, αλλά παρέχει επίσης εναλλακτικές λύσεις σε άλλα γνωστά βοηθητικά προγράμματα όπως το cron και το syslog.

Σχετικά με τη νέα ευπάθεια του συστήματος

Με το χειρισμό του μεγέθους του μηνύματος που αποστέλλεται μέσω του D-Bus, ένας εισβολέας μπορεί να μετακινήσει τον δείκτη πέρα ​​από τα όρια της μνήμης που έχει εκχωρηθεί για τη στοίβα, παρακάμπτοντας την προστασία "stack guard-page", η οποία βασίζεται στην αντικατάσταση μιας σελίδας μνήμης στην άκρη που καλεί μια εξαίρεση (σφάλμα σελίδας).

Η επιτυχημένη επίθεση αποδεικνύεται στο Ubuntu 18.10 με systemd 239 και στο CentOS 7.6 με systemd 219.

Ως λύση, η έκδοση μπορεί να χρησιμοποιηθεί στο GCC με την επιλογή "-fstack-clash-protection", η οποία χρησιμοποιείται από προεπιλογή στο Fedora 28 και 29.

Θα πρέπει να σημειωθεί ότι το 2014 ο συγγραφέας της βιβλιοθήκης συστήματος MUSL επεσήμανε μεταξύ των κύριων αρχιτεκτονικών προβλημάτων τον υπερπληθωρισμό του συστήματος με τον χειριστή PID1 και αμφισβήτησε τη σκοπιμότητα εφαρμογής ενός ελεγκτή API Bus Link επιπέδου PID1, καθώς είναι ένας σοβαρός φορέας για επιθέσεις και μπορεί να επηρεάσει αρνητικά την αξιοπιστία ολόκληρου του συστήματος

Σύμφωνα με έναν ερευνητή ασφάλειας που αποκάλυψε μια ευπάθεια, μια αλλαγή του δείκτη στοίβας είναι δυνατή μόνο για σελίδες μνήμης που δεν χρησιμοποιούνται (μη εκχωρημένη), η οποία δεν επιτρέπει την εκτέλεση κώδικα σταδιακής σταδίου στο πλαίσιο της διαδικασίας PID1, αλλά επιτρέπει σε έναν εισβολέα να ξεκινήσει τη συντριβή PID1 με μια επακόλουθη μετάβαση του πυρήνα Linux στην κατάσταση "πανικού" (στην περίπτωση ενός ελεγκτή PID 1 σφάλμα, το πλήρες σύστημα είναι μπλοκαρισμένο).

Στο systemd, εγκαθίσταται ένας χειριστής σήματος που προσπαθεί να παγιδεύσει σφάλματα διεργασίας PID1 (σφάλμα τμηματοποίησης) και ξεκινά το κέλυφος για ανάκτηση.

Αλλά επειδή, κατά τη διάρκεια της επίθεσης, γίνεται κλήση σε μη διπλότυπες (μη εκχωρημένες) σελίδες μνήμης, ο πυρήνας δεν μπορεί να καλέσει αυτόν τον χειριστή σήματος και απλώς σκοτώνει τη διαδικασία με το PID 1, το οποίο, με τη σειρά του, είναι αδύνατο να συνεχίσει να λειτουργεί και να εισέλθει σε κατάσταση "πανικού", επομένως απαιτείται επανεκκίνηση του συστήματος.

Υπάρχει ήδη λύση για το πρόβλημα

Όπως όλα τα προβλήματα ασφαλείας που έχουν ήδη περιγραφεί και αναφερθεί, η δημοσίευσή του δεν μπορεί να γίνει μέχρι να επιλυθεί το πρόβλημα και Οι ενημερώσεις κώδικα ευπάθειας για το SUSE / openSUSE , το Fedora έχουν ήδη κυκλοφορήσει, επίσης για το Ubuntu και εν μέρει για το Debian (μόνο για το Debian Stretch).
Αν και το πρόβλημα παραμένει άλυτο στη RHEL.