Wydanie Bubblewrap 0.6, warstwy do tworzenia izolowanych środowisk

Dostępna jest wersja narzędzi do organizacji pracy izolowanych środowisk Bubblewrap 0.6, służących zwykle do ograniczania indywidualnych aplikacji nieuprzywilejowanych użytkowników. W praktyce Bubblewrap jest wykorzystywany w projekcie Flatpak jako warstwa izolująca aplikacje uruchamiane z pakietów. Kod projektu napisany jest w języku C i rozpowszechniany jest na licencji LGPLv2+.

Do izolacji wykorzystywane są tradycyjne linuksowe technologie wirtualizacji kontenerów, oparte na wykorzystaniu grup cgroup, przestrzeni nazw, Seccomp i SELinux. Aby wykonać uprzywilejowane operacje w celu skonfigurowania kontenera, Bubblewrap jest uruchamiany z uprawnieniami roota (plik wykonywalny z flagą suid), a następnie resetuje uprawnienia po zainicjowaniu kontenera.

Aktywacja przestrzeni nazw użytkowników w systemie przestrzeni nazw, co pozwala na użycie własnego, odrębnego zestawu identyfikatorów w kontenerach, nie jest wymagana do działania, ponieważ w wielu dystrybucjach domyślnie nie działa (Bubblewrap jest pozycjonowany jako ograniczona suid implementacja podzbiór możliwości przestrzeni nazw użytkowników - aby wykluczyć ze środowiska wszystkie identyfikatory użytkowników i procesów, z wyjątkiem bieżącego, stosowane są tryby CLONE_NEWUSER i CLONE_NEWPID). Dla dodatkowego zabezpieczenia programy wykonywane pod Bubblewrapem uruchamiane są w trybie PR_SET_NO_NEW_PRIVS, który zabrania nabywania nowych uprawnień np. w przypadku obecności flagi setuid.

Izolacja na poziomie systemu plików odbywa się domyślnie poprzez utworzenie nowej przestrzeni nazw montowania, w której tworzona jest pusta partycja główna za pomocą tmpfs. W razie potrzeby do tej partycji dołączane są zewnętrzne partycje FS w trybie „mount —bind” (np. przy uruchomieniu z opcją „bwrap —ro-bind /usr /usr” partycja /usr jest przekazywana z systemu głównego w trybie tylko do odczytu). Możliwości sieci są ograniczone do dostępu do interfejsu pętli zwrotnej z izolacją stosu sieciowego za pomocą flag CLONE_NEWNET i CLONE_NEWUTS.

Kluczową różnicą w stosunku do podobnego projektu Firejail, który również wykorzystuje model uruchamiania setuid, jest to, że w Bubblewrap warstwa tworzenia kontenera zawiera jedynie niezbędne minimalne możliwości oraz wszystkie zaawansowane funkcje niezbędne do uruchamiania aplikacji graficznych, interakcji z pulpitem i filtrowania żądań do Pulseaudio, przeniesiony na stronę Flatpak i wykonany po zresetowaniu uprawnień. Firejail natomiast łączy wszystkie powiązane funkcje w jednym pliku wykonywalnym, co utrudnia audyt i utrzymanie bezpieczeństwa na właściwym poziomie.

W nowym wydaniu:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

Źródło: opennet.ru

Dodaj komentarz