Lansarea Bubblewrap 0.6, un strat pentru crearea de medii izolate

Este disponibilă o versiune de instrumente pentru organizarea muncii în medii izolate Bubblewrap 0.6, folosită de obicei pentru a restricționa aplicațiile individuale ale utilizatorilor neprivilegiati. În practică, Bubblewrap este folosit de proiectul Flatpak ca strat pentru a izola aplicațiile lansate din pachete. Codul proiectului este scris în C și este distribuit sub licența LGPLv2+.

Pentru izolare, se folosesc tehnologii tradiționale de virtualizare a containerelor Linux, bazate pe utilizarea cgroups, namespaces, Seccomp și SELinux. Pentru a efectua operațiuni privilegiate pentru a configura un container, Bubblewrap este lansat cu drepturi de rădăcină (un fișier executabil cu un steag suid) și apoi resetează privilegiile după inițializarea containerului.

Activarea spațiilor de nume de utilizator în sistemul de spații de nume, care vă permite să utilizați propriul set separat de identificatori în containere, nu este necesară pentru funcționare, deoarece nu funcționează implicit în multe distribuții (Bubblewrap este poziționat ca o implementare limitată a unui subsetul de capacități de spații de nume de utilizator - pentru a exclude toți identificatorii de utilizator și de proces din mediu, cu excepția celui actual, se folosesc modurile CLONE_NEWUSER și CLONE_NEWPID). Pentru protecție suplimentară, programele executate sub Bubblewrap sunt lansate în modul PR_SET_NO_NEW_PRIVS, care interzice achiziția de noi privilegii, de exemplu, dacă este prezent steag-ul setuid.

Izolarea la nivel de sistem de fișiere este realizată prin crearea unui nou spațiu de nume de montare în mod implicit, în care o partiție rădăcină goală este creată folosind tmpfs. Dacă este necesar, partițiile externe FS sunt atașate acestei partiții în modul „mount —bind” (de exemplu, când sunt lansate cu opțiunea „bwrap —ro-bind /usr /usr”, partiția /usr este redirecționată de la sistemul principal în modul numai citire). Capacitățile rețelei sunt limitate la accesul la interfața de loopback cu izolarea stivei de rețea prin semnalizatoarele CLONE_NEWNET și CLONE_NEWUTS.

Diferența cheie față de proiectul similar Firejail, care folosește și modelul de lansare setuid, este că în Bubblewrap stratul de creare a containerului include doar capacitățile minime necesare și toate funcțiile avansate necesare pentru rularea aplicațiilor grafice, interacțiunea cu desktopul și filtrarea cererilor. la Pulseaudio, transferat în partea Flatpak și executat după ce privilegiile au fost resetate. Firejail, pe de altă parte, combină toate funcțiile aferente într-un singur fișier executabil, ceea ce face dificilă auditarea și menținerea securității la nivelul corespunzător.

În noua versiune:

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

Sursa: opennet.ru

Adauga un comentariu