Udgivelsen af værktøjerne til organisering af arbejdet med isolerede miljøer Bubblewrap 0.6 er tilgængelig. Det bruges typisk til at begrænse enkelte applikationer fra ikke-privilegerede brugere. I praksis anvendes Bubblewrap af Flatpak-projektet som et lag til isolering af programmer, der køres fra pakker. Koden er skrevet i C og distribueres under LGPLv2+-licensen.
Isolationen bruger traditionelle container-virtualiseringsteknologier for Linux, baseret på cgroups, namespaces, Seccomp og SELinux. For at udføre privilegerede operationer til konfiguration af containeren startes Bubblewrap med root-rettigheder (eksekverbar fil med suid-flag) og får derefter nulstillet privilegierne efter afslutningen af containerens initialisering.
Aktivering af systemet med bruger-id namespaces, der tillader brug af et separat sæt identifikatorer i containerne, kræves ikke for at fungere, da det som standard ikke fungerer i mange distributioner (Bubblewrap positioneres som en begrænset suid-implementation af et subset af mulighederne fra bruger-id namespaces — for at udelukke alle bruger- og procesidentifikatorer fra miljøet, bortset fra den nuværende, anvendes CLONE_NEWUSER- og CLONE_NEWPID-tilstande). For ekstra beskyttelse køres programmer, der kører under Bubblewrap, i modus PR_SET_NO_NEW_PRIVS, der forhindrer modtagelse af nye privilegier, f.eks. når setuid-flaget er til stede.
Isolation på filsystemniveau foregår gennem oprettelsen af et nyt mount namespace som standard, hvor et tomt rodpartition oprettes ved hjælp af tmpfs. Eksterne filsystempartitioner kan tilsluttes denne partition efter behov i 'mount --bind'-tilstand (for eksempel ved opstart med muligheden 'bwrap --ro-bind /usr /usr', hvor /usr partitionen fra hovedsystemet videregives i skrivebeskyttet tilstand). Netværksmuligheder begrænses til adgang til loopback-interface med isolering af netværksstakken via flags CLONE_NEWNET og CLONE_NEWUTS.
Hovedforskellen fra det lignende projekt Firejail, som også bruger setuid-startmodel, er, at Bubblewrap-laget til oprettelse af containere kun inkluderer det nødvendige minimum af funktioner, mens alle udvidede funktioner, der er nødvendige for at køre grafiske applikationer, interagere med skrivebordet og filtrere anmodninger til Pulseaudio, er overført til Flatpak og udføres først efter nulstilling af privilegierne. Firejail kombinerer derimod alle tilknyttede funktioner i en eksekverbar fil, hvilket gør det sværere at revidere og opretholde sikkerheden på et passende niveau.
I den nye version:
- Støtten til build-systemet Meson er blevet tilføjet. Støtten til bygning med Autotools er stadig bevaret, men vil blive fjernet i en af de kommende udgivelser.
- Muligheden „—add-seccomp“ er blevet implementeret for at tilføje mere end ét seccomp-program. Der er tilføjet en advarsel om, at hvis optionen „—seccomp“ angives flere gange, vil kun den sidste parameter blive anvendt.
- Master-grenen i git-repositoriet er blevet omdøbt til main.
- Delvis support for REUSE-specifikationen er blevet tilføjet, hvilket standardiserer processen for angivelse af oplysninger om licenser og ophavsret. Mange kodefiler har fået tilføjet SPDX-License-Identifier-overskrifter. At følge REUSE-anbefalingerne muliggør en lettere automatisk identifikation af, hvilken licens der gælder for hvilke dele af applikationens kode.
- Der er tilføjet en kontrol af værdien af tælleren for kommandolinjeargumenter (argc), og der er implementeret en nødudgang, hvis tælleren er nul. Ændringen forhindrer sikkerhedsproblemer forårsaget af forkert behandling af de angivne kommandolinjeargumenter, såsom CVE-2021-4034 i Polkit.
Kilde: opennet.ru
