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:

  • Lagt til støtte for Meson-monteringssystemet. Støtte for bygging med Autotools har blitt beholdt inntil videre, men vil bli fjernet i en fremtidig utgivelse.
  • Implementert "--add-seccomp"-alternativet for å legge til mer enn ett seccomp-program. Lagt til en advarsel om at hvis du spesifiserer alternativet "--seccomp" igjen, vil bare den siste parameteren bli brukt.
  • Hovedgrenen i git-depotet har blitt omdøpt til hoved.
  • Lagt til delvis støtte for REUSE-spesifikasjonen, som forener prosessen med å spesifisere lisens- og opphavsrettsinformasjon. Mange kodefiler har SPDX-License-Identifier-hoder lagt til. Å følge REUSE-retningslinjene gjør det enklere å automatisk avgjøre hvilken lisens som gjelder for hvilke deler av applikasjonskoden.
  • Lagt til å sjekke verdien av kommandolinjeargumenttelleren (argc) og implementerte en nødutgang hvis telleren er null. Endringen hjelper til med å blokkere sikkerhetsproblemer forårsaket av feil håndtering av beståtte kommandolinjeargumenter, for eksempel CVE-2021-4034 i Polkit.

Kilde: opennet.ru

Legg til en kommentar