Release av Bubblewrap 0.6, ett lager för att skapa isolerade miljöer

Utgivningen av verktyg för att organisera arbetet i isolerade miljöer Bubblewrap 0.6 är tillgänglig, vanligtvis används för att begränsa enskilda applikationer av oprivilegierade användare. I praktiken används Bubblewrap av Flatpak-projektet som ett lager för att isolera applikationer som lanseras från paket. Projektkoden är skriven i C och distribueras under LGPLv2+-licensen.

För isolering används traditionell Linux-containervirtualiseringsteknik, baserad på användningen av cgroups, namespaces, Seccomp och SELinux. För att utföra privilegierade operationer för att konfigurera en behållare, startas Bubblewrap med roträttigheter (en körbar fil med en suid-flagga) och återställer sedan privilegier efter att behållaren har initierats.

Aktivering av användarnamnutrymmen i namnområdessystemet, som låter dig använda din egen separata uppsättning identifierare i behållare, krävs inte för drift, eftersom det inte fungerar som standard i många distributioner (Bubblewrap är placerad som en begränsad suid-implementering av en underuppsättning av funktioner för användarnamnutrymmen - för att utesluta alla användar- och processidentifierare från miljön, förutom den nuvarande, används lägena CLONE_NEWUSER och CLONE_NEWPID). För ytterligare skydd startas program som körs under Bubblewrap i PR_SET_NO_NEW_PRIVS-läget, vilket förbjuder förvärv av nya privilegier, till exempel om setuid-flaggan är närvarande.

Isolering på filsystemnivå åstadkoms genom att skapa ett nytt monteringsnamnområde som standard, där en tom rotpartition skapas med tmpfs. Vid behov kopplas externa FS-partitioner till denna partition i "mount —bind"-läget (till exempel när den startas med alternativet "bwrap —ro-bind /usr /usr", vidarebefordras /usr-partitionen från huvudsystemet i skrivskyddat läge). Nätverkskapaciteten är begränsad till åtkomst till loopback-gränssnittet med nätverksstackisolering via flaggorna CLONE_NEWNET och CLONE_NEWUTS.

Den viktigaste skillnaden från det liknande Firejail-projektet, som också använder setuid-lanseringsmodellen, är att i Bubblewrap innehåller lagret för att skapa behållare endast den nödvändiga minimikapaciteten och alla avancerade funktioner som krävs för att köra grafiska applikationer, interagera med skrivbordet och filtreringsförfrågningar till Pulseaudio, överförs till Flatpak-sidan och exekveras efter att privilegierna har återställts. Firejail, å andra sidan, kombinerar alla relaterade funktioner i en körbar fil, vilket gör det svårt att granska och upprätthålla säkerheten på rätt nivå.

I den nya utgåvan:

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

Källa: opennet.ru

Lägg en kommentar