Ο Lennart Pottering παρουσίασε το run0, μια αντικατάσταση sudo ενσωματωμένη στο systemd

Ο Lennart Poettering παρουσίασε το βοηθητικό πρόγραμμα run0, το οποίο επιτρέπει την εκτέλεση διεργασιών με τις ταυτότητες άλλων χρηστών. Το νέο βοηθητικό πρόγραμμα τοποθετείται ως μια πιο ασφαλής αντικατάσταση του προγράμματος sudo, υλοποιείται ως πρόσθετο στην εντολή systemd-run και σας επιτρέπει να απαλλαγείτε από τη χρήση ενός εκτελέσιμου αρχείου με τη σημαία SUID. Το βοηθητικό πρόγραμμα run0 περιλαμβάνεται στην υποψήφια έκδοση systemd 256.

Σημειώνεται ότι η αλλαγή του αναγνωριστικού χρησιμοποιώντας τη σημαία SUID στο sudo συνοδεύεται από πρόσθετους κινδύνους που σχετίζονται με το γεγονός ότι μια διεργασία SUID κληρονομεί ένα περιβάλλον εκτέλεσης που περιλαμβάνει πολλές ιδιότητες που ελέγχονται από τον μη προνομιούχο χρήστη, όπως μεταβλητές περιβάλλοντος, περιγραφείς αρχείων, παραμέτρους χρονοπρογραμματιστή και συνδέσεις cgroup. Ορισμένες από αυτές τις ιδιότητες διαγράφονται αυτόματα για διεργασίες SUID από τον πυρήνα και ορισμένες από την ίδια την εφαρμογή. Ωστόσο, πολύπλοκα προγράμματα SUID όπως το sudo εξακολουθούν να παρουσιάζουν τακτικά ευπάθειες λόγω απρόσεκτου χειρισμού εξωτερικών δεδομένων που μπορούν να επηρεαστούν από έναν μη προνομιούχο χρήστη.

Στην run0, αντί να χρησιμοποιηθεί το SUID, υποβάλλεται ένα αίτημα στον διαχειριστή συστήματος για την εκκίνηση ενός κελύφους ή διεργασίας με το καθορισμένο αναγνωριστικό χρήστη, τη δημιουργία ενός νέου ψευδοτερματικού (PTY) και την αποστολή δεδομένων μεταξύ αυτού και του τρέχοντος τερματικού (TTY). Αυτή η συμπεριφορά θυμίζει περισσότερο την εκτέλεση μέσω ssh παρά την εκτέλεση μέσω του κλασικού sudo. Μια διεργασία με δικαιώματα εκτελείται σε ένα απομονωμένο περιβάλλον που δημιουργείται από τη διεργασία PID 1, όχι από τη διεργασία χρήστη, δηλαδή δεν κληρονομεί τις ιδιότητες του περιβάλλοντος του χρήστη, εκτός από την προώθηση της μεταβλητής περιβάλλοντος $TERM. Η προώθηση ελέγχεται μέσω μιας λίστας ρητά επιτρεπόμενων ιδιοτήτων, αντί να γίνεται προσπάθεια απαγόρευσης επικίνδυνων ιδιοτήτων (η έννοια της λευκής λίστας και όχι της μαύρης λίστας).

Το Polkit χρησιμοποιείται στο run0 για τον έλεγχο ταυτότητας και τον προσδιορισμό των δυνατοτήτων των χρηστών. Η κλασική γλώσσα περιγραφής κανόνων (/etc/sudoers) που χρησιμοποιείται από το sudo δεν υποστηρίζεται. Η λειτουργικότητα για την εκτέλεση προγραμμάτων με άλλα προνόμια είναι ενσωματωμένη στο systemd-run και η εντολή run0 δημιουργείται ως συμβολικός σύνδεσμος προς το systemd-run, το οποίο παρέχει μια διεπαφή γραμμής εντολών τύπου sudo όταν χρησιμοποιείται.

Μεταξύ των πρόσθετων χαρακτηριστικών του run0, μπορεί κανείς να δει την ένδειξη λειτουργίας με αυξημένα δικαιώματα ορίζοντας ένα κόκκινο φόντο στο τερματικό και προσθέτοντας μια κόκκινη κουκκίδα στον τίτλο του παραθύρου. Μετά τον τερματισμό της εκτέλεσης με άλλα δικαιώματα, η κουκκίδα εξαφανίζεται και το φόντο αλλάζει σε κανονικό. Επιπλέον, το run0 υποστηρίζει όλες τις επιλογές του "systemd-run", για παράδειγμα, την παράμετρο "--property", μέσω της οποίας μπορείτε να ορίσετε αυθαίρετες ρυθμίσεις για τις υπηρεσίες systemd (για παράδειγμα, "CPUWeight=200 MemoryMax=2G IPAccounting=yes").

Πηγή: opennet.ru

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