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

Διατίθεται μια έκδοση εργαλείων για την οργάνωση της εργασίας σε απομονωμένα περιβάλλοντα Bubblewrap 0.6, τα οποία συνήθως χρησιμοποιούνται για τον περιορισμό μεμονωμένων εφαρμογών μη προνομιούχων χρηστών. Στην πράξη, το 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.

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

Στη νέα έκδοση:

  • Προστέθηκε υποστήριξη για το σύστημα συναρμολόγησης Meson. Η υποστήριξη για δημιουργία με Autotools έχει διατηρηθεί προς το παρόν, αλλά θα καταργηθεί σε μελλοντική έκδοση.
  • Εφαρμόστηκε η επιλογή "--add-seccomp" για να προσθέσετε περισσότερα από ένα προγράμματα seccomp. Προστέθηκε μια προειδοποίηση ότι εάν καθορίσετε ξανά την επιλογή "--seccomp", θα εφαρμοστεί μόνο η τελευταία παράμετρος.
  • Ο κύριος κλάδος στο αποθετήριο git μετονομάστηκε σε main.
  • Προστέθηκε μερική υποστήριξη για την προδιαγραφή REUSE, η οποία ενοποιεί τη διαδικασία καθορισμού πληροφοριών άδειας χρήσης και πνευματικών δικαιωμάτων. Σε πολλά αρχεία κώδικα έχουν προστεθεί κεφαλίδες SPDX-License-Identifier. Η τήρηση των οδηγιών ΕΠΑΝΑΛΗΨΗΣ καθιστά ευκολότερο τον αυτόματο προσδιορισμό της άδειας χρήσης για ποια μέρη του κώδικα εφαρμογής.
  • Προστέθηκε ο έλεγχος της τιμής του μετρητή ορίσματος της γραμμής εντολών (argc) και εφαρμόστηκε μια έξοδος έκτακτης ανάγκης εάν ο μετρητής είναι μηδέν. Η αλλαγή βοηθά στον αποκλεισμό ζητημάτων ασφαλείας που προκαλούνται από εσφαλμένο χειρισμό ορισμάτων γραμμής εντολών που έχουν περάσει, όπως το CVE-2021-4034 στο Polkit.

Πηγή: opennet.ru

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