Udgivelse af Bubblewrap 0.6, et lag til at skabe isolerede miljøer

En udgivelse af værktøjer til at organisere arbejdet i isolerede miljøer Bubblewrap 0.6 er tilgængelig, som normalt bruges til at begrænse individuelle applikationer fra uprivilegerede brugere. I praksis bruges Bubblewrap af Flatpak-projektet som et lag til at isolere applikationer lanceret fra pakker. Projektkoden er skrevet i C og distribueres under LGPLv2+-licensen.

Til isolering anvendes traditionelle Linux-containervirtualiseringsteknologier baseret på brugen af ​​cgroups, namespaces, Seccomp og SELinux. For at udføre privilegerede handlinger for at konfigurere en container, startes Bubblewrap med root-rettigheder (en eksekverbar fil med et suid-flag) og nulstiller derefter privilegier, efter at containeren er initialiseret.

Aktivering af brugernavneområder i navnerumssystemet, som giver dig mulighed for at bruge dit eget separate sæt af identifikatorer i containere, er ikke påkrævet for drift, da det ikke fungerer som standard i mange distributioner (Bubblewrap er placeret som en begrænset suid-implementering af en undersæt af brugernavne-funktioner - for at udelukke alle bruger- og procesidentifikatorer fra miljøet, undtagen den nuværende, bruges tilstandene CLONE_NEWUSER og CLONE_NEWPID). For yderligere beskyttelse lanceres programmer, der udføres under Bubblewrap, i PR_SET_NO_NEW_PRIVS-tilstanden, som forbyder erhvervelse af nye privilegier, for eksempel hvis setuid-flaget er til stede.

Isolering på filsystemniveau opnås ved at oprette et nyt mount-navneområde som standard, hvor en tom rodpartition oprettes ved hjælp af tmpfs. Hvis det er nødvendigt, er eksterne FS-partitioner knyttet til denne partition i "mount —bind"-tilstand (for eksempel, når den startes med "bwrap —ro-bind /usr /usr", videresendes /usr-partitionen fra hovedsystemet i skrivebeskyttet tilstand). Netværkskapaciteter er begrænset til adgang til loopback-grænsefladen med netværksstackisolering via flagene CLONE_NEWNET og CLONE_NEWUTS.

Den vigtigste forskel fra det lignende Firejail-projekt, som også bruger setuid-lanceringsmodellen, er, at i Bubblewrap indeholder containeroprettelseslaget kun de nødvendige minimumsfunktioner og alle de avancerede funktioner, der er nødvendige for at køre grafiske applikationer, interagere med skrivebordet og filtreringsanmodninger til Pulseaudio, overført til Flatpak-siden og udført efter at privilegierne er blevet nulstillet. Firejail på den anden side kombinerer alle de relaterede funktioner i én eksekverbar fil, hvilket gør det vanskeligt at revidere og vedligeholde sikkerheden på det rigtige niveau.

I den nye udgivelse:

  • Tilføjet understøttelse af Meson-montagesystemet. Support til bygning med Autotools er blevet bibeholdt indtil videre, men vil blive fjernet i en fremtidig udgivelse.
  • Implementeret "--add-seccomp" mulighed for at tilføje mere end ét seccomp program. Tilføjet en advarsel om, at hvis du angiver "--seccomp"-indstillingen igen, vil kun den sidste parameter blive anvendt.
  • Mastergrenen i git-lageret er blevet omdøbt til main.
  • Tilføjet delvis understøttelse af REUSE-specifikationen, som forener processen med at specificere licens- og copyrightoplysninger. Mange kodefiler har tilføjet SPDX-License-Identifier-headers. At følge REUSE-retningslinjerne gør det nemmere automatisk at bestemme, hvilken licens der gælder for hvilke dele af applikationskoden.
  • Tilføjet kontrol af værdien af ​​kommandolinjeargumenttælleren (argc) og implementeret en nødudgang, hvis tælleren er nul. Ændringen hjælper med at blokere sikkerhedsproblemer forårsaget af forkert håndtering af beståede kommandolinjeargumenter, såsom CVE-2021-4034 i Polkit.

Kilde: opennet.ru

Tilføj en kommentar