Utgivelse av Bubblewrap 0.6, et lag for å lage isolerte miljøer

En utgivelse av verktøy for å organisere arbeidet i isolerte miljøer Bubblewrap 0.6 er tilgjengelig, vanligvis brukt til å begrense individuelle applikasjoner til uprivilegerte brukere. I praksis brukes Bubblewrap av Flatpak-prosjektet som et lag for å isolere applikasjoner lansert fra pakker. Prosjektkoden er skrevet i C og distribueres under LGPLv2+-lisensen.

For isolasjon brukes tradisjonelle Linux-containervirtualiseringsteknologier, basert på bruk av cgroups, namespaces, Seccomp og SELinux. For å utføre privilegerte operasjoner for å konfigurere en beholder, startes Bubblewrap med rotrettigheter (en kjørbar fil med et suid-flagg) og tilbakestiller deretter privilegiene etter at beholderen er initialisert.

Aktivering av brukernavnerom i navneromssystemet, som lar deg bruke ditt eget separate sett med identifikatorer i containere, er ikke nødvendig for drift, siden det ikke fungerer som standard i mange distribusjoner (Bubblewrap er posisjonert som en begrenset suid-implementering av en undersett av funksjoner for brukernavneområder - for å ekskludere alle bruker- og prosessidentifikatorer fra miljøet, bortsett fra det gjeldende, CLONE_NEWUSER- og CLONE_NEWPID-modusene brukes). For ytterligere beskyttelse, startes programmer som kjøres under Bubblewrap i PR_SET_NO_NEW_PRIVS-modus, som forbyr anskaffelse av nye privilegier, for eksempel hvis setuid-flagget er til stede.

Isolering på filsystemnivå oppnås ved å opprette et nytt mount-navneområde som standard, der en tom rotpartisjon opprettes ved hjelp av tmpfs. Om nødvendig kobles eksterne FS-partisjoner til denne partisjonen i "mount —bind"-modus (for eksempel, når den startes med alternativet "bwrap —ro-bind /usr /usr", videresendes /usr-partisjonen fra hovedsystemet i skrivebeskyttet modus). Nettverksmuligheter er begrenset til tilgang til loopback-grensesnittet med nettverksstabelisolasjon via CLONE_NEWNET- og CLONE_NEWUTS-flaggene.

Den viktigste forskjellen fra det lignende Firejail-prosjektet, som også bruker setuid-lanseringsmodellen, er at i Bubblewrap inneholder containeropprettingslaget bare de nødvendige minimumsfunksjonene, og alle de avanserte funksjonene som er nødvendige for å kjøre grafiske applikasjoner, samhandle med skrivebordet og filtreringsforespørsler til Pulseaudio, overført til Flatpak-siden og utført etter at privilegiene er tilbakestilt. Firejail, på den annen side, kombinerer alle de relaterte funksjonene i én kjørbar fil, noe som gjør det vanskelig å revidere og opprettholde sikkerheten på riktig nivå.

I den nye utgivelsen:

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

Kilde: opennet.ru

Legg til en kommentar