Κυκλοφορία του Bubblewrap 0.4.0, ενός στρώματος για τη δημιουργία απομονωμένων περιβαλλόντων

Διαθέσιμος νέα έκδοση της εργαλειοθήκης Bubblewrap 0.4.0, σχεδιασμένο να οργανώνει την εργασία απομονωμένων περιβαλλόντων στο Linux και να λειτουργεί σε επίπεδο εφαρμογών μη προνομιούχων χρηστών. Στην πράξη, το Bubblewrap χρησιμοποιείται από το έργο Flatpak ως στρώμα για την απομόνωση εφαρμογών που ξεκινούν από πακέτα. Ο κώδικας του έργου είναι γραμμένος σε C και διανέμονται από με άδεια χρήσης LGPLv2+.

Για απομόνωση, χρησιμοποιούνται παραδοσιακές τεχνολογίες εικονικοποίησης κοντέινερ Linux, που βασίζονται στη χρήση cgroups, namespaces, Seccomp και SELinux. Για να εκτελέσετε προνομιακές λειτουργίες για τη διαμόρφωση ενός κοντέινερ, το Bubblewrap εκκινείται με δικαιώματα ρίζας (ένα εκτελέσιμο αρχείο με σημαία suid) και στη συνέχεια επαναφέρει τα δικαιώματα μετά την προετοιμασία του κοντέινερ.

Η ενεργοποίηση των χώρων ονομάτων χρήστη στο σύστημα χώρου ονομάτων, το οποίο σας επιτρέπει να χρησιμοποιείτε το δικό σας ξεχωριστό σύνολο αναγνωριστικών σε κοντέινερ, δεν απαιτείται για τη λειτουργία, καθώς δεν λειτουργεί από προεπιλογή σε πολλές διανομές (το Bubblewrap τοποθετείται ως περιορισμένη αυτοτελής υλοποίηση ενός υποσύνολο δυνατοτήτων χώρων ονομάτων χρήστη - για τον αποκλεισμό όλων των αναγνωριστικών χρήστη και διεργασιών από το περιβάλλον, εκτός από το τρέχον, χρησιμοποιούνται οι λειτουργίες CLONE_NEWUSER και CLONE_NEWPID). Για πρόσθετη προστασία, εκτελέσιμο υπό έλεγχο
Τα προγράμματα Bubblewrap ξεκινούν σε λειτουργία PR_SET_NO_NEW_PRIVS, η οποία απαγορεύει τη λήψη νέων προνομίων, για παράδειγμα, εάν υπάρχει η σημαία setuid.

Η απομόνωση σε επίπεδο συστήματος αρχείων επιτυγχάνεται με τη δημιουργία ενός νέου χώρου ονομάτων προσάρτησης από προεπιλογή, στον οποίο δημιουργείται ένα κενό ριζικό διαμέρισμα χρησιμοποιώντας tmpfs. Εάν είναι απαραίτητο, εξωτερικά διαμερίσματα FS συνδέονται σε αυτό το διαμέρισμα στη λειτουργία "mount —bind" (για παράδειγμα, όταν εκκινείται με την επιλογή "bwrap —ro-bind /usr /usr", το διαμέρισμα /usr προωθείται από το κύριο σύστημα σε λειτουργία μόνο για ανάγνωση). Οι δυνατότητες δικτύου περιορίζονται στην πρόσβαση στη διεπαφή loopback με απομόνωση στοίβας δικτύου μέσω των σημαιών CLONE_NEWNET και CLONE_NEWUTS.

Βασική διαφορά από ένα παρόμοιο έργο πυροφυλάκιο, το οποίο χρησιμοποιεί επίσης ένα μοντέλο εκκίνησης setuid, είναι ότι στο Bubblewrap το επίπεδο δημιουργίας κοντέινερ περιλαμβάνει μόνο τις απαραίτητες ελάχιστες δυνατότητες και όλες οι προηγμένες λειτουργίες που απαιτούνται για την εκτέλεση γραφικών εφαρμογών, την αλληλεπίδραση με την επιφάνεια εργασίας και το φιλτράρισμα κλήσεων προς το Pulseaudio ανατίθενται σε εξωτερικούς συνεργάτες Flatpak και εκτελούνται μετά την επαναφορά των προνομίων. Το Firejail, από την άλλη πλευρά, συνδυάζει όλες τις σχετικές λειτουργίες σε ένα εκτελέσιμο αρχείο, γεγονός που καθιστά δύσκολο τον έλεγχο και τη διατήρηση της ασφάλειας στο κατάλληλο επίπεδο.

Η νέα έκδοση είναι αξιοσημείωτη για την εφαρμογή υποστήριξης για τη σύνδεση υπαρχόντων χώρων ονομάτων χρήστη και χώρων ονομάτων επεξεργασίας pid. Για τον έλεγχο της σύνδεσης των χώρων ονομάτων, έχουν προστεθεί οι σημαίες "--userns", "--userns2" και "-pidns".
Αυτή η δυνατότητα δεν λειτουργεί σε λειτουργία setuid και απαιτεί τη χρήση ξεχωριστής λειτουργίας που μπορεί να λειτουργήσει χωρίς να αποκτήσετε δικαιώματα root, αλλά απαιτεί ενεργοποίηση
χώρους ονομάτων χρήστη στο σύστημα (απενεργοποιημένος από προεπιλογή στο Debian και στο RHEL/CentOS) και δεν αποκλείει τη δυνατότητα εκμετάλλευση ενδεχομένως παραμένων τρωτά σημεία για το περιθώριο περιορισμών "Χώροι ονομάτων χρήστη". Οι νέες δυνατότητες του Bubblewrap 0.4 περιλαμβάνουν επίσης τη δυνατότητα δημιουργίας με τη βιβλιοθήκη musl C αντί για glibc και υποστήριξη για αποθήκευση πληροφοριών χώρου ονομάτων σε ένα αρχείο με στατιστικά στοιχεία σε μορφή JSON.

Πηγή: opennet.ru

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