Κυκλοφορία του 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» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

Πηγή: opennet.ru

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