Για απομόνωση, χρησιμοποιούνται παραδοσιακές τεχνολογίες εικονικοποίησης κοντέινερ 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.
Βασική διαφορά από ένα παρόμοιο έργο
Η νέα έκδοση είναι αξιοσημείωτη για την εφαρμογή υποστήριξης για τη σύνδεση υπαρχόντων χώρων ονομάτων χρήστη και χώρων ονομάτων επεξεργασίας pid. Για τον έλεγχο της σύνδεσης των χώρων ονομάτων, έχουν προστεθεί οι σημαίες "--userns", "--userns2" και "-pidns".
Αυτή η δυνατότητα δεν λειτουργεί σε λειτουργία setuid και απαιτεί τη χρήση ξεχωριστής λειτουργίας που μπορεί να λειτουργήσει χωρίς να αποκτήσετε δικαιώματα root, αλλά απαιτεί ενεργοποίηση
χώρους ονομάτων χρήστη στο σύστημα (απενεργοποιημένος από προεπιλογή στο Debian και στο RHEL/CentOS) και δεν αποκλείει τη δυνατότητα
Πηγή: opennet.ru